protected function initRequest( array $config )
    {
        if ( isset( $config[ 'request' ] ) )
        {
            if ( isset( $config[ 'request' ][ 'class' ] ) )
            {
                $this->bindShared( 'RawPHP\RawRequest\Contract\IRequest', function () use ( $config )
                {
                    $class = $config[ 'request' ][ 'class' ];

                    return new $class( $config[ 'request' ] );
                }
                );
            }
            else
            {
                $this->bindShared( 'RawPHP\RawRequest\Contract\IRequest', function () use ( $config )
                {
                    return new Request( $config[ 'request' ] );
                }
                );
            }
        }
        else
        {
            $this->bindShared( 'RawPHP\RawRequest\Contract\IRequest', function ()
            {
                $request = new Request();
                $request->init();

                return $request;
            }
            );
        }

        $this->alias( 'RawPHP\RawRequest\Contract\IRequest', 'request' );
    }