diff --git a/nodehierarchy.module b/nodehierarchy.module
index 9dd6800..547aa36 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) {
@@ -573,6 +572,7 @@ function nodehierarchy_nodehierarchy_node_form($node) {
  */
 function nodehierarchy_node_form_add_parent($form, &$form_state) {
   $node = node_form_submit_build_node($form, $form_state);
+  $form_state['rebuild'] = TRUE;
   $form_state['nodehierarchy_expanded'] = TRUE;
 }
 
@@ -682,7 +682,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')),
     );
@@ -731,21 +731,18 @@ function _nodehierarchy_save_node(&$node) {
   }
 
   // Update all of the pre-existing or default parents.
-  for ($i = 0; $i < count($node->nodehierarchy_menu_links); $i++) {
+  for ($i = 0; $i < count($node->nodehierarchy_menu_links) -1; $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 (isset($node->nodehierarchy_menu_links[$i]['remove']) && $node->nodehierarchy_menu_links[$i]['remove'] == 1) {
       // 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.
