diff --git a/modules/menu.workbench_access.inc b/modules/menu.workbench_access.inc
index 8dbb438..bc631e7 100644
--- a/modules/menu.workbench_access.inc
+++ b/modules/menu.workbench_access.inc
@@ -112,25 +112,27 @@ function menu_workbench_access_tree($info, $keys) {
     }
   }
   foreach ($items as $name => $mlid) {
+    $tree = array();
     $data = menu_load($name);
-    $tree[$name] = array(
-      'access_id' => $data['menu_name'],
-      'access_type_id' => $data['menu_name'],
-      'name' => $data['title'],
-      'description' => $data['description'],
-      'weight' => 0,
-      'depth' => 0,
-      'parent' => 0,
-    );
     $menu = menu_tree_all_data($name);
     foreach ($menu as $link) {
       // Ensure that we start at the top of the current request.
-      if ($mlid > 0 && $link['link']['mlid'] == $mlid) {
-        $tree = array();
-        _workbench_access_menu_build_tree($tree, $link);
+      // Menu root as section
+      if ($mlid == 0) {
+        $tree[$name] = array(
+          'access_id' => $data['menu_name'],
+          'access_type_id' => $data['menu_name'],
+          'name' => $data['title'],
+          'description' => $data['description'],
+          'weight' => 0,
+          'depth' => 0,
+          'parent' => 0,
+        );
+        _workbench_access_menu_build_tree($tree, $link, TRUE);
       }
-      elseif ($mlid == 0) {
-        _workbench_access_menu_build_tree($tree, $link);
+      // Menu item as section
+      else {
+        _workbench_access_menu_build_tree($tree, $link, $mlid);
       }
     }
   }
@@ -148,20 +150,23 @@ function menu_workbench_access_tree($info, $keys) {
  * @param $link
  *   The menu link being inspected.
  */
-function _workbench_access_menu_build_tree(&$tree, $link) {
+function _workbench_access_menu_build_tree(&$tree, $link, $mlid) {
   $item = (object) $link['link'];
-  $tree[$item->mlid] = array(
-    'access_id' => $item->mlid,
-    'access_type_id' => $item->menu_name,
-    'name' => $item->link_title,
-    'description' => isset($item->options['attributes']['title']) ? $item->options['attributes']['title'] : '',
-    'weight' => $item->weight,
-    'depth' => $item->depth,
-    'parent' => ($item->plid == 0) ? $item->menu_name : $item->plid,
-  );
+  if ($item->mlid == $mlid || $mlid === TRUE) {
+    $tree[$item->mlid] = array(
+      'access_id' => $item->mlid,
+      'access_type_id' => $item->menu_name,
+      'name' => $item->link_title,
+      'description' => isset($item->options['attributes']['title']) ? $item->options['attributes']['title'] : '',
+      'weight' => $item->weight,
+      'depth' => $item->depth,
+      'parent' => ($item->plid == 0) ? $item->menu_name : $item->plid,
+    );
+    $mlid = TRUE;
+  }
   if (!empty($link['below'])) {
     foreach ($link['below'] as $below) {
-      _workbench_access_menu_build_tree($tree, $below);
+      _workbench_access_menu_build_tree($tree, $below, $mlid);
     }
   }
 }
