static public function instantiate(RequestHelper $requestHelper)
    {
        $objectHash = spl_object_hash($requestHelper);
        if(static::isSingleInstance()) {
            if(isset(static::$instances[$objectHash][static::getName()])) {
                return static::$instances[$objectHash][static::getName()];
            }
        }

        $instance = new static();
        $instance->requestHelper = $requestHelper;
        $instance->initialize();

        $requestHelper->getEventDispatcher()
            ->dispatch(
                RequestHelper::EVENT_NEW_HELPER,
                new RequestHelperEvent($requestHelper, array('helper' => $instance))
            );

        if(static::isSingleInstance()) {
            static::$instances[$objectHash][static::getName()] = $instance;
        }

        return $instance;
    }