diff --git a/core/modules/menu/menu.admin.inc b/core/modules/menu/menu.admin.inc
index 9ac32e2..0de6e91 100644
--- a/core/modules/menu/menu.admin.inc
+++ b/core/modules/menu/menu.admin.inc
@@ -67,8 +67,6 @@ function menu_overview_form($form, &$form_state) {
 
   // Ensure that menu_overview_form_submit() knows the parents of this form
   // section.
-  $form['#tree'] = TRUE;
-  $form['#theme'] = 'menu_overview_form';
   $form_state += array('menu_overview_form_parents' => array());
 
   $form['#attached']['css'] = array(drupal_get_path('module', 'menu') . '/menu.admin.css');
@@ -108,8 +106,70 @@ function menu_overview_form($form, &$form_state) {
       'title' => t('Add link'),
     ),
   );
-  $form = array_merge($form, _menu_overview_tree_form($tree, $delta));
-  $form['#empty_text'] = t('There are no menu links yet. <a href="@link">Add link</a>.', array('@link' => url('admin/structure/menu/manage/' . $form_state['menu']->id() .'/add')));
+
+  $form['links'] = array(
+    '#type' => 'table',
+    '#attributes' => array('id' => 'menu-overview'),
+    '#header' => array(
+      t('Menu link'),
+      array('data' => t('Enabled'), 'class' => array('checkbox')),
+      t('Weight'),
+      t('Operations'),
+    ),
+    '#empty' => t('There are no menu links yet. <a href="@link">Add link</a>.', array('@link' => url('admin/structure/menu/manage/' . $form_state['menu']->id() .'/add'))),
+    '#tabledrag' => array(
+      array('match', 'parent', 'menu-plid', 'menu-plid', 'menu-mlid', TRUE, MENU_MAX_DEPTH - 1),
+      array('order', 'sibling', 'menu-weight'),
+    ),
+  );
+
+  $links = _menu_overview_tree_form($tree, $delta);
+  foreach (element_children($links) as $mlid) {
+    $element = $links[$mlid];
+
+    // Add special classes to be used for tabledrag.js.
+    $element['plid']['#attributes']['class'] = array('menu-plid');
+    $element['mlid']['#attributes']['class'] = array('menu-mlid');
+    $element['weight']['#attributes']['class'] = array('menu-weight');
+
+    $form['links'][$mlid]['#attributes']['class'][] = 'draggable';
+    $form['links'][$mlid]['#weight'] =  $element['#item']->get('weight');
+
+    $form['links'][$mlid]['title'] = array(
+      array(
+        '#theme' => 'indentation',
+        '#size' => ($element['#item']->depth - 1),
+      ),
+      $element['title'],
+    );
+
+    $form['links'][$mlid]['hidden'] = array(
+      'data' => $element['hidden'],
+      '#attributes' => array('class' => array('checkbox', 'menu-enabled')),
+    );
+
+
+    // @todo HELP HERE!
+    // dpm($element);
+
+    //Clean: links[mlid:6][weight]
+    //Dirty: links[mlid:5][weight][0]
+
+    //Clean: links[mlid:6][plid]
+    //Dirty: links[mlid:5][weight][1]
+
+    //Clean: links[mlid:6][mlid]
+    //Dirty: links[mlid:5][weight][2]
+
+    $form['links'][$mlid]['weight'] = array(
+      'weight' => $element['weight'],
+      'plid' => $element['plid'],
+      'mlid' => $element['mlid'],
+    );
+
+    // Operations (dropbutton) column.
+    $form['links'][$mlid]['operations'] = $element['operations'];
+  }
 
   return $form;
 }
@@ -254,62 +314,6 @@ function menu_overview_form_submit($complete_form, &$form_state) {
 }
 
 /**
- * Returns HTML for the menu overview form into a table.
- *
- * @param $variables
- *   An associative array containing:
- *   - form: A render element representing the form.
- *
- * @ingroup themeable
- */
-function theme_menu_overview_form($variables) {
-  $form = $variables['form'];
-
-  drupal_add_tabledrag('menu-overview', 'match', 'parent', 'menu-plid', 'menu-plid', 'menu-mlid', TRUE, MENU_MAX_DEPTH - 1);
-  drupal_add_tabledrag('menu-overview', 'order', 'sibling', 'menu-weight');
-
-  $header = array(
-    t('Menu link'),
-    array('data' => t('Enabled'), 'class' => array('checkbox')),
-    t('Weight'),
-    t('Operations'),
-  );
-
-  $rows = array();
-  foreach (element_children($form) as $mlid) {
-    if (isset($form[$mlid]['hidden'])) {
-      $element = &$form[$mlid];
-
-      // Add special classes to be used for tabledrag.js.
-      $element['plid']['#attributes']['class'] = array('menu-plid');
-      $element['mlid']['#attributes']['class'] = array('menu-mlid');
-      $element['weight']['#attributes']['class'] = array('menu-weight');
-
-      // Change the parent field to a hidden. This allows any value but hides the field.
-      $element['plid']['#type'] = 'hidden';
-
-      $row = array();
-      $row[] = theme('indentation', array('size' => $element['#item']['depth'] - 1)) . drupal_render($element['title']);
-      $row[] = array('data' => drupal_render($element['hidden']), 'class' => array('checkbox', 'menu-enabled'));
-      $row[] = drupal_render($element['weight']) . drupal_render($element['plid']) . drupal_render($element['mlid']);
-      $row[] = drupal_render($element['operations']);
-
-      $row = array_merge(array('data' => $row), $element['#attributes']);
-      $row['class'][] = 'draggable';
-      $rows[] = $row;
-    }
-  }
-  $output = '';
-  if (empty($rows)) {
-    $rows[] = array(array('data' => $form['#empty_text'], 'colspan' => '7'));
-  }
-  $output .= drupal_render($form['inline_actions']);
-  $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'menu-overview')));
-  $output .= drupal_render_children($form);
-  return $output;
-}
-
-/**
  * Menu callback; check access and get a confirm form for deletion of a custom menu.
  */
 function menu_delete_menu_page(Menu $menu) {
diff --git a/core/modules/menu/menu.module b/core/modules/menu/menu.module
index a4a6718..c8b8ebe 100644
--- a/core/modules/menu/menu.module
+++ b/core/modules/menu/menu.module
@@ -177,18 +177,6 @@ function menu_uri(Menu $menu) {
 }
 
 /**
- * Implements hook_theme().
- */
-function menu_theme() {
-  return array(
-    'menu_overview_form' => array(
-      'file' => 'menu.admin.inc',
-      'render element' => 'form',
-    ),
-  );
-}
-
-/**
  * Implements hook_enable().
  *
  * Add a link for each custom menu.
