diff --git a/nodehierarchy.module b/nodehierarchy.module
index 9dd6800..ea07b2a 100644
--- a/nodehierarchy.module
+++ b/nodehierarchy.module
@@ -540,7 +540,6 @@ function nodehierarchy_nodehierarchy_node_form($node) {
       $multiple = variable_get('nh_multiple_' . $node->type, 0);
 
       $count = 2;
-
       foreach ((array)$node->nodehierarchy_menu_links as $key => $menu_link) {
         $form['nodehierarchy_menu_links'][$key] = _nodehierarchy_node_parent_form_items($node, $key, $menu_link);
         if ($multiple && $key == 0) {
@@ -552,16 +551,20 @@ function nodehierarchy_nodehierarchy_node_form($node) {
         }
       }
       if ($multiple) {
-        $form['nodehierarchy_menu_links'][$key + 1] = _nodehierarchy_node_parent_form_items($node, $key + 1, _nodehierarchy_default_menu_link(isset($node->nid) ? $node->nid : NULL));
-        $form['nodehierarchy_menu_links'][$key + 1]['#title'] = t('Add a parent');
-        $form['nodehierarchy_menu_links'][$key + 1]['#collapsible'] =  $form['nodehierarchy_menu_links'][$key + 1]['#collapsed'] = TRUE;
-        $form['nodehierarchy_menu_links'][$key + 1]['add_another'] = array(
+        $form['add_more'] = array(
           '#type' => 'submit',
-          '#value' => t('Add'),
-          '#weight' => 10,
-          '#submit' => array('nodehierarchy_node_form_add_parent'),
+          '#name' => 'nodehierarchy_add_more',
+          '#value' => t('Add another item'),
+          '#attributes' => array('class' => array('field-add-more-submit')),
+          '#limit_validation_errors' => array(array('nodehierarchy_menu_links')),
+          '#submit' => array('nodehierarchy_add_more_submit'),
+//@todo add JS to not reload the whole form?
+//          '#ajax' => array(
+//            'callback' => 'field_add_more_js',
+//            'wrapper' => $wrapper_id,
+//            'effect' => 'fade',
+//          ),
         );
-        unset($form['nodehierarchy_menu_links'][$key + 1]['remove']);
       }
     }
   }
@@ -569,10 +572,13 @@ function nodehierarchy_nodehierarchy_node_form($node) {
 }
 
 /**
- * Submit the form after 'add parent' has been clicked. Don't save anything just rebuild the node and the new parent will show up as normal.
+ * Submit the form after 'add another item' has been clicked.
  */
-function nodehierarchy_node_form_add_parent($form, &$form_state) {
-  $node = node_form_submit_build_node($form, $form_state);
+function nodehierarchy_add_more_submit($form, &$form_state) {
+  // Add another empty nodehierarchy link to the node
+  $form_state['node']->nodehierarchy_menu_links[] =
+    _nodehierarchy_default_menu_link($form_state['node']->nid, 0, FALSE);
+  $form_state['rebuild'] = TRUE;
   $form_state['nodehierarchy_expanded'] = TRUE;
 }
 
@@ -682,7 +688,7 @@ function _nodehierarchy_node_parent_form_items($node, $key, $menu_link) {
     $item['remove'] = array(
       '#type' => 'checkbox',
       '#title' => t('Remove this parent'),
-      '#default_value' => isset($menu_link['remove']) ? $menu_link['remove'] : '',
+      '#default_value' => isset($menu_link['remove']) ? $menu_link['remove'] : '0',
       '#description' => t('Remove this parent from this node. This will not delete the parent node.'),
       '#attributes' => array('class' => array('nodehierarchy-parent-delete')),
     );
@@ -734,18 +740,15 @@ function _nodehierarchy_save_node(&$node) {
   for ($i = 0; $i < count($node->nodehierarchy_menu_links); $i++) {
     // Get the plid from the parent node id.
     $node->nodehierarchy_menu_links[$i]['plid'] = _nodehierarchy_get_node_mlid($node->nodehierarchy_menu_links[$i]['pnid'], TRUE);
-
     // Convert NULL to 0 to distinguish between a new menu item (null) and one with parent set to none (0).
     $node->nodehierarchy_menu_links[$i]['plid'] = $node->nodehierarchy_menu_links[$i]['plid'] ? $node->nodehierarchy_menu_links[$i]['plid'] : 0;
-
     // Mark the menu item to be removed if it is null (ie: not enabled and with a null parent).
     if (empty($node->nodehierarchy_menu_links[$i]['enabled']) && empty($node->nodehierarchy_menu_links[$i]['plid'])) {
       $node->nodehierarchy_menu_links[$i]['remove'] = TRUE;
     }
 
     // If the node type cannot be a parent, and has no parent itself, then do not save a link.
-    if (isset($node->nodehierarchy_menu_links[$i]['remove'])) {
-
+    if (!empty($node->nodehierarchy_menu_links[$i]['remove'])) {
       // We can only delete menu links that don't have children associated with them.
       if (!_nodehierarchy_get_children_count_plid($node->nodehierarchy_menu_links[$i]['mlid'])) {
         // Delete the the menu if it exists.
@@ -811,7 +814,7 @@ function nodehierarchy_nodehierarchy_default_parents(&$node) {
   $plid = NULL;
 
   if (nodehierarchy_node_can_be_child($node) || nodehierarchy_node_can_be_parent($node)) {
-    if (!isset($node->nodehierarchy_menu_links) || empty($node->nodehierarchy_menu_links)) {
+    if (empty($node->nodehierarchy_menu_links)) {
       // Should this menu item be enabled or not.
       $create_menu = variable_get('nh_createmenu_' . $node->type, 'optional_no');
       $enabled = ($create_menu == 'optional_yes' || $create_menu == 'always');
