diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Controller/ShortcutController.php b/core/modules/shortcut/lib/Drupal/shortcut/Controller/ShortcutController.php
new file mode 100644
index 0000000..2b51823
--- /dev/null
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Controller/ShortcutController.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\shortcut\Controller\ShortcutController.
+ */
+
+namespace Drupal\shortcut\Controller;
+
+use Drupal\Core\ControllerInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Controller routines for shortcut routes.
+ */
+class ShortcutController implements ControllerInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static();
+  }
+
+  /**
+   * Constructs a ShortcutController object.
+   */
+  public function __construct() {
+  }
+
+	/**
+   * Provides the shortcut set creation form.
+   */
+  public function setAdd() {
+    $entity = entity_create('shortcut', array());
+    return entity_get_form($entity);
+  }
+}
+?>
\ No newline at end of file
diff --git a/core/modules/shortcut/shortcut.admin.inc b/core/modules/shortcut/shortcut.admin.inc
index dec4dbd..88c794f 100644
--- a/core/modules/shortcut/shortcut.admin.inc
+++ b/core/modules/shortcut/shortcut.admin.inc
@@ -178,14 +178,6 @@ function shortcut_set_admin() {
 }
 
 /**
- * Page callback: provides the shortcut set creation form.
- */
-function shortcut_set_add() {
-  $entity = entity_create('shortcut', array());
-  return entity_get_form($entity);
-}
-
-/**
  * Form callback: builds the form for customizing shortcut sets.
  *
  * @param $form
diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module
index db3373b..b3a48a3 100644
--- a/core/modules/shortcut/shortcut.module
+++ b/core/modules/shortcut/shortcut.module
@@ -70,10 +70,8 @@ function shortcut_menu() {
   );
   $items['admin/config/user-interface/shortcut/add-set'] = array(
     'title' => 'Add shortcut set',
-    'page callback' => 'shortcut_set_add',
-    'access arguments' => array('administer shortcuts'),
+    'route_name' => 'shortcut_set_add',
     'type' => MENU_LOCAL_ACTION,
-    'file' => 'shortcut.admin.inc',
   );
   $items['admin/config/user-interface/shortcut/manage/%shortcut_set'] = array(
     'title' => 'Edit shortcuts',
diff --git a/core/modules/shortcut/shortcut.routing.yml b/core/modules/shortcut/shortcut.routing.yml
index 277853f..d22a366 100644
--- a/core/modules/shortcut/shortcut.routing.yml
+++ b/core/modules/shortcut/shortcut.routing.yml
@@ -11,3 +11,10 @@ shortcut_set_delete:
     _form: 'Drupal\shortcut\Form\SetDelete'
   requirements:
     _entity_access: 'shortcut.delete'
+
+shortcut_set_add:
+  pattern: '/admin/config/user-interface/shortcut/add-set'
+  defaults:
+    _content: '\Drupal\shortcut\Controller\ShortcutController::setAdd'
+  requirements:
+    _permission: 'administer shortcuts'
