diff --git a/modules/toolbar_prototype/images/toolbar_add.png b/modules/toolbar_prototype/images/toolbar_add.png
new file mode 100644
index 0000000..c158c3b
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_add.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_arrow.png b/modules/toolbar_prototype/images/toolbar_arrow.png
new file mode 100644
index 0000000..dfc6359
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_arrow.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_dashboard.png b/modules/toolbar_prototype/images/toolbar_dashboard.png
new file mode 100644
index 0000000..bb7b67d
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_dashboard.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_drawer_link_arrow.png b/modules/toolbar_prototype/images/toolbar_drawer_link_arrow.png
new file mode 100644
index 0000000..43f6e18
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_drawer_link_arrow.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_gear.png b/modules/toolbar_prototype/images/toolbar_gear.png
new file mode 100644
index 0000000..243cb3a
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_gear.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_graph.png b/modules/toolbar_prototype/images/toolbar_graph.png
new file mode 100644
index 0000000..73a3f5e
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_graph.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_help.png b/modules/toolbar_prototype/images/toolbar_help.png
new file mode 100644
index 0000000..1ff4707
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_help.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_list.png b/modules/toolbar_prototype/images/toolbar_list.png
new file mode 100644
index 0000000..4a12a93
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_list.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_module.png b/modules/toolbar_prototype/images/toolbar_module.png
new file mode 100644
index 0000000..e359ec7
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_module.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_toggle.png b/modules/toolbar_prototype/images/toolbar_toggle.png
new file mode 100644
index 0000000..03cdd34
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_toggle.png differ
diff --git a/modules/toolbar_prototype/images/toolbar_wrench.png b/modules/toolbar_prototype/images/toolbar_wrench.png
new file mode 100644
index 0000000..7239f57
Binary files /dev/null and b/modules/toolbar_prototype/images/toolbar_wrench.png differ
diff --git a/modules/toolbar_prototype/toolbar_prototype.css b/modules/toolbar_prototype/toolbar_prototype.css
new file mode 100644
index 0000000..90e6929
--- /dev/null
+++ b/modules/toolbar_prototype/toolbar_prototype.css
@@ -0,0 +1,233 @@
+#toolbar {
+  background: #282828;
+}
+
+#toolbar .toolbar-left > ul {
+  float: left;
+}
+
+#toolbar .toolbar-right > ul {
+  float: right;
+}
+
+#toolbar .toolbar-right ul + ul {
+  border-right: 1px solid #666;
+}
+
+#toolbar a.toggle {
+  position: absolute;
+  right: 30px;
+  cursor: pointer;
+  text-indent: -9999px;
+  overflow: hidden;
+  width: 26px;
+  height: 25px;
+  z-index: 1;
+  top: 0;
+  background: url('images/toolbar_toggle.png') no-repeat left top transparent;
+}
+
+#toolbar a.toggle:focus,
+#toolbar a.toggle:hover {
+
+}
+
+#toolbar a.toggle-active {
+  background: url('images/toolbar_toggle.png') no-repeat -27px top transparent;
+}
+
+#toolbar a.toggle-active.toggle:focus,
+#toolbar a.toggle-active.toggle:hover {
+}
+
+#toolbar .toolbar-menu {
+  display: none;
+}
+
+.toolbar-drawer #toolbar .toolbar-menu {
+  display: block;
+  padding: 0 45px 0 0;
+}
+
+#toolbar div.toolbar-drawer {
+  display: none;
+  padding: 12px;
+}
+
+#toolbar div.toolbar-drawer.active-path {
+  display: block;
+}
+
+#toolbar div.toolbar-drawer.active-path.collapsed {
+  display: none;
+}
+
+#toolbar .toolbar-drawer .drawer {
+  display: none;
+}
+
+#toolbar .toolbar-drawer .drawer.active-path {
+  display: block;
+}
+
+#toolbar div.toolbar-menu ul li a {
+  border-radius: 0;
+  padding: 5px 15px;
+}
+
+#toolbar div.toolbar-menu ul li a.active:active,
+#toolbar div.toolbar-menu ul li a.active,
+#toolbar div.toolbar-menu ul li.active-trail a,
+#toolbar div.toolbar-menu ul li a:active {
+  background-color: #282828;
+  background-image: none;
+}
+
+#toolbar div.toolbar-menu ul li a.active:hover,
+#toolbar div.toolbar-menu ul li a.active:focus {
+  background-color: #282828;
+  background-image: none;
+}
+
+#toolbar div.toolbar-menu ul li a[drawer] {
+  background-image: url('images/toolbar_drawer_link_arrow.png');
+  background-repeat: no-repeat;
+  background-position: right center;
+  padding-right: 25px;
+}
+
+
+#toolbar div.toolbar-menu ul li a:hover,
+#toolbar div.toolbar-menu ul li a:focus {
+  background-color: #434343;
+}
+
+#toolbar div.toolbar-menu ul li a[drawer].active-path:hover,
+#toolbar div.toolbar-menu ul li a[drawer].active-path:active,
+#toolbar div.toolbar-menu ul li a[drawer].active-path,
+#toolbar div.toolbar-menu ul li.active-trail a[drawer] {
+  background-color: #282828;
+  background-image: url('images/toolbar_drawer_link_arrow.png');
+  background-repeat: no-repeat;
+  background-position: right center;
+  padding-bottom: 6px;
+  position: relative;
+  z-index: 1;
+}
+
+#toolbar .toolbar-drawer .drawer ul {
+  background-color: rgba(102, 102, 102, 0.4);
+  background-position: 6px center;
+  background-repeat: no-repeat;
+  border: 1px solid #000;
+  border-radius: 3px;
+  padding: 5px 0;
+  float: left;
+}
+
+#toolbar .toolbar-drawer .drawer ul:before {
+  background: url("images/toolbar_arrow.png") no-repeat right center transparent;
+  float: left;
+  font-size: 11px;
+  font-weight: bold;
+  margin: -5px 0;
+  padding: 5px 8px 5px 5px;
+  text-transform: uppercase;
+}
+
+.toolbar-add:before {
+  content: "Add";
+}
+
+.toolbar-gear:before {
+  content: "Manage";
+}
+
+.toolbar-list:before {
+  content: "Find";
+}
+
+.toolbar-graph:before {
+  content: "View";
+}
+
+.toolbar-wrench:before {
+  content: "Wrench";
+}
+
+.toolbar-puzzle:before {
+  content: "Puzzle";
+}
+
+#toolbar div.toolbar-menu ul#toolbar-help li a {
+  background-image: url('images/toolbar_help.png');
+  background-repeat: no-repeat;
+  background-position: 10px center;
+  padding-left: 32px;
+}
+
+#toolbar div.toolbar-menu ul#toolbar-help li a.active,
+#toolbar div.toolbar-menu ul#toolbar-help li a:active {
+  padding-left: 32px;
+  background-position: 10px center;
+  background-color: #434343;
+}
+
+#toolbar .toolbar-drawer .drawer ul + ul {
+  margin-left: 10px;
+}
+
+#toolbar .toolbar-drawer .drawer ul li {
+  overflow: visible;
+  padding: 0 8px;
+}
+
+#toolbar .toolbar-drawer .drawer ul li a {
+  color: #ccc;
+}
+
+#toolbar .toolbar-drawer .drawer ul li a:hover,
+#toolbar .toolbar-drawer .drawer ul li a:focus {
+  color: #fff;
+  text-decoration: underline;
+}
+
+#toolbar .toolbar-drawer .drawer ul li a.active {
+  color: #fff;
+  border-bottom: 2px solid #fff;
+  margin-bottom: -6px;
+  padding-bottom: 3px;
+}
+
+#toolbar .toolbar-drawer .drawer ul li a.active:hover,
+#toolbar .toolbar-drawer .drawer ul li a.active:focus {
+  text-decoration: none;
+}
+
+#toolbar .toolbar-drawer .drawer ul li + li {
+  border-left: 1px solid rgba(204, 204, 204, 0.4);
+}
+
+#toolbar-home .dashboard a span {
+  background: url('images/toolbar_dashboard.png') no-repeat center center transparent;
+  width: 17px;
+}
+
+#toolbar .drawer-links a {
+  padding-right: 10px;
+}
+
+#toolbar .toolbar-tooltips {
+  font-size: 11px;
+  padding: 12px;
+  display: none;
+}
+
+#toolbar .toolbar-drawer.active-path + .toolbar-tooltips {
+  display: block;
+  padding-top: 0;
+}
+
+#toolbar #toolbar-user li {
+  margin: 0;
+}
diff --git a/modules/toolbar_prototype/toolbar_prototype.info b/modules/toolbar_prototype/toolbar_prototype.info
new file mode 100644
index 0000000..3f0a9c6
--- /dev/null
+++ b/modules/toolbar_prototype/toolbar_prototype.info
@@ -0,0 +1,3 @@
+name = Toolbar prototype
+description = Reorganizes the toolbar and adds collapsible menus.
+core = 7.x
diff --git a/modules/toolbar_prototype/toolbar_prototype.js b/modules/toolbar_prototype/toolbar_prototype.js
new file mode 100644
index 0000000..c730c33
--- /dev/null
+++ b/modules/toolbar_prototype/toolbar_prototype.js
@@ -0,0 +1,106 @@
+(function ($) {
+
+Drupal.toolbar_prototype = Drupal.toolbar_prototype || {};
+
+/**
+ * Attach toggling behavior and notify the overlay of the toolbar.
+ */
+Drupal.behaviors.toolbar_prototype = {
+  attach: function (context) {
+    var $drawer_links = $('#toolbar .drawer-links a:not(#toolbar-link-admin-appearance)', context)
+    $('#toolbar .toolbar-menu li').bind('mouseenter', Drupal.toolbar_prototype.drawer_toggle);
+
+    Drupal.toolbar_prototype.path = $('#toolbar .active');
+    Drupal.toolbar_prototype.original = Drupal.settings.toolbar.tooltips.default;
+
+    $(window).bind('hashchange.drupal-overlay', Drupal.toolbar_prototype.activeTrail);
+    $(document).bind('drupalOverlayLoad', Drupal.toolbar_prototype.activeTrail);
+    $(document).bind('drupalOverlayClose', Drupal.toolbar_prototype.drawer_close);
+
+    $('#toolbar li').bind('mouseenter', Drupal.toolbar_prototype.tooltipShow);
+    $('#toolbar').bind('mouseleave', Drupal.toolbar_prototype.tooltipHide);
+    $('#toolbar').bind('mouseleave', Drupal.toolbar_prototype.drawer_close);
+    $('#tooltip .toolbar-menu li').bind('mouseleave', Drupal.toolbar_prototype.tooltipHide);
+
+  }
+};
+
+Drupal.toolbar_prototype.drawer_toggle = function (event) {
+  event.preventDefault();
+  event.stopPropagation();
+
+  var $this = $(this).children('a:first');
+  var $drawer = $('#' + $this.attr('drawer'));
+
+  if (!$drawer.length) {
+    // Let normal interaction proceed
+    Drupal.toolbar_prototype.drawer_close();
+    $(this).addClass('active').blur();
+    return;
+  }
+
+  if ($drawer.hasClass('active-path') && $this.hasClass('active-path')) {
+    Drupal.toolbar_prototype.drawer_close();
+    Drupal.toolbar_prototype.path.addClass('active');
+    Drupal.toolbar_prototype.path.parentsUntil('#toolbar').addClass('active-path');
+    $('#toolbar [drawer=' + $('.toolbar-drawer .drawer.active-path').attr('id') + ']').addClass('active-path');
+  } else {
+    $('#toolbar .active').removeClass('active');
+    $('#toolbar .active-path').removeClass('active-path');
+    $this.addClass('active-path').blur();
+    $drawer.addClass('active-path');
+    $drawer.parentsUntil('#toolbar').addClass('active-path');
+    $('body').css('paddingTop', Drupal.toolbar.height());
+  }
+
+  Drupal.overlay.eventhandlerAlterDisplacedElements();
+};
+
+Drupal.toolbar_prototype.drawer_close = function (event) {
+  $('#toolbar .active').removeClass('active').blur();
+  $('#toolbar .active-path').removeClass('active-path').blur();
+  $('body').css('paddingTop', Drupal.toolbar.height());
+};
+
+Drupal.toolbar_prototype.activeTrail = function (event) {
+  var path = Drupal.settings.basePath + $.bbq.getState('overlay');
+  $('#toolbar a.active').removeClass('active');
+  $('#toolbar .active-path').removeClass('active-path');
+  var $link = $('#toolbar a[href=' + path + ']');
+  $link.addClass('active');
+  $link.parentsUntil('#toolbar').addClass('active-path');
+  $('#toolbar [drawer=' + $('.toolbar-drawer .drawer.active-path').attr('id') + ']').addClass('active-path');
+  Drupal.toolbar_prototype.path = $('#toolbar .active');
+  Drupal.overlay.eventhandlerAlterDisplacedElements();
+};
+
+Drupal.toolbar_prototype.tooltipShow = function (event) {
+  var index = $(this).find('a').attr('href');
+  if ($(this).is('.toolbar-menu li')) {
+    index = 'href' + index;
+  }
+  if (index == 'hrefundefined') {
+    index = 'href/admin/appearance';
+  }
+  var text = Drupal.settings.toolbar.tooltips.default;
+  if (event.type == 'mouseenter' && Drupal.settings.toolbar.tooltips[index] != '') {
+    text = Drupal.settings.toolbar.tooltips[index]
+  }
+
+  if (!$('.toolbar-drawer').hasClass('active') && event.type == 'mouseleave') {
+    Drupal.toolbar_prototype.tooltipHide();
+  }
+
+  $('.toolbar-tooltips').html(text);
+  $('.toolbar-tooltips').show(500);
+};
+
+Drupal.toolbar_prototype.tooltipHide = function (event) {
+  event.stopPropagation();
+  event.preventDefault();
+  if ($(this).attr('id') == 'toolbar' || !$('#toolbar .toolbar-drawer').hasClass('active')) {
+    $('.toolbar-tooltips').hide(500);
+  }
+};
+
+})(jQuery);
diff --git a/modules/toolbar_prototype/toolbar_prototype.module b/modules/toolbar_prototype/toolbar_prototype.module
new file mode 100644
index 0000000..ae90d60
--- /dev/null
+++ b/modules/toolbar_prototype/toolbar_prototype.module
@@ -0,0 +1,444 @@
+<?php
+
+/**
+ * @file
+ * @todo.
+ */
+
+/**
+ * Implements hook_theme().
+ */
+function toolbar_prototype_theme($existing, $type, $theme, $path) {
+  $items['toolbar_prototype_drawer_section'] = array(
+    'render element' => 'element',
+  );
+  return $items;
+}
+
+/**
+ * Implements hook_theme_registry_alter().
+ */
+function toolbar_prototype_theme_registry_alter(&$theme_registry) {
+  if (isset($theme_registry['toolbar'])) {
+    $theme_registry['toolbar']['template'] = 'toolbar_prototype';
+    $theme_registry['toolbar']['path'] = drupal_get_path('module', 'toolbar_prototype');
+  }
+}
+
+/**
+ * Implements hook_module_implements_alter().
+ */
+function toolbar_prototype_module_implements_alter(&$implementations, $hook) {
+  if ($hook == 'page_alter') {
+    $group = $implementations['toolbar_prototype'];
+    unset($implementations['toolbar_prototype']);
+    $implementations['toolbar_prototype'] = $group;
+  }
+}
+
+/**
+ * Implements hook_page_alter().
+ */
+function toolbar_prototype_page_alter(&$page) {
+  $page['page_top']['toolbar']['#pre_render'] = array('toolbar_prototype_pre_render');
+}
+
+/**
+ * #pre_render callback: @todo.
+ */
+function toolbar_prototype_pre_render($toolbar) {
+  $toolbar = array_merge($toolbar, toolbar_prototype_view());
+  $toolbar['toolbar_drawer'] = array_merge($toolbar['toolbar_drawer'], toolbar_prototype_fill_drawer());
+  $toolbar['tooltips'] = toolbar_prototype_tooltips($toolbar);
+
+  return $toolbar;
+}
+
+/**
+ * @todo.
+ *
+ * @return array
+ *   @todo.
+ */
+function toolbar_prototype_view() {
+  global $user;
+
+  $trails = array();
+  foreach (menu_get_active_trail() as $trail) {
+    $trails[] = $trail['href'];
+  }
+
+  $module_path = drupal_get_path('module', 'toolbar');
+  $path = drupal_get_path('module', 'toolbar_prototype');
+  $build = array(
+    '#theme' => 'toolbar',
+    '#attached'=> array(
+      'js' => array(
+        $module_path . '/toolbar.js',
+        $path . '/toolbar_prototype.js',
+        array(
+          'data' => array('tableHeaderOffset' => 'Drupal.toolbar.height'),
+          'type' => 'setting'
+        ),
+      ),
+      'css' => array(
+        $module_path . '/toolbar.css',
+        $path . '/toolbar_prototype.css',
+      ),
+      'library' => array(array('system', 'jquery.cookie')),
+    ),
+  );
+
+  if ($user->uid) {
+    $links = array(
+      'account' => array(
+        'title' => t('<strong>@username</strong>', array('@username' => format_username($user))),
+        'href' => 'user',
+        'html' => TRUE,
+        'attributes' => array('title' => t('User account')),
+        'description' => t('View or edit your user account'),
+      ),
+      'logout' => array(
+        'title' => t('Log out'),
+        'href' => 'user/logout',
+        'description' => t('Log out of this site'),
+      ),
+    );
+    if (arg(0) == 'user') {
+      $links['account']['attributes']['class'][] = 'active';
+    }
+  }
+  else {
+     $links = array(
+      'login' => array(
+        'title' => t('Log in'),
+        'href' => 'user',
+        'description' => t('Log in to this site'),
+      ),
+    );
+  }
+  $build['toolbar_right']['toolbar_user'] = array(
+    '#theme' => 'links__toolbar_user',
+    '#links' => $links,
+    '#attributes' => array('id' => 'toolbar-user'),
+  );
+
+  // This is only for the prototype.
+  if (module_exists('scarecrow')) {
+    $links = array(
+      'mysites' => array(
+        'title' => t('My sites'),
+        'href' => scarecrow_get_gardener_url() . '/mysites',
+        'html' => TRUE,
+        'attributes' => array('title' => t('My sites')),
+        'description' => t('Go to your My sites page on Drupal Gardens'),
+      ),
+    );
+    $build['toolbar_right']['toolbar_mysites'] = array(
+      '#theme' => 'links',
+      '#links' => $links,
+      '#attributes' => array('id' => 'toolbar-mysites'),
+    );
+  }
+
+  $links = array(
+    'help' => array(
+      'title' => t('Help'),
+      'href' => 'admin/help',
+      'html' => TRUE,
+      'attributes' => array('title' => t('Help')),
+      'description' => t('Get help on various topics'),
+    ),
+  );
+  $build['toolbar_right']['toolbar_help'] = array(
+    '#theme' => 'links',
+    '#links' => $links,
+    '#attributes' => array('id' => 'toolbar-help'),
+  );
+
+  // Add a "home" link.
+  $link = array(
+    'home' => array(
+      'title' => '<span class="home-link">Home</span>',
+      'href' => '<front>',
+      'html' => TRUE,
+      'attributes' => array('title' => t('Home')),
+      'description' => t('Return to your home page'),
+    ),
+    'dashboard' => array(
+      'title' => '<span class="dashboard-link">Dashboard</span>',
+      'href' => 'admin/dashboard',
+      'html' => TRUE,
+      'attributes' => array('title' => t('Dashboard')),
+      'description' => t('The dashboard shows administrative tasks for your site'),
+    ),
+  );
+  $build['toolbar_left']['toolbar_home'] = array(
+    '#theme' => 'links',
+    '#links' => $link,
+    '#attributes' => array('id' => 'toolbar-home'),
+  );
+
+  $links = array(
+    'content' => array(
+      'title' => t('Content'),
+      'href' => 'admin/content',
+      'html' => TRUE,
+      'attributes' => array('title' => t('Content'), 'drawer' => 'content-drawer'),
+      '#paths' => array(
+        'admin/content',
+        'node/add',
+      ),
+      'description' => t('Content is what is on your site'),
+    ),
+    'people' => array(
+      'title' => t('People'),
+      'href' => 'admin/people',
+      'html' => TRUE,
+      'attributes' => array('title' => t('People'), 'drawer' => 'people-drawer'),
+      '#paths' => array(
+        'admin/people',
+      ),
+      'description' => t('People are your users'),
+    ),
+    'site' => array(
+      'title' => t('Site'),
+      'href' => 'admin/config',
+      'html' => TRUE,
+      'attributes' => array('title' => t('Site'), 'drawer' => 'site-drawer'),
+      '#paths' => array(
+        'admin/reports',
+        'admin/config',
+        'admin/modules',
+        'admin/structure',
+      ),
+      'description' => t('Site is administrative tasks'),
+    ),
+    'appearance' => array(
+      'title' => t('Appearance'),
+      'href' => 'admin/appearance',
+      'html' => TRUE,
+      'attributes' => array('title' => t('Appearance'), 'id' => 'toolbar-link-admin-appearance'),
+      '#paths' => array(
+        'admin/appearance',
+      ),
+      'description' => t('Launch the ThemeBuilder'),
+    ),
+  );
+  foreach($links as $key => $link) {
+    foreach($link['#paths'] as $path) {
+      if (in_array($path, $trails)) {
+        $links[$key]['attributes']['class'][] = 'active';
+      }
+    }
+  }
+
+  $build['toolbar_left']['toolbar_menu'] = array(
+    '#theme' => 'links',
+    '#links' => $links,
+    '#attributes' => array('id' => 'toolbar-menu', 'class' => array('drawer-links')),
+  );
+
+  // 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')),
+  );
+
+  return $build;
+}
+
+/**
+ * @todo.
+ *
+ * @return array
+ *   @todo.
+ */
+function toolbar_prototype_fill_drawer() {
+  $drawer = array();
+
+  // Created the content drawer.
+  $item = menu_get_item('node/add');
+  $content = system_admin_menu_block($item);
+  $drawer['content-drawer'] = array(
+    '#theme' => 'toolbar_prototype_drawer_section',
+    '#attributes' => array('id' => 'content-drawer'),
+    '#paths' => array(
+      'admin/content',
+      'node/add',
+    ),
+  );
+  $drawer['content-drawer']['add'] = array(
+    '#theme' => 'links',
+    '#links' => $content,
+    '#attributes' => array('class' => array('toolbar-add')),
+  );
+
+  $drawer['content-drawer']['list'] =  array(
+    '#theme' => 'links',
+    '#links' => array(
+      'content' => menu_get_item('admin/content'),
+      'comments' => menu_get_item('admin/content/comment'),
+      'media' => menu_get_item('admin/content/media'),
+    ),
+    '#attributes' => array('class' => array('toolbar-list')),
+  );
+
+  // Create the people drawer
+  $drawer['people-drawer'] = array(
+    '#theme' => 'toolbar_prototype_drawer_section',
+    '#attributes' => array('id' => 'people-drawer'),
+    '#paths' => array(
+      'admin/people',
+    ),
+  );
+
+  // See DG-1352.  Only allow invite or create new users for admin, not both.
+  $add_user_path = (scarecrow_force_openid() ? 'admin/people/invite' : 'admin/people/create');
+  $drawer['people-drawer']['people'] = array(
+    '#theme' => 'links',
+    '#links' => array(
+      'people' => menu_get_item($add_user_path),
+    ),
+    '#attributes' => array('class' => array('toolbar-add')),
+  );
+  $drawer['people-drawer']['permissions'] = array(
+    '#theme' => 'links',
+    '#links' => array(
+      'permissions' => menu_get_item('admin/people/permissions'),
+      'roles' => menu_get_item('admin/people/permissions/roles'),
+    ),
+    '#attributes' => array('class' => array('toolbar-gear')),
+  );
+  $drawer['people-drawer']['list'] = array(
+    '#theme' => 'links',
+    '#links' => array(
+      'people' => menu_get_item('admin/people'),
+    ),
+    '#attributes' => array('class' => array('toolbar-list')),
+  );
+
+  // Create the site drawer
+  $item = menu_get_item('admin/structure');
+  $content = system_admin_menu_block($item);
+
+  $drawer['site-drawer'] = array(
+    'structure' => array(
+      '#theme' => 'links',
+      '#links' => $content,
+      '#attributes' => array('class' => array('toolbar-gear')),
+    ),
+    'modules' => array(
+      '#theme' => 'links',
+      '#links' => array(
+        'modules' => menu_get_item('admin/modules'),
+        'settings' => menu_get_item('admin/config'),
+      ),
+//      '#attributes' => array('class' => 'toolbar-puzzle'),
+    ),
+//    'settings' => array(
+//      '#theme' => 'links',
+//      '#links' => array(
+//        'settings' => menu_get_item('admin/config'),
+//      ),
+//      '#attributes' => array('class' => 'toolbar-wrench'),
+//    ),
+    'reports' => array(
+      '#theme' => 'links',
+      '#links' => array(
+        'reports' => menu_get_item('admin/reports'),
+      ),
+      '#attributes' => array('class' => array('toolbar-graph')),
+    ),
+    '#theme' => 'toolbar_prototype_drawer_section',
+    '#attributes' => array('id' => 'site-drawer'),
+    '#paths' => array(
+      'admin/reports',
+      'admin/config',
+      'admin/modules',
+      'admin/structure',
+    ),
+  );
+
+  $trails = array();
+  foreach (menu_get_active_trail() as $trail) {
+    $trails[] = $trail['href'];
+  }
+
+  // Prepare the drawer links CSS classes.
+  $toolbar_drawer_classes = array(
+    'toolbar-drawer',
+    'clearfix',
+  );
+
+  foreach ($drawer as $key => $drawer_section) {
+    foreach ($drawer_section['#paths'] as $path) {
+      if (in_array($path, $trails)) {
+        $drawer[$key]['#attributes']['class'][] = 'active';
+        $toolbar_drawer_classes[] = 'active';
+      }
+    }
+  }
+
+  $drawer['toolbar_drawer_classes'] = implode(' ', $toolbar_drawer_classes);
+
+  return $drawer;
+}
+
+/**
+ * Returns HTML for the section of a toolbar drawer.
+ *
+ * @param array $variables
+ *   An associative array containing:
+ *   - element: The render element.
+ *
+ * @ingroup themeable
+ */
+function theme_toolbar_prototype_drawer_section($variables) {
+  $element = $variables['element'];
+  $element['#attributes']['class'][] = 'drawer';
+  $output = '<div' . drupal_attributes($element['#attributes']) . '>';
+  $output .= drupal_render_children($element);
+  $output .= '</div>';
+  return $output;
+}
+
+/**
+ * @todo.
+ *
+ * @param array $toolbar
+ *   @todo.
+ *
+ * @return bool
+ *   @todo.
+ */
+function toolbar_prototype_tooltips($toolbar) {
+  $tooltips = array('default' => t('This is your administrative toolbar'));
+  toolbar_prototype_gather_tooltips($toolbar, $tooltips);
+  $settings = array('toolbar' => array('tooltips' => $tooltips));
+
+  drupal_add_js($settings, 'setting');
+  return TRUE;
+}
+
+/**
+ * @todo.
+ *
+ * @param array $parent
+ *   @todo.
+ * @param array $settings
+ *   @todo.
+ */
+function toolbar_prototype_gather_tooltips($parent, &$settings) {
+  $tooltips = array();
+  foreach (element_children($parent) as $child_key) {
+    if (isset($parent[$child_key]['#links'])) {
+      foreach ($parent[$child_key]['#links'] as $key => $link) {
+        $path = isset($link['path']) ? url($link['path']) : 'href' . url($link['href']);
+        $settings[$path] = $link['description'];
+      }
+    }
+    toolbar_prototype_gather_tooltips($parent[$child_key], $settings);
+  }
+}
diff --git a/modules/toolbar_prototype/toolbar_prototype.tpl.php b/modules/toolbar_prototype/toolbar_prototype.tpl.php
new file mode 100644
index 0000000..50577ab
--- /dev/null
+++ b/modules/toolbar_prototype/toolbar_prototype.tpl.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @file
+ * Default template for admin toolbar.
+ *
+ * Available variables:
+ * - $classes: String of classes that can be used to style contextually through
+ *   CSS. It can be manipulated through the variable $classes_array from
+ *   preprocess functions. The default value has the following:
+ *   - 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.
+ *
+ * Other variables:
+ * - $classes_array: Array of html class attribute values. It is flattened
+ *   into a string within the variable $classes.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_toolbar()
+ */
+?>
+<div id="toolbar" class="<?php print $classes; ?> clearfix">
+  <div class="toolbar-menu clearfix">
+    <div class="toolbar-left">
+      <?php print render($toolbar['toolbar_left']); ?>
+    </div>
+    <div class="toolbar-right">
+      <?php print render($toolbar['toolbar_right']); ?>
+    </div>
+  </div>
+
+  <?php print render($toolbar['toolbar_toggle']); ?>
+
+  <div class="<?php echo $toolbar['toolbar_drawer']['toolbar_drawer_classes']; ?>">
+    <?php print render($toolbar['toolbar_drawer']); ?>
+  </div>
+
+  <?php if (isset($toolbar['tooltips'])): ?>
+  <div class="toolbar-tooltips"></div>
+  <?php endif; ?>
+
+</div>
