diff --git a/core/modules/help/help.admin.inc b/core/modules/help/help.admin.inc
deleted file mode 100644
index a549263..0000000
--- a/core/modules/help/help.admin.inc
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * @file
- * Admin page callbacks for the help module.
- */
-
-/**
- * Page callback: Prints a page listing general help for a module.
- *
- * @param $name
- *   A module name to display a help page for.
- *
- * @see help_menu()
- */
-function help_page($name) {
-  $output = '';
-  if (module_hook($name, 'help')) {
-    $info = system_get_info('module');
-    drupal_set_title($info[$name]['name']);
-
-    $temp = module_invoke($name, 'help', "admin/help#$name", drupal_help_arg());
-    if (empty($temp)) {
-      $output .= t("No help is available for module %module.", array('%module' => $info[$name]['name']));
-    }
-    else {
-      $output .= $temp;
-    }
-
-    // Only print list of administration pages if the module in question has
-    // any such pages associated to it.
-    $admin_tasks = system_get_module_admin_tasks($name, $info[$name]);
-    if (!empty($admin_tasks)) {
-      $links = array();
-      foreach ($admin_tasks as $task) {
-        $links[] = l($task['title'], $task['link_path'], $task['localized_options']);
-      }
-      $output .= theme('item_list', array('items' => $links, 'title' => t('@module administration pages', array('@module' => $info[$name]['name']))));
-    }
-  }
-  return $output;
-}
diff --git a/core/modules/help/help.module b/core/modules/help/help.module
index d7042d3..7359086 100644
--- a/core/modules/help/help.module
+++ b/core/modules/help/help.module
@@ -21,11 +21,8 @@ function help_menu() {
   foreach ($modules as $module) {
     $items['admin/help/' . $module] = array(
       'title' => $module,
-      'page callback' => 'help_page',
-      'page arguments' => array(2),
-      'access arguments' => array('access administration pages'),
+      'route_name' => 'help_page',
       'type' => MENU_VISIBLE_IN_BREADCRUMB,
-      'file' => 'help.admin.inc',
     );
   }
 
diff --git a/core/modules/help/help.routing.yml b/core/modules/help/help.routing.yml
index d4682ee..75877c9 100644
--- a/core/modules/help/help.routing.yml
+++ b/core/modules/help/help.routing.yml
@@ -4,3 +4,9 @@ help_main:
     _content: '\Drupal\help\Controller\HelpController::helpMain'
   requirements:
     _permission: 'access administration pages'
+help_page:
+  pattern: 'admin/help/{name}'
+  defaults:
+    _content: '\Drupal\help\Controller\HelpController::helpPage'
+  requirements:
+    _permission: 'access administration pages'
diff --git a/core/modules/help/lib/Drupal/help/Controller/HelpController.php b/core/modules/help/lib/Drupal/help/Controller/HelpController.php
index 118f1bc..6470c95 100644
--- a/core/modules/help/lib/Drupal/help/Controller/HelpController.php
+++ b/core/modules/help/lib/Drupal/help/Controller/HelpController.php
@@ -87,4 +87,53 @@ protected function helpLinksAsList() {
     return $output;
   }
 
+  /**
+   * Prints a page listing general help for a module.
+   *
+   * @param string $name
+   *   A module name to display a help page for.
+   *
+   * @return String
+   *   A string containing help page text.
+   *
+   * @see help_menu()
+   */
+  public function helpPage($name) {
+    $build = array();
+    if ($this->moduleHandler->implementsHook($name, 'help')) {
+      $info = system_get_info('module');
+      drupal_set_title($info[$name]['name']);
+
+      $temp = $this->moduleHandler->invoke($name, 'help', array("admin/help#$name", drupal_help_arg()));
+      if (empty($temp)) {
+        $build['top']['#markup'] = t('No help is available for module %module.', array('%module' => $info[$name]['name']));
+      }
+      else {
+        $build['top']['#markup'] = $temp;
+      }
+
+      // Only print list of administration pages if the module in question has
+      // any such pages associated to it.
+      $admin_tasks = system_get_module_admin_tasks($name, $info[$name]);
+      if (!empty($admin_tasks)) {
+        $links = array();
+        foreach ($admin_tasks as $task) {
+          $link = $task['localized_options'];
+          $link['href'] = $task['link_path'];
+          $link['title'] = $task['title'];
+          $links[] = $link;
+        }
+        $build['links']['#links'] = array(
+          '#heading' => array(
+            'level' => 'h3',
+            'text' => t('@module administration pages', array('@module' => $info[$name]['name'])),
+          ),
+          '#links' => $links,
+        );
+      }
+    }
+
+    return $build;
+  }
+
 }
