public function shareInstance($instance, $reference = null)
    {

        if (!is_object($instance)) {
            //@TODO maybe throw an error?
            return false;
        }

        $concrete = get_class($instance);

        //if reference is difference from $concrete add Alias
        if (!empty($reference) && ($reference !== $concrete)) {
            $alias = $reference;
            $this->createAlias($concrete, $alias);
        }

        //just save the instance in container, no need for lambdas;
        return $this->container[$concrete] = $instance;
    }