protected function execute(InputInterface $input, OutputInterface $output)
    {
        if (!$input->isInteractive()) {
            $output->writeln('<error>This command only supports interactive execution</error>');

            return 1;
        }

        $this->writeSection('Installation');

        // Generate legacy siteaccess
        $legacySiteAccessGenerator = new LegacySiteAccessGenerator(
            $this->getContainer(),
            $this->questionHelper
        );

        $legacySiteAccessGenerator->generate($this->input, $this->output);

        // Generate configuration
        $configurationGenerator = new ConfigurationGenerator(
            $this->getContainer(),
            $this->questionHelper
        );

        $configurationGenerator->generate($this->input, $this->output);

        $errors = array();
        $runner = $this->getRunner($errors);

        // Generate legacy autoloads
        $runner($this->generateLegacyAutoloads());

        $this->writeInstallerSummary($errors);

        return 0;
    }