diff --git a/core/modules/toolbar/toolbar.module b/core/modules/toolbar/toolbar.module
index 62453b9..1671ea2 100644
--- a/core/modules/toolbar/toolbar.module
+++ b/core/modules/toolbar/toolbar.module
@@ -1,5 +1,7 @@
 <?php
 
+use Drupal\Core\Template\Attribute;
+
 /**
  * @file
  * Administration toolbar for quick access to top level administration items.
@@ -42,13 +44,6 @@ function toolbar_theme($existing, $type, $theme, $path) {
     'template' => 'toolbar',
     'path' => drupal_get_path('module', 'toolbar'),
   );
-  $items['toolbar_toggle'] = array(
-    'variables' => array(
-      'collapsed' => NULL,
-      'attributes' => array(),
-    ),
-    'template' => 'toolbar-toggle'
-  );
   return $items;
 }
 
@@ -79,58 +74,6 @@ function toolbar_toggle_page() {
 }
 
 /**
- * Formats an element used to toggle the toolbar drawer's visibility.
- *
- * @param $variables
- *   An associative array containing:
- *   - collapsed: A boolean value representing the toolbar drawer's visibility.
- *   - attributes: An associative array of HTML attributes.
- *
- * @return
- *   An HTML string representing the element for toggling.
- *
- * @ingroup themeable
- */
-function theme_toolbar_toggle($variables) {
-  if ($variables['collapsed']) {
-    $toggle_text = t('Show shortcuts');
-  }
-  else {
-    $toggle_text = t('Hide shortcuts');
-    $variables['attributes']['class'][] = 'toggle-active';
-  }
-  return l($toggle_text, 'toolbar/toggle', array('query' => drupal_get_destination(), 'attributes' => array('title' => $toggle_text) + $variables['attributes']));
-}
-
-/**
- * Formats an element used to toggle the toolbar drawer's visibility.
- *
- * @param $variables
- *   An associative array containing:
- *   - collapsed: A boolean value representing the toolbar drawer's visibility.
- *   - attributes: An associative array of HTML attributes.
- *   - path: A string containing toogle path.
- *   - options: An associative array  of options for l().
- *   - text: A string contains link text.
- *
- * @ingroup themable
- */
-function toolbar_preprocess_toolbar_toggle(&$variables) {
-  if ($variables['collapsed']) {
-    $toggle_text = t('Show shortcuts');
-  }
-  else {
-    $toggle_text = t('Hide shortcuts');
-    $variables['attributes']['class'][] = 'toggle-active';
-  }
-  $variables['attributes']['class'][] = 'toggle';
-  $variables['attributes']['title'] = $toggle_text;
-  $variables['path'] = 'toolbar/toggle';
-  $variables['options'] = array('query' => drupal_get_destination());
-  $variables['text'] = $toggle_text;
-}
-
-/**
  * Determines the current state of the toolbar drawer's visibility.
  *
  * @return
@@ -183,6 +126,22 @@ function toolbar_preprocess_html(&$vars) {
 }
 
 /**
+ * Preprocesses variables for toolbar templates.
+ *
+ * Adding the 'overlay-displace-top' class to the toolbar pushes the overlay
+ * down, so it appears below the toolbar.
+ */
+function template_preprocess_toolbar(&$variables) {
+  $variables['attributes'] = new Attribute($variables['attributes']);
+  $toolbar = $variables['toolbar'];
+  $variables['toolbar_home'] = render($toolbar['toolbar_home']);
+  $variables['toolbar_user'] = render($toolbar['toolbar_user']);
+  $variables['toolbar_menu'] = render($toolbar['toolbar_menu']);
+  $variables['toolbar_drawer'] = $toolbar['toolbar_drawer'];
+  $variables['toolbar_toggle'] = render($toolbar['toolbar_toggle']);
+}
+
+/**
  * Implements hook_preprocess_HOOK() for toolbar.tpl.php.
  *
  * Adding the 'overlay-displace-top' class to the toolbar pushes the overlay
@@ -290,10 +249,17 @@ function toolbar_view() {
 
   // Add an anchor to be able to toggle the visibility of the drawer.
   $build['toolbar_toggle'] = array(
-    '#theme' => 'toolbar_toggle',
-    '#collapsed' => _toolbar_is_collapsed(),
-    '#attributes' => array('class' => array('toggle')),
+    '#theme' => 'link__toolbar_toggle',
+    '#text' => _toolbar_is_collapsed() ? t('Show shortcuts') : t('Hide shortcuts'),
+    '#path' => 'toolbar/toggle',
+    '#options' => array(
+      'query' => drupal_get_destination(),
+      'attributes' => array('class' => array('toggle')),
+    )
   );
+  if (!_toolbar_is_collapsed()) {
+    $build['toolbar_toggle']['#options']['attributes']['class'][] = 'toggle-active';
+  }
 
   // Prepare the drawer links CSS classes.
   $toolbar_drawer_classes = array(
diff --git a/core/themes/stark/templates/toolbar/toolbar-toggle.html.twig b/core/themes/stark/templates/toolbar/toolbar-toggle.html.twig
deleted file mode 100644
index 9068925..0000000
--- a/core/themes/stark/templates/toolbar/toolbar-toggle.html.twig
+++ /dev/null
@@ -1,39 +0,0 @@
-{#
-/**
- * @file
- * Default theme implementation for a toolbar drawer's visibility.
- *
- * Available variables:
- * - text: The translated link text for the anchor tag.
- * - attributes: Remaining html attributes for the containing element.
- * - attributes.class: HTML classes that can be used to style contextually
- *     through CSS.
- * - path: The internal path or external URL being linked to, such as
- *   "node/34" or "http://example.com/foo".
- * - options: Additional options, with the following elements:
- *   - options.attributes: An associative array of html attributes to apply
- *     to the anchor tag. If element 'class' is included, it must be an
- *     array; 'title' must be a string; other elements are more flexible,
- *     as they just need to work in a call to
- *     drupal_attributes($options['attributes']).
- *   - options.html (default FALSE): Whether $text is html or just plain-text.
- *     For example, to make an image tag into a link, this must be set to
- *     TRUE, or you will see the escaped html image tag. text is not
- *     sanitized if 'html' is TRUE. The calling function must ensure that
- *     text is already safe.
- *   - options.language: An optional language object. If the path being
- *     linked to is internal to the site, $options['language'] is used to
- *     determine whether the link is "active", or pointing to the current
- *     page (the language as well as the path must match). This element is
- *     also used by url().
- *   - Additional options elements used by the url() function.
- *
- * @see template_preprocess
- * @see template_preprocess_toolbar_toggle
- *
- * @ingroup themeable
- */
- @todo: clean up url() once http://drupal.org/node/1812562 is resolved.
- @todo: remove this file once http://drupal.org/node/1595614 is resolved.
-#}
-{% include "core/themes/stark/templates/theme.inc/link.html.twig" %}
diff --git a/core/themes/stark/templates/toolbar/toolbar.html.twig b/core/themes/stark/templates/toolbar/toolbar.html.twig
index 6a63c35..570cd76 100644
--- a/core/themes/stark/templates/toolbar/toolbar.html.twig
+++ b/core/themes/stark/templates/toolbar/toolbar.html.twig
@@ -1,16 +1,15 @@
 {#
 /**
  * @file
- * Default template for admin toolbar.
+ * Default theme implementation for admin toolbar.
  *
  * Available variables:
- * - attributes: An instance of Attributes class that can be manipulated as an
- *    array and printed as a string.
- *    It includes the 'class' information, which includes:
- *   - toolbar: The current template type, i.e., "theming hook".
- * - toolbar['toolbar_user']: User account / logout links.
- * - toolbar['toolbar_menu']: Top level management menu links.
- * - toolbar['toolbar_drawer']: A place for extended toolbar content.
+ * - attributes: Wrapper element attributes such as class.
+ * - toolbar_home: Home link.
+ * - toolbar_user: User account / logout links.
+ * - toolbar_menu: Top level management menu links.
+ * - toolbar_drawer: A place for extended toolbar content.
+ * - toolbar_toggle: A link to toggle the visibility of the toolbar drawer.
  *
  * @see template_preprocess
  * @see template_preprocess_toolbar
@@ -18,14 +17,14 @@
  * @ingroup themeable
  */
 #}
-<nav id="toolbar" role="navigation" class="{{- attributes.class -}} clearfix" {{ attributes }}>
+<nav id="toolbar" role="navigation" class="{{ attributes.class }} clearfix" {{ attributes }}>
   <div class="toolbar-menu clearfix">
-    {{ render(toolbar['toolbar_home']) }}
-    {{ render(toolbar['toolbar_user']) }}
-    {{ render(toolbar['toolbar_menu']) }}
-      {% if toolbar['toolbar_drawer'] %}
-        {{ render(toolbar['toolbar_toggle']) }}
+    {{ toolbar_home }}
+    {{ toolbar_user }}
+    {{ toolbar_menu }}
+      {% if toolbar_drawer %}
+        {{ toolbar_toggle }}
       {% endif %}
   </div>
-  {{ render(toolbar['toolbar_drawer']) }}
+  {{ toolbar_drawer }}
 </nav>
