protected function createStep($step)
    {
        if ( ! $this->stepExist($step))
        {
            throw new \Exception("Step <comment>{$step}</comment> doesn't exist.");
        }

        $class = $this->steps[$step];
        $step  = new $class($this);

        if ( ! ($step instanceof AbstractStep))
        {
            throw new \Exception("Step class <comment>{$class}</comment> should be an instance of AbstractStep.");
        }

        return $step;
    }