diff --git a/prev_next.module b/prev_next.module
index 0945540..f78f5b7 100644
--- a/prev_next.module
+++ b/prev_next.module
@@ -255,7 +255,7 @@ function _prev_next_add($nid) {
                                     array(':value' => $criteria_value, ':nid' => $nid))->fetchField();
       }
       else {
-        $prev_nid = db_query_range("SELECT nid
+        $next_nid = db_query_range("SELECT nid
                                     FROM {node}
                                     $join
                                     WHERE nid > :nid
@@ -263,7 +263,7 @@ function _prev_next_add($nid) {
                                     $cond
                                     ORDER BY nid ASC", 0, 1,
                                     array(':nid' => $nid))->fetchField();
-        $next_nid = db_query_range("SELECT nid
+        $prev_nid = db_query_range("SELECT nid
                                     FROM {node}
                                     $join
                                     WHERE nid < :nid
@@ -303,6 +303,23 @@ function _prev_next_modify($nid) {
   _prev_next_modify_pointing_nodes($nid);
   // Then update this one
   _prev_next_add($nid);
+
+  $prev = db_query("SELECT prev_nid
+                    FROM {prev_next_node}
+                    WHERE nid = :nid",
+                    array(':nid' => $nid))->fetchField();
+  if ($prev) {
+    _prev_next_add($prev);
+  }
+
+  $next = db_query("SELECT next_nid
+                    FROM {prev_next_node}
+                    WHERE nid = :nid",
+                    array(':nid' => $nid))->fetchField();
+  if ($next) {
+    _prev_next_add($next);
+  }
+
 }
 
 /**
@@ -339,8 +356,7 @@ function _prev_next_modify_pointing_nodes($nid) {
                     FROM {prev_next_node}
                     WHERE next_nid = :next_nid",
                     array(':next_nid' => $nid))->fetchField();
-  //if ($next) _prev_next_add($next);
-  if ($next) _prev_next_add($nid);
+  if ($next) _prev_next_add($next);
 }
 
 /**
@@ -356,7 +372,14 @@ function prev_next_node_insert($node) {
  */
 function prev_next_node_update($node) {
   $types = _prev_next_node_types();
-  if (in_array($node->type, $types)) _prev_next_modify($node->nid);
+  if (in_array($node->type, $types) || sizeof($types) == 0) {
+    if ($node->status == 0) {
+      _prev_next_remove($node->nid);
+    }
+    else {
+      _prev_next_modify($node->nid);
+    }
+  }
 }
 
 /**
