diff --git a/core/modules/forum/forum.admin.inc b/core/modules/forum/forum.admin.inc
deleted file mode 100644
index 332f11c..0000000
--- a/core/modules/forum/forum.admin.inc
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-/**
- * @file
- * Administrative page callbacks for the Forum module.
- */
-
-use Drupal\taxonomy\Form\OverviewTerms;
-use Drupal\taxonomy\Entity\Term;
-
-/**
- * Form constructor for the forum overview form.
- *
- * Returns a form for controlling the hierarchy of existing forums and
- * containers.
- *
- * @see forum_menu()
- * @ingroup forms
- */
-function forum_overview($form, &$form_state) {
-  module_load_include('inc', 'taxonomy', 'taxonomy.admin');
-  $config = Drupal::config('forum.settings');
-
-  $vid = $config->get('vocabulary');
-  $vocabulary = entity_load('taxonomy_vocabulary', $vid);
-  // @todo temporary, will be fixed in http://drupal.org/node/1974210.
-  $overview = OverviewTerms::create(Drupal::getContainer());
-  $form = $overview->buildForm($form, $form_state, $vocabulary);
-
-  foreach (element_children($form['terms']) as $key) {
-    if (isset($form['terms'][$key]['#term'])) {
-      $term = $form['terms'][$key]['#term'];
-      $form['terms'][$key]['term']['#href'] = 'forum/' . $term->id();
-      unset($form['terms'][$key]['operations']['#links']['delete']);
-      if (in_array($form['terms'][$key]['#term']->id(), $config->get('containers'))) {
-        $form['terms'][$key]['operations']['#links']['edit']['title'] = t('edit container');
-        $form['terms'][$key]['operations']['#links']['edit']['href'] = 'admin/structure/forum/edit/container/' . $term->id();
-        // We don't want the redirect from the link so we can redirect the
-        // delete action.
-        unset($form['terms'][$key]['operations']['#links']['edit']['query']['destination']);
-      }
-      else {
-        $form['terms'][$key]['operations']['#links']['edit']['title'] = t('edit forum');
-        $form['terms'][$key]['operations']['#links']['edit']['href'] = 'admin/structure/forum/edit/forum/' . $term->id();
-        // We don't want the redirect from the link so we can redirect the
-        // delete action.
-        unset($form['terms'][$key]['operations']['#links']['edit']['query']['destination']);
-      }
-    }
-  }
-
-  // Remove the alphabetical reset.
-  unset($form['actions']['reset_alphabetical']);
-
-  // The form needs to have submit and validate handlers set explicitly.
-  // Use the existing taxonomy overview submit handler.
-  $form['#submit'] = array(array($overview, 'submitForm'));
-  $form['terms']['#empty'] = t('No containers or forums available. <a href="@container">Add container</a> or <a href="@forum">Add forum</a>.', array('@container' => url('admin/structure/forum/add/container'), '@forum' => url('admin/structure/forum/add/forum')));
-  return $form;
-}
diff --git a/core/modules/forum/forum.module b/core/modules/forum/forum.module
index 1ed6ac3..c2879a5 100644
--- a/core/modules/forum/forum.module
+++ b/core/modules/forum/forum.module
@@ -94,7 +94,6 @@ function forum_theme() {
     ),
     'forum_form' => array(
       'render element' => 'form',
-      'file' => 'forum.admin.inc',
     ),
   );
 }
@@ -121,10 +120,7 @@ function forum_menu() {
   $items['admin/structure/forum'] = array(
     'title' => 'Forums',
     'description' => 'Control forum hierarchy settings.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('forum_overview'),
-    'access arguments' => array('administer forums'),
-    'file' => 'forum.admin.inc',
+    'route_name' => 'forum_overview',
   );
   $items['admin/structure/forum/list'] = array(
     'title' => 'List',
diff --git a/core/modules/forum/forum.routing.yml b/core/modules/forum/forum.routing.yml
index fe816f0..ed91bbe 100644
--- a/core/modules/forum/forum.routing.yml
+++ b/core/modules/forum/forum.routing.yml
@@ -1,36 +1,48 @@
 forum_delete:
   pattern: 'admin/structure/forum/delete/forum/{taxonomy_term}'
   defaults:
-    _form: 'Drupal\forum\Form\DeleteForm'
+    _form: '\Drupal\forum\Form\DeleteForm'
   requirements:
     _permission: 'administer forums'
+
 forum_settings:
   pattern: '/admin/structure/forum/settings'
   defaults:
     _form: '\Drupal\forum\ForumSettingsForm'
   requirements:
     _permission: 'administer forums'
+
 forum_add_container:
   pattern: 'admin/structure/forum/add/container'
   defaults:
-    _content: 'Drupal\forum\Controller\ForumController::addContainer'
+    _content: '\Drupal\forum\Controller\ForumController::addContainer'
   requirements:
     _permission: 'administer forums'
+
 forum_add_forum:
   pattern: 'admin/structure/forum/add/forum'
   defaults:
-    _content: 'Drupal\forum\Controller\ForumController::addForum'
+    _content: '\Drupal\forum\Controller\ForumController::addForum'
   requirements:
     _permission: 'administer forums'
+
 forum_edit_container:
   pattern: 'admin/structure/forum/edit/container/{taxonomy_term}'
   defaults:
     _entity_form: 'taxonomy_term.container'
   requirements:
     _permission: 'administer forums'
+
 forum_edit_forum:
   pattern: 'admin/structure/forum/edit/forum/{taxonomy_term}'
   defaults:
     _entity_form: 'taxonomy_term.forum'
   requirements:
     _permission: 'administer forums'
+
+forum_overview:
+  pattern: 'admin/structure/forum'
+  defaults:
+    _form: '\Drupal\forum\Form\OverviewForm'
+  requirements:
+    _permission: 'administer forums'
diff --git a/core/modules/forum/lib/Drupal/forum/Form/OverviewForm.php b/core/modules/forum/lib/Drupal/forum/Form/OverviewForm.php
new file mode 100644
index 0000000..f80deb2
--- /dev/null
+++ b/core/modules/forum/lib/Drupal/forum/Form/OverviewForm.php
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\forum\Form\OverviewForm.
+ */
+
+namespace Drupal\forum\Form;
+
+use Drupal\Core\Entity\EntityManager;
+use Drupal\Core\Config\ConfigFactory;
+use Drupal\taxonomy\Form\OverviewTerms;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+
+class OverviewForm extends OverviewTerms {
+
+  /**
+   * Config object for forum.settings.
+   *
+   * @var \Drupal\Core\Config\Config
+   */
+  protected $forumConfig;
+
+  /**
+   * Constructs a \Drupal\forum\Form\OverviewForm object.
+   *
+   * @param \Drupal\Core\Config\ConfigFactory $config_factory
+   *   The factory for configuration objects.
+   * @param \Drupal\Core\Entity\EntityManager $entity_manager
+   *   The entity manager service.
+   */
+  public function __construct(ConfigFactory $config_factory, EntityManager $entity_manager) {
+    $this->forumConfig = $config_factory->get('forum.settings');
+    $this->entityManager = $entity_manager;
+  }
+
+  /**
+   * {@inheritdoc}.
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('config.factory'),
+      $container->get('plugin.manager.entity')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormID() {
+    return 'forum_overview';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, array &$form_state) {
+    $vid = $this->forumConfig->get('vocabulary');
+    $vocabularies = $this->entityManager->getStorageController('taxonomy_vocabulary')->load(array($vid));
+    $vocabulary =  isset($vocabularies[$vid]) ? $vocabularies[$vid] : FALSE;
+    if (!$vocabulary) {
+      throw new NotFoundHttpException();
+    }
+
+    // Build base taxonomy term overview.
+    $form = parent::buildForm($form, $form_state, $vocabulary);
+
+    foreach (element_children($form) as $key) {
+      if (isset($form[$key]['#term'])) {
+        $term = $form[$key]['#term'];
+        $form[$key]['view']['#href'] = 'forum/' . $term['tid'];
+        unset($form[$key]['operations']['#links']['delete']);
+        if (in_array($form[$key]['#term']['tid'], $this->forumConfig->get('containers'))) {
+          $form[$key]['operations']['#links']['edit']['title'] = $this->t('edit container');
+          $form[$key]['operations']['#links']['edit']['href'] = 'admin/structure/forum/edit/container/' . $term['tid'];
+          // We don't want the redirect from the link so we can redirect the
+          // delete action.
+          unset($form[$key]['operations']['#links']['edit']['query']['destination']);
+        }
+        else {
+          $form[$key]['operations']['#links']['edit']['title'] = $this->t('edit forum');
+          $form[$key]['operations']['#links']['edit']['href'] = 'admin/structure/forum/edit/forum/' . $term['tid'];
+          // We don't want the redirect from the link so we can redirect the
+          // delete action.
+          unset($form[$key]['operations']['#links']['edit']['query']['destination']);
+        }
+      }
+    }
+
+    // Remove the alphabetical reset.
+    unset($form['actions']['reset_alphabetical']);
+
+    // The form needs to have submit and validate handlers set explicitly.
+    $form['#theme'] = 'taxonomy_overview_terms';
+    $form['#submit'] = array(array($this, 'submitForm'));
+    $form['#empty_text'] = $this->t('No containers or forums available. <a href="@container">Add container</a> or <a href="@forum">Add forum</a>.', array('@container' => url('admin/structure/forum/add/container'), '@forum' => url('admin/structure/forum/add/forum')));
+    return $form;
+  }
+
+}
