diff --git a/metatag.services.yml b/metatag.services.yml
index b13dfc3..28b82c6 100644
--- a/metatag.services.yml
+++ b/metatag.services.yml
@@ -15,13 +15,26 @@ services:
     class: Drupal\metatag\MetatagManager
     arguments: ['@plugin.manager.metatag.group', '@plugin.manager.metatag.tag', '@metatag.token', '@logger.factory']
 
-# These will be reactivated once Console finishes refactoring the generators.
-# @see https://www.drupal.org/node/2786795
-#  metatag_generate_group:
-#    class: Drupal\metatag\Command\GenerateGroupCommand
-#    tags:
-#      - { name: console.command }
-#  metatag_generate_tag:
-#    class: Drupal\metatag\Command\GenerateTagCommand
-#    tags:
-#      - { name: console.command }
+  metatag.generate_tag:
+    class: Drupal\metatag\Command\GenerateTagCommand
+    arguments: ['@metatag.manager', '@metatag.tag_generator', '@?console.extension_manager', '@?console.string_converter','@?console.chain_queue']
+    tags:
+      - { name: drupal.command }
+
+  metatag.generate_group:
+    class: Drupal\metatag\Command\GenerateGroupCommand
+    arguments: ['@metatag.group_generator', '@?console.extension_manager', '@?console.chain_queue']
+    tags:
+      - { name: drupal.command }
+
+  metatag.tag_generator:
+    class: Drupal\metatag\Generator\MetatagTagGenerator
+    arguments: ['@?console.extension_manager', '@?console.renderer']
+    tags:
+      - { name: drupal.generator }
+
+  metatag.group_generator:
+      class: Drupal\metatag\Generator\MetatagGroupGenerator
+      arguments: ['@?console.extension_manager', '@?console.renderer']
+      tags:
+        - { name: drupal.generator }
diff --git a/src/Command/GenerateGroupCommand.php b/src/Command/GenerateGroupCommand.php
index c7326b4..44a06c0 100644
--- a/src/Command/GenerateGroupCommand.php
+++ b/src/Command/GenerateGroupCommand.php
@@ -9,13 +9,15 @@ namespace Drupal\metatag\Command;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
-use Drupal\Console\Command\GeneratorCommand;
-use Drupal\Console\Command\Shared\ContainerAwareCommandTrait;
+use Symfony\Component\Console\Command\Command;
+use Drupal\Console\Command\Shared\CommandTrait;
 use Drupal\Console\Command\Shared\ModuleTrait;
 use Drupal\Console\Command\Shared\FormTrait;
 use Drupal\Console\Command\Shared\ConfirmationTrait;
 use Drupal\Console\Style\DrupalStyle;
 use Drupal\metatag\Generator\MetatagGroupGenerator;
+use Drupal\Console\Extension\Manager;
+use Drupal\Console\Utils\ChainQueue;
 
 /**
  * Class GenerateGroupCommand.
@@ -24,14 +26,45 @@ use Drupal\metatag\Generator\MetatagGroupGenerator;
  *
  * @package Drupal\metatag
  */
-class GenerateGroupCommand extends GeneratorCommand {
+class GenerateGroupCommand extends Command {
 
-  use ContainerAwareCommandTrait;
+  use CommandTrait;
   use ModuleTrait;
   use FormTrait;
   use ConfirmationTrait;
 
   /**
+   * @var MetatagGroupGenerator
+   */
+  protected $generator;
+
+  /** @var Manager  */
+  protected $extensionManager;
+
+  /**
+   * @var ChainQueue
+   */
+  protected $chainQueue;
+
+  /**
+   * GenerateTagCommand constructor.
+   * @param MetatagTagGenerator $generator
+   * @param Manager $extensionManager
+   * @param ChainQueue $chainQueue
+   */
+  public function __construct(
+      MetatagGroupGenerator $generator,
+      Manager $extensionManager,
+      ChainQueue $chainQueue
+  ){
+    $this->generator = $generator;
+    $this->extensionManager = $extensionManager;
+    $this->chainQueue = $chainQueue;
+
+    parent::__construct();
+  }
+
+  /**
    * {@inheritdoc}
    */
   protected function configure() {
@@ -74,22 +107,23 @@ class GenerateGroupCommand extends GeneratorCommand {
     $class_name = $input->getOption('class-name');
     $weight = $input->getOption('weight');
 
-    $this
-      ->getGenerator()
-      ->generate($base_class, $module, $label, $description, $plugin_id, $class_name, $weight);
+    $this->generator
+        ->generate($base_class, $module, $label, $description, $plugin_id, $class_name, $weight);
 
-    $this->getHelper('chain')->addCommand('cache:rebuild', ['cache' => 'discovery']);
+    $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'discovery']);
   }
 
   /**
    * {@inheritdoc}
    */
   protected function interact(InputInterface $input, OutputInterface $output) {
+    $io = new DrupalStyle($input, $output);
+
     // --base_class option.
     // @todo Turn this into a choice() option.
     $base_class = $input->getOption('base_class');
     if (empty($base_class)) {
-      $base_class = $output->ask(
+      $base_class = $io->ask(
         $this->trans('commands.generate.metatag.group.questions.base_class'),
         'GroupBase'
       );
@@ -100,14 +134,14 @@ class GenerateGroupCommand extends GeneratorCommand {
     $module = $input->getOption('module');
     if (empty($module)) {
       // @see Drupal\AppConsole\Command\Helper\ModuleTrait::moduleQuestion
-      $module = $this->moduleQuestion($output);
+      $module = $this->moduleQuestion($io);
     }
     $input->setOption('module', $module);
 
     // --label option.
     $label = $input->getOption('label');
     if (empty($label)) {
-      $label = $output->ask(
+      $label = $io->ask(
         $this->trans('commands.generate.metatag.group.questions.label')
       );
     }
@@ -116,7 +150,7 @@ class GenerateGroupCommand extends GeneratorCommand {
     // --description option.
     $description = $input->getOption('description');
     if (empty($description)) {
-      $description = $output->ask(
+      $description = $io->ask(
         $this->trans('commands.generate.metatag.group.questions.description')
       );
     }
@@ -125,7 +159,7 @@ class GenerateGroupCommand extends GeneratorCommand {
     // --plugin-id option.
     $plugin_id = $input->getOption('plugin-id');
     if (empty($plugin_id)) {
-      $plugin_id = $output->ask(
+      $plugin_id = $io->ask(
         $this->trans('commands.generate.metatag.group.questions.plugin_id')
       );
     }
@@ -134,7 +168,7 @@ class GenerateGroupCommand extends GeneratorCommand {
     // --class-name option.
     $class_name = $input->getOption('class-name');
     if (empty($class_name)) {
-      $class_name = $output->ask(
+      $class_name = $io->ask(
         $this->trans('commands.generate.metatag.group.questions.class_name')
       );
     }
@@ -145,19 +179,11 @@ class GenerateGroupCommand extends GeneratorCommand {
     //   group.
     $weight = $input->getOption('weight');
     if (is_null($weight)) {
-      $weight = $output->ask(
+      $weight = $io->ask(
         $this->trans('commands.generate.metatag.group.questions.weight'),
         0
       );
     }
     $input->setOption('weight', $weight);
   }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function createGenerator() {
-    return new MetatagGroupGenerator();
-  }
-
 }
diff --git a/src/Command/GenerateTagCommand.php b/src/Command/GenerateTagCommand.php
index 1f8e9ab..2033eea 100644
--- a/src/Command/GenerateTagCommand.php
+++ b/src/Command/GenerateTagCommand.php
@@ -7,15 +7,19 @@
 namespace Drupal\metatag\Command;
 
 use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
-use Drupal\Console\Command\GeneratorCommand;
-use Drupal\Console\Command\Shared\ContainerAwareCommandTrait;
+use Symfony\Component\Console\Command\Command;
+use Drupal\Console\Command\Shared\CommandTrait;
+use Drupal\Console\Style\DrupalStyle;
+use Drupal\metatag\MetatagManager;
+use Drupal\metatag\Generator\MetatagTagGenerator;
 use Drupal\Console\Command\Shared\ModuleTrait;
 use Drupal\Console\Command\Shared\FormTrait;
 use Drupal\Console\Command\Shared\ConfirmationTrait;
-use Drupal\Console\Style\DrupalStyle;
-use Drupal\metatag\Generator\MetatagTagGenerator;
+use Symfony\Component\Console\Input\InputOption;
+use Drupal\Console\Extension\Manager;
+use Drupal\Console\Utils\StringConverter;
+use Drupal\Console\Utils\ChainQueue;
 
 /**
  * Class GenerateTagCommand.
@@ -24,20 +28,58 @@ use Drupal\metatag\Generator\MetatagTagGenerator;
  *
  * @package Drupal\metatag
  */
-class GenerateTagCommand extends GeneratorCommand {
+class GenerateTagCommand extends Command {
 
-  use ContainerAwareCommandTrait;
+  use CommandTrait;
   use ModuleTrait;
   use FormTrait;
   use ConfirmationTrait;
 
   /**
-   * {@inheritdoc}
+   * @var MetatagManager
+   */
+  protected $metatagManager;
+
+  /**
+   * @var MetatagTagGenerator
+   */
+  protected $generator;
+
+  /** @var Manager  */
+  protected $extensionManager;
+
+  /**
+   * @var StringConverter
+   */
+  protected $stringConverter;
+
+  /**
+   * @var ChainQueue
    */
-  public function __construct($translator) {
-    parent::__construct($translator);
+  protected $chainQueue;
 
-    $this->metatagManager = \Drupal::service('metatag.manager');
+  /**
+   * GenerateTagCommand constructor.
+   * @param MetatagManager $metatagManager
+   * @param MetatagTagGenerator $generator
+   * @param Manager $extensionManager
+   * @param StringConverter $stringConverter
+   * @param ChainQueue $chainQueue
+   */
+  public function __construct(
+      MetatagManager $metatagManager,
+      MetatagTagGenerator $generator,
+      Manager $extensionManager,
+      StringConverter $stringConverter,
+      ChainQueue $chainQueue
+    ){
+    $this->metatagManager = $metatagManager;
+    $this->generator = $generator;
+    $this->extensionManager = $extensionManager;
+    $this->stringConverter = $stringConverter;
+    $this->chainQueue = $chainQueue;
+
+    parent::__construct();
   }
 
   /**
@@ -99,17 +141,19 @@ class GenerateTagCommand extends GeneratorCommand {
     $secure = $input->getOption('secure');
     $multiple = $input->getOption('multiple');
 
-    $this
-      ->getGenerator()
+    $this->generator
       ->generate($base_class, $module, $name, $label, $description, $plugin_id, $class_name, $group, $weight, $type, $secure, $multiple);
 
-    $this->getHelper('chain')->addCommand('cache:rebuild', ['cache' => 'discovery']);
+    $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'discovery']);
   }
 
   /**
    * {@inheritdoc}
    */
   protected function interact(InputInterface $input, OutputInterface $output) {
+
+    $io = new DrupalStyle($input, $output);
+
     $boolean_options = [
       'FALSE',
       'TRUE',
@@ -128,7 +172,7 @@ class GenerateTagCommand extends GeneratorCommand {
     // @todo Turn this into a choice() option.
     $base_class = $input->getOption('base_class');
     if (empty($base_class)) {
-      $base_class = $output->ask(
+      $base_class = $io->ask(
         $this->trans('commands.generate.metatag.tag.questions.base_class'),
         'MetaNameBase'
       );
@@ -139,7 +183,7 @@ class GenerateTagCommand extends GeneratorCommand {
     $module = $input->getOption('module');
     if (empty($module)) {
       // @see Drupal\AppConsole\Command\Helper\ModuleTrait::moduleQuestion
-      $module = $this->moduleQuestion($output);
+      $module = $this->moduleQuestion($io);
     }
     $input->setOption('module', $module);
 
@@ -147,7 +191,7 @@ class GenerateTagCommand extends GeneratorCommand {
     // @todo Add validation.
     $name = $input->getOption('name');
     if (empty($name)) {
-      $name = $output->ask(
+      $name = $io->ask(
         $this->trans('commands.generate.metatag.tag.questions.name')
       );
     }
@@ -156,7 +200,7 @@ class GenerateTagCommand extends GeneratorCommand {
     // --label option.
     $label = $input->getOption('label');
     if (empty($label)) {
-      $label = $output->ask(
+      $label = $io->ask(
         $this->trans('commands.generate.metatag.tag.questions.label'),
         $name
       );
@@ -166,7 +210,7 @@ class GenerateTagCommand extends GeneratorCommand {
     // --description option.
     $description = $input->getOption('description');
     if (empty($description)) {
-      $description = $output->ask(
+      $description = $io->ask(
         $this->trans('commands.generate.metatag.tag.questions.description')
       );
     }
@@ -176,7 +220,7 @@ class GenerateTagCommand extends GeneratorCommand {
     $plugin_id = $input->getOption('plugin-id');
     if (empty($plugin_id)) {
       $plugin_id = $this->nameToPluginId($name);
-      $plugin_id = $output->ask(
+      $plugin_id = $io->ask(
         $this->trans('commands.generate.metatag.tag.questions.plugin_id'),
         $plugin_id
       );
@@ -187,7 +231,7 @@ class GenerateTagCommand extends GeneratorCommand {
     $class_name = $input->getOption('class-name');
     if (empty($class_name)) {
       $class_name = $this->nameToClassName($name);
-      $class_name = $output->ask(
+      $class_name = $io->ask(
         $this->trans('commands.generate.metatag.tag.questions.class_name'),
         $class_name
       );
@@ -198,7 +242,7 @@ class GenerateTagCommand extends GeneratorCommand {
     $group = $input->getOption('group');
     if (empty($group)) {
       $groups = $this->getGroups();
-      $group = $output->choice(
+      $group = $io->choice(
         $this->trans('commands.generate.metatag.tag.questions.group'),
         $groups
       );
@@ -210,7 +254,7 @@ class GenerateTagCommand extends GeneratorCommand {
     //   group.
     $weight = $input->getOption('weight');
     if (is_null($weight)) {
-      $weight = $output->ask(
+      $weight = $io->ask(
         $this->trans('commands.generate.metatag.tag.questions.weight'),
         0
       );
@@ -221,7 +265,7 @@ class GenerateTagCommand extends GeneratorCommand {
     // @todo Turn this into an option.
     $type = $input->getOption('type');
     if (is_null($type)) {
-      $type = $output->choice(
+      $type = $io->choice(
         $this->trans('commands.generate.metatag.tag.questions.type'),
         $type_options,
         0
@@ -233,7 +277,7 @@ class GenerateTagCommand extends GeneratorCommand {
     // @todo Turn this into an option.
     $secure = $input->getOption('secure');
     if (is_null($secure)) {
-      $secure = $output->choice(
+      $secure = $io->choice(
         $this->trans('commands.generate.metatag.tag.questions.secure'),
         $boolean_options,
         0
@@ -244,7 +288,7 @@ class GenerateTagCommand extends GeneratorCommand {
     // --multiple option.
     $multiple = $input->getOption('multiple');
     if (is_null($multiple)) {
-      $multiple = $output->choice(
+      $multiple = $io->choice(
         $this->trans('commands.generate.metatag.tag.questions.multiple'),
         $boolean_options,
         0
@@ -254,13 +298,6 @@ class GenerateTagCommand extends GeneratorCommand {
   }
 
   /**
-   * {@inheritdoc}
-   */
-  protected function createGenerator() {
-    return new MetatagTagGenerator();
-  }
-
-  /**
    * Convert the meta tag's name to a plugin ID.
    *
    * @param string $name
@@ -271,9 +308,7 @@ class GenerateTagCommand extends GeneratorCommand {
    *   underline chars.
    */
   private function nameToPluginId($name) {
-    $string_utils = $this->getStringHelper();
-
-    return $string_utils->createMachineName($name);
+    return $this->stringConverter->createMachineName($name);
   }
 
   /**
@@ -287,13 +322,7 @@ class GenerateTagCommand extends GeneratorCommand {
    *   converted to CamelCase.
    */
   private function nameToClassName($name) {
-    $string_utils = $this->getStringHelper();
-
-    // Convert some characters to spaces so that each portion of the string can
-    // then be considered separate words and collapsed together nicely by the
-    // humanToCamelCase() method.
-    $name = preg_replace($string_utils::REGEX_MACHINE_NAME_CHARS, ' ', $name);
-    return $string_utils->humanToCamelCase($name);
+    return $this->stringConverter->humanToCamelCase($name);
   }
 
   /**
diff --git a/src/Generator/MetatagGroupGenerator.php b/src/Generator/MetatagGroupGenerator.php
index ae38dde..10373ca 100644
--- a/src/Generator/MetatagGroupGenerator.php
+++ b/src/Generator/MetatagGroupGenerator.php
@@ -3,9 +3,33 @@
 namespace Drupal\metatag\Generator;
 
 use Drupal\Console\Generator\Generator;
+use Drupal\Console\Extension\Manager;
+use Drupal\Console\Utils\TwigRenderer;
 
 class MetatagGroupGenerator extends Generator {
 
+  /** @var Manager  */
+  protected $extensionManager;
+
+  /**
+   * @var TwigRenderer
+   */
+  protected $render;
+
+  /**
+   * MetatagGroupGenerator constructor.
+   * @param Manager $extensionManager
+   */
+  public function __construct(
+      Manager $extensionManager,
+      TwigRenderer $render
+  ){
+    $this->extensionManager = $extensionManager;
+
+    $render->addSkeletonDir(__DIR__ . '/../../templates/');
+    $this->setRenderer($render);
+  }
+
   /**
    * Generator plugin.
    *
@@ -31,7 +55,7 @@ class MetatagGroupGenerator extends Generator {
 
     $this->renderFile(
       'group.php.twig',
-      $this->getSite()->getPluginPath($module, 'metatag/Group') . '/' . $class_name . '.php',
+        $this->extensionManager->getPluginPath($module, 'metatag/Group') . '/' . $class_name . '.php',
       $parameters
     );
   }
diff --git a/src/Generator/MetatagTagGenerator.php b/src/Generator/MetatagTagGenerator.php
index 3769dd6..69c285d 100644
--- a/src/Generator/MetatagTagGenerator.php
+++ b/src/Generator/MetatagTagGenerator.php
@@ -3,9 +3,33 @@
 namespace Drupal\metatag\Generator;
 
 use Drupal\Console\Generator\Generator;
+use Drupal\Console\Extension\Manager;
+use Drupal\Console\Utils\TwigRenderer;
 
 class MetatagTagGenerator extends Generator {
 
+  /** @var Manager  */
+  protected $extensionManager;
+
+  /**
+   * @var TwigRenderer
+   */
+  protected $render;
+
+  /**
+   * MetatagTagGenerator constructor.
+   * @param Manager $extensionManager
+   */
+  public function __construct(
+      Manager $extensionManager,
+      TwigRenderer $render
+  ){
+    $this->extensionManager = $extensionManager;
+
+    $render->addSkeletonDir(__DIR__ . '/../../templates/');
+    $this->setRenderer($render);
+  }
+
   /**
    * Generator plugin.
    *
@@ -41,13 +65,13 @@ class MetatagTagGenerator extends Generator {
 
     $this->renderFile(
       'tag.php.twig',
-      $this->getSite()->getPluginPath($module, 'metatag/Tag') . '/' . $class_name . '.php',
+        $this->extensionManager->getPluginPath($module, 'metatag/Tag') . '/' . $class_name . '.php',
       $parameters
     );
 
     $this->renderFile(
       'metatag_tag.schema.yml.twig',
-      $this->getSite()->getModulePath($module) . '/config/schema/' . $module . '.metatag_tag.schema.yml',
+      $this->extensionManager->getModule($module)->getPath() . '/config/schema/' . $module . '.metatag_tag.schema.yml',
       $parameters,
       FILE_APPEND
     );
