diff --git a/core/core.services.yml b/core/core.services.yml
index 5a9cd6e..7475dab 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -1070,6 +1070,11 @@ services:
     arguments: ['@current_route_match']
     tags:
       - { name: route_processor_outbound, priority: 200 }
+  path_processor_none:
+   class: Drupal\Core\PathProcessor\PathProcessorNone
+   tags:
+     - { name: path_processor_inbound, priority: 200 }
+     - { name: path_processor_outbound, priority: 200 }
   path_processor_alias:
     class: Drupal\Core\PathProcessor\PathProcessorAlias
     tags:
diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index d578499..b5d94ce 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -20,6 +20,44 @@
  * Default template: menu-local-task.html.twig.
  *
  * @param array $variables
+ * @see template_preprocess_menu_tree()
+ * @ingroup themeable
+ */
+function theme_menu_tree($variables) {
+  return '<ul class="menu">' . $variables['tree'] . '</ul>';
+}
+
+/**
+ * Returns HTML for a menu link and submenu.
+ *
+ * @param $variables
+ *   An associative array containing:
+ *   - element: Structured array data for a menu link.
+ *
+ * @ingroup themeable
+ */
+function theme_menu_link(array $variables) {
+  $element = $variables['element'];
+  $sub_menu = '';
+
+  if ($element['#below']) {
+    $sub_menu = drupal_render($element['#below']);
+  }
+  $element['#localized_options']['set_active_class'] = TRUE;
+  if ($element['#href'] != '<none>') {
+    $output = l($element['#title'], $element['#href'], $element['#localized_options']);
+  }
+  else {
+    $output = '<span class="no-link">' . $element['#title'] . '</span>';
+  }
+
+  return '<li' . new Attribute($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
+}
+
+/**
+ * Returns HTML for a single local task link.
+ *
+ * @param $variables
  *   An associative array containing:
  *   - element: A render element containing:
  *     - #link: A menu link array with 'title', 'url', and (optionally)
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 5d645e2..309b45b 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -654,6 +654,13 @@ function template_preprocess_links(&$variables) {
         $item['link'] = $link_element;
       }
 
+      if ($link['href'] != '<none>') {
+        $item = drupal_render($link_element);
+      }
+      else {
+        $item = '<span class="no-link">' . $link['title'] . '</span>';
+      }
+
       // Handle title-only text items.
       $item['text'] = $link['title'];
       if (isset($link['attributes'])) {
