protected function initBundleDirectoryStructure(InputInterface $input, OutputInterface $output)
    {
        // Bootstrap SS so we can use module listing
        $frameworkPath = $this->container->getParameter('behat.silverstripe_extension.framework_path');
        $_GET['flush'] = 1;
        require_once $frameworkPath . '/core/Core.php';
        unset($_GET['flush']);

        $featuresPath = $input->getArgument('features');
        if(!$featuresPath) {
            throw new \InvalidArgumentException('Please specify a module name (e.g. "@mymodule")');
        }

        // Can't use 'behat.paths.base' since that's locked at this point to base folder (not module)
        $pathSuffix   = $this->container->getParameter('behat.silverstripe_extension.context.path_suffix');
        $currentModuleName = null;
        $modules = \SS_ClassLoader::instance()->getManifest()->getModules();
        $currentModuleName = $this->container->getParameter('behat.silverstripe_extension.module');

        // get module from short notation if path starts from @
        if (preg_match('/^\@([^\/\\\\]+)(.*)$/', $featuresPath, $matches)) {
            $currentModuleName = $matches[1];
            // TODO Replace with proper module loader once AJShort's changes are merged into core
            if (!array_key_exists($currentModuleName, $modules)) {
                throw new \InvalidArgumentException(sprintf('Module "%s" not found', $currentModuleName));
            }
            $currentModulePath = $modules[$currentModuleName];
        } 

        if (!$currentModuleName) {
            throw new \InvalidArgumentException('Can not find module to initialize suite.');
        }

        // TODO Retrieve from module definition once that's implemented
        if($input->getOption('namespace')) {
            $namespace = $input->getOption('namespace');
        } else {
            $namespace = ucfirst($currentModuleName);
        }
        $namespace .= '\\' . $this->container->getParameter('behat.silverstripe_extension.context.namespace_suffix');

        $featuresPath = rtrim($currentModulePath.DIRECTORY_SEPARATOR.$pathSuffix,DIRECTORY_SEPARATOR);
        $basePath     = $this->container->getParameter('behat.paths.base').DIRECTORY_SEPARATOR;
        $bootstrapPath = $featuresPath.DIRECTORY_SEPARATOR.'bootstrap';
        $contextPath  = $bootstrapPath.DIRECTORY_SEPARATOR.'Context';

        if (!is_dir($featuresPath)) {
            mkdir($featuresPath, 0777, true);
            mkdir($bootstrapPath, 0777, true);
            // touch($bootstrapPath.DIRECTORY_SEPARATOR.'_manifest_exclude');
            $output->writeln(
                '<info>+d</info> ' .
                str_replace($basePath, '', realpath($featuresPath)) .
                ' <comment>- place your *.feature files here</comment>'
            );
        }

        if (!is_dir($contextPath)) {
            mkdir($contextPath, 0777, true);

            $className = $this->container->getParameter('behat.context.class');
            file_put_contents(
                $contextPath . DIRECTORY_SEPARATOR . $className . '.php',
                strtr($this->getFeatureContextSkelet(), array(
                    '%NAMESPACE%' => $namespace
                ))
            );

            $output->writeln(
                '<info>+f</info> ' .
                str_replace($basePath, '', realpath($contextPath)) . DIRECTORY_SEPARATOR .
                'FeatureContext.php <comment>- place your feature related code here</comment>'
            );
        }
    }