protected function getStep( $step )
    {
        $store      = $this->getStore();
        $formSrv    = $this->getServiceLocator()
                           ->get( 'Form' );

        if ( $step == $this->startStep )
        {
            $form  = $formSrv->get( 'Grid\Paragraph\CreateWizard\Start' );
            $model = new StartStep( array(
                'textDomain' => 'paragraph',
            ) );
        }
        else
        {
            $store['type'] = $step;
            $form   = new Form;
            $create = $formSrv->get( 'Grid\Paragraph\Meta\Create' );
            $model  = new WizardStep( array(
                'textDomain'    => 'paragraph',
            ), array(
                'finish'        => true,
                'next'          => 'finish',
            ) );

            if ( $create->has( $step ) )
            {
                foreach ( $create->get( $step ) as $element )
                {
                    $form->add( $element );
                }
            }
            else
            {
                $edit = $formSrv->get( 'Grid\Paragraph\Meta\Edit' );

                if ( $edit->has( $step ) )
                {
                    foreach ( $edit->get( $step ) as $element )
                    {
                        $form->add( $element );
                    }
                }
                else
                {
                    $model->setOption( 'skip', true );
                }
            }
        }

        return $model->setStepForm( $form );
    }