diff --git a/includes/node.inc b/includes/node.inc
index d7499253e536467a82c5ac0cd1bd977bbb8a5f65..b602e2afc189f7c607d47ae7561e1138efe463ab 100644
--- a/includes/node.inc
+++ b/includes/node.inc
@@ -123,7 +123,7 @@ function node_load($conditions) {
 
 function node_save($node, $filter) {
 
-  $fields = array("nid", "uid", "type", "title", "teaser", "body", "revisions", "status", "comment", "promote", "moderate", "created", "changed");
+  $fields = array("nid", "uid", "type", "title", "teaser", "body", "revisions", "score", "status", "comment", "promote", "moderate", "created", "changed", "users", "votes");
 
   foreach ($filter as $key => $value) {
     /*
@@ -186,8 +186,6 @@ function node_save($node, $filter) {
 
     // call the node specific callback (if any):
     module_invoke($node->type, "insert", $node);
-
-    watchdog("special", "node: added '$node->title'");
   }
   else {
 
@@ -211,7 +209,6 @@ function node_save($node, $filter) {
     // call the node specific callback (if any):
     module_invoke($node->type, "update", $node);
 
-    watchdog("special", "node: updated '$node->title'");
   }
 
   /*
@@ -238,6 +235,11 @@ function node_view($node, $main = 0) {
     node_invoke($node, "view", $main);
   }
   else {
+
+    /*
+    ** Default behavior:
+    */
+
     $theme->node($node, $main);
   }
 }
diff --git a/modules/book.module b/modules/book.module
index 6b24f3ec432108e241fedf158ff4d50109b58481..320f1f88f9017d03cb6ae46534f59e38d5af2cc3 100644
--- a/modules/book.module
+++ b/modules/book.module
@@ -10,9 +10,17 @@ function book_node($field) {
 }
 
 function book_access($op, $node) {
+  global $user;
 
   if ($op == "view") {
-    return ($node->nid && $node->status && !$node->moderate);
+    /*
+    ** Everyone can access all published book pages whether these pages
+    ** are still waiting for approval or not.  We might not always want
+    ** to display pages that are waiting for approval, but we take care
+    ** of that problem in the book_view() function.
+    */
+
+    return $node->status;
   }
 
   if  ($op == "create") {
@@ -22,12 +30,13 @@ function book_access($op, $node) {
   if ($op == "update") {
 
     /*
-    ** Everyone can upate a book page if the "create new revision"-bit
-    ** is set: that is, only updates that don't overwrite the previous
-    ** conent will be allowed.
+    ** Everyone can upate a book page if there are no suggested updates
+    ** of that page waiting for approval and as long as the "create new
+    ** revision"-bit is set; that is, only updates that don't overwrite
+    ** the current or pending information are allowed.
     */
 
-    return $node->revision;
+    return !$node->moderate && $node->revision;
   }
 }
 
@@ -40,7 +49,7 @@ function book_link($type) {
 }
 
 function book_load($node) {
-  $book = db_fetch_object(db_query("SELECT parent, weight FROM book WHERE nid = '$node->nid'"));
+  $book = db_fetch_object(db_query("SELECT parent, weight, revision FROM book WHERE nid = '$node->nid'"));
   return $book;
 }
 
@@ -61,7 +70,7 @@ function book_save($node) {
     if (user_access("administer nodes")) {
       /*
       ** If a node administrator updates a book page, we don't create a
-      ** new revision unless explicitly specified.
+      ** new revision unless we are explicitly instructed to.
       */
 
       return array("parent", "weight");
@@ -69,8 +78,8 @@ function book_save($node) {
     else {
       /*
       ** If a regular user updates a book page, we always create a new
-      ** revision.  These new revisions are subject to moderation, and
-      ** are not or no longer being automatically promoted.
+      ** revision.  All new revisions have to be approved (moderation)
+      ** and are not promoted by derault.
       */
 
       return array("created" => time(), "moderate" => 1, "parent", "promote" => 0, "score" => 0, "status" => 1, "users" => "", "revisions", "votes" => 0, "weight");
@@ -106,7 +115,7 @@ function book_form($node, $help, $error) {
 
     $output .= form_hidden("revision", 1);
 
-    $node->uid = $user->uid; // passed by reference
+    $node->uid = $user->uid;    // $node is passed by reference
     $node->name = $user->name;
 
   }
@@ -124,7 +133,23 @@ function book_location($node, $nodes = array()) {
 }
 
 function book_view($node, $main = 0) {
-  global $theme;
+  global $theme, $mod;
+
+  /*
+  ** Always display the most recently approved revision of a node
+  ** unless we have to display it in the context of the moderation
+  ** queue.
+  */
+
+  if ($node->moderate && $mod != "queue") {
+    $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+  }
+
+  /*
+  ** Display the node.  If not displayed on the main page, we render
+  ** the node as a page in the book with extra links to the previous
+  ** and the next page.
+  */
 
   if ($main) {
     $theme->node($node, $main);
@@ -196,14 +221,28 @@ function book_toc($parent = "", $indent = "", $toc = array()) {
 function book_tree($parent = "", $depth = 0) {
 
   if ($depth < 3) {
-    // select all child nodes:
-    $result = db_query("SELECT n.*, b.* FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND b.parent = '$parent' ORDER BY b.weight, n.title");
+    /*
+    ** Select all child nodes and render them into a table of contents:
+    */
+
+    $result = db_query("SELECT n.nid FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND b.parent = '$parent' ORDER BY b.weight, n.title");
 
-    // render output:
-    while ($node = db_fetch_object($result)) {
+    while ($page = db_fetch_object($result)) {
+      // load the node:
+      $node = node_load(array("nid" => $page->nid));
+
+      // take the most recent approved revision:
+      if ($node->moderate) {
+        $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+      }
+
+      // output the content:
       $output .= "<li><a href=\"node.php?id=$node->nid\">". check_output($node->title) ."</a></li>";
+
+      // build the sub-tree of each child:
       $output .= book_tree($node->nid, $depth + 1);
     }
+
     $output = "<ul>$output</ul>";
   }
 
@@ -213,9 +252,18 @@ function book_tree($parent = "", $depth = 0) {
 function book_render() {
   global $theme;
 
-  $result = db_query("SELECT n.*, b.* FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE b.parent = 0 AND n.status = 1 ORDER BY b.weight");
+  $result = db_query("SELECT n.nid FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE b.parent = 0 AND n.status = 1 ORDER BY b.weight");
 
-  while ($node = db_fetch_object($result)) {
+  while ($page = db_fetch_object($result)) {
+    // load the node:
+    $node = node_load(array("nid" => $page->nid));
+
+    // take the most recent approved revision:
+    if ($node->moderate) {
+      $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+    }
+
+    // output the content:
     $output .= "<dt><a href=\"node.php?id=$node->nid\">". check_output($node->title) ."</a></dt><dd>". check_output($node->body, 1) ."<br /><br /></dd>";
   }
 
@@ -228,7 +276,6 @@ function book_page() {
   global $op, $id, $theme;
 
   if (user_access("access content")) {
-
     switch ($op) {
       case "feed":
         print book_export_html($id, $depth = 1);
@@ -245,24 +292,49 @@ function book_page() {
 }
 
 function book_export_html($id = "", $depth = 1) {
+  $result = db_query("SELECT n.nid FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND n.status = 1 AND n.nid = '". check_input($id) ."'");
 
-  $result = db_query("SELECT n.*, b.* FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND n.status = 1 AND n.nid = '". check_input($id) ."'");
+  while ($page = db_fetch_object($result)) {
+    // load the node:
+    $node = node_load(array("nid" => $page->nid));
 
-  while ($node = db_fetch_object($result)) {
+    // take the most recent approved revision:
+    if ($node->moderate) {
+      $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+    }
+
+    // output the content:
     $output .= "<h$depth>". check_output($node->title) ."</h$depth>";
-    if ($node->body) $output .= "<blockquote>". check_output($node->body, 1) ."</blockquote>";
+
+    if ($node->body) {
+      $output .= "<blockquote>". check_output($node->body, 1) ."</blockquote>";
+    }
   }
+
   $output .= book_export_html_recursive($id, $depth);
 
   return $output;
 }
 
 function book_export_html_recursive($parent = "", $depth = 1) {
-  $result = db_query("SELECT n.*, b.* FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND n.status = 1 AND b.parent = '$parent' ORDER BY b.weight");
+  $result = db_query("SELECT n.nid FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND n.status = 1 AND b.parent = '$parent' ORDER BY b.weight");
 
-  while ($node = db_fetch_object($result)) {
+  while ($page = db_fetch_object($result)) {
+    // load the node:
+    $node = node_load(array("nid" => $page->nid));
+
+    // take the most recent approved revision:
+    if ($node->moderate) {
+      $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+    }
+
+    // output the content:
     $output .= "<h$depth>". check_output($node->title) ."</h$depth>";
-    if ($node->body) $output .= "<blockquote>". check_output($node->body, 1) ."</blockquote>";
+
+    if ($node->body) {
+      $output .= "<blockquote>". check_output($node->body, 1) ."</blockquote>";
+    }
+
     $output .= book_export_html_recursive($node->nid, $depth + 1);
   }
 
diff --git a/modules/book/book.module b/modules/book/book.module
index 6b24f3ec432108e241fedf158ff4d50109b58481..320f1f88f9017d03cb6ae46534f59e38d5af2cc3 100644
--- a/modules/book/book.module
+++ b/modules/book/book.module
@@ -10,9 +10,17 @@ function book_node($field) {
 }
 
 function book_access($op, $node) {
+  global $user;
 
   if ($op == "view") {
-    return ($node->nid && $node->status && !$node->moderate);
+    /*
+    ** Everyone can access all published book pages whether these pages
+    ** are still waiting for approval or not.  We might not always want
+    ** to display pages that are waiting for approval, but we take care
+    ** of that problem in the book_view() function.
+    */
+
+    return $node->status;
   }
 
   if  ($op == "create") {
@@ -22,12 +30,13 @@ function book_access($op, $node) {
   if ($op == "update") {
 
     /*
-    ** Everyone can upate a book page if the "create new revision"-bit
-    ** is set: that is, only updates that don't overwrite the previous
-    ** conent will be allowed.
+    ** Everyone can upate a book page if there are no suggested updates
+    ** of that page waiting for approval and as long as the "create new
+    ** revision"-bit is set; that is, only updates that don't overwrite
+    ** the current or pending information are allowed.
     */
 
-    return $node->revision;
+    return !$node->moderate && $node->revision;
   }
 }
 
@@ -40,7 +49,7 @@ function book_link($type) {
 }
 
 function book_load($node) {
-  $book = db_fetch_object(db_query("SELECT parent, weight FROM book WHERE nid = '$node->nid'"));
+  $book = db_fetch_object(db_query("SELECT parent, weight, revision FROM book WHERE nid = '$node->nid'"));
   return $book;
 }
 
@@ -61,7 +70,7 @@ function book_save($node) {
     if (user_access("administer nodes")) {
       /*
       ** If a node administrator updates a book page, we don't create a
-      ** new revision unless explicitly specified.
+      ** new revision unless we are explicitly instructed to.
       */
 
       return array("parent", "weight");
@@ -69,8 +78,8 @@ function book_save($node) {
     else {
       /*
       ** If a regular user updates a book page, we always create a new
-      ** revision.  These new revisions are subject to moderation, and
-      ** are not or no longer being automatically promoted.
+      ** revision.  All new revisions have to be approved (moderation)
+      ** and are not promoted by derault.
       */
 
       return array("created" => time(), "moderate" => 1, "parent", "promote" => 0, "score" => 0, "status" => 1, "users" => "", "revisions", "votes" => 0, "weight");
@@ -106,7 +115,7 @@ function book_form($node, $help, $error) {
 
     $output .= form_hidden("revision", 1);
 
-    $node->uid = $user->uid; // passed by reference
+    $node->uid = $user->uid;    // $node is passed by reference
     $node->name = $user->name;
 
   }
@@ -124,7 +133,23 @@ function book_location($node, $nodes = array()) {
 }
 
 function book_view($node, $main = 0) {
-  global $theme;
+  global $theme, $mod;
+
+  /*
+  ** Always display the most recently approved revision of a node
+  ** unless we have to display it in the context of the moderation
+  ** queue.
+  */
+
+  if ($node->moderate && $mod != "queue") {
+    $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+  }
+
+  /*
+  ** Display the node.  If not displayed on the main page, we render
+  ** the node as a page in the book with extra links to the previous
+  ** and the next page.
+  */
 
   if ($main) {
     $theme->node($node, $main);
@@ -196,14 +221,28 @@ function book_toc($parent = "", $indent = "", $toc = array()) {
 function book_tree($parent = "", $depth = 0) {
 
   if ($depth < 3) {
-    // select all child nodes:
-    $result = db_query("SELECT n.*, b.* FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND b.parent = '$parent' ORDER BY b.weight, n.title");
+    /*
+    ** Select all child nodes and render them into a table of contents:
+    */
+
+    $result = db_query("SELECT n.nid FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND b.parent = '$parent' ORDER BY b.weight, n.title");
 
-    // render output:
-    while ($node = db_fetch_object($result)) {
+    while ($page = db_fetch_object($result)) {
+      // load the node:
+      $node = node_load(array("nid" => $page->nid));
+
+      // take the most recent approved revision:
+      if ($node->moderate) {
+        $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+      }
+
+      // output the content:
       $output .= "<li><a href=\"node.php?id=$node->nid\">". check_output($node->title) ."</a></li>";
+
+      // build the sub-tree of each child:
       $output .= book_tree($node->nid, $depth + 1);
     }
+
     $output = "<ul>$output</ul>";
   }
 
@@ -213,9 +252,18 @@ function book_tree($parent = "", $depth = 0) {
 function book_render() {
   global $theme;
 
-  $result = db_query("SELECT n.*, b.* FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE b.parent = 0 AND n.status = 1 ORDER BY b.weight");
+  $result = db_query("SELECT n.nid FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE b.parent = 0 AND n.status = 1 ORDER BY b.weight");
 
-  while ($node = db_fetch_object($result)) {
+  while ($page = db_fetch_object($result)) {
+    // load the node:
+    $node = node_load(array("nid" => $page->nid));
+
+    // take the most recent approved revision:
+    if ($node->moderate) {
+      $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+    }
+
+    // output the content:
     $output .= "<dt><a href=\"node.php?id=$node->nid\">". check_output($node->title) ."</a></dt><dd>". check_output($node->body, 1) ."<br /><br /></dd>";
   }
 
@@ -228,7 +276,6 @@ function book_page() {
   global $op, $id, $theme;
 
   if (user_access("access content")) {
-
     switch ($op) {
       case "feed":
         print book_export_html($id, $depth = 1);
@@ -245,24 +292,49 @@ function book_page() {
 }
 
 function book_export_html($id = "", $depth = 1) {
+  $result = db_query("SELECT n.nid FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND n.status = 1 AND n.nid = '". check_input($id) ."'");
 
-  $result = db_query("SELECT n.*, b.* FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND n.status = 1 AND n.nid = '". check_input($id) ."'");
+  while ($page = db_fetch_object($result)) {
+    // load the node:
+    $node = node_load(array("nid" => $page->nid));
 
-  while ($node = db_fetch_object($result)) {
+    // take the most recent approved revision:
+    if ($node->moderate) {
+      $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+    }
+
+    // output the content:
     $output .= "<h$depth>". check_output($node->title) ."</h$depth>";
-    if ($node->body) $output .= "<blockquote>". check_output($node->body, 1) ."</blockquote>";
+
+    if ($node->body) {
+      $output .= "<blockquote>". check_output($node->body, 1) ."</blockquote>";
+    }
   }
+
   $output .= book_export_html_recursive($id, $depth);
 
   return $output;
 }
 
 function book_export_html_recursive($parent = "", $depth = 1) {
-  $result = db_query("SELECT n.*, b.* FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND n.status = 1 AND b.parent = '$parent' ORDER BY b.weight");
+  $result = db_query("SELECT n.nid FROM node n LEFT JOIN book b ON n.nid = b.nid WHERE n.type = 'book' AND n.status = 1 AND b.parent = '$parent' ORDER BY b.weight");
 
-  while ($node = db_fetch_object($result)) {
+  while ($page = db_fetch_object($result)) {
+    // load the node:
+    $node = node_load(array("nid" => $page->nid));
+
+    // take the most recent approved revision:
+    if ($node->moderate) {
+      $node = $node->revisions[sizeof($node->revisions) - 1]["node"];
+    }
+
+    // output the content:
     $output .= "<h$depth>". check_output($node->title) ."</h$depth>";
-    if ($node->body) $output .= "<blockquote>". check_output($node->body, 1) ."</blockquote>";
+
+    if ($node->body) {
+      $output .= "<blockquote>". check_output($node->body, 1) ."</blockquote>";
+    }
+
     $output .= book_export_html_recursive($node->nid, $depth + 1);
   }
 
diff --git a/modules/node.module b/modules/node.module
index bc1697b7b595cb8ccc19ca6511d62b469a4b273a..26d40dc085e85a65a0267b366419c499c4653e68 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -237,6 +237,11 @@ function node_admin_nodes() {
 function node_revision_create($node) {
   global $user;
 
+  /*
+  ** 'revision' is the name of the field used to indicicate that we
+  ** have to create a new revision of a node.
+  */
+
   if ($node->nid && $node->revision) {
     $prev = node_load(array("nid" => $node->nid));
     $node->revisions = $prev->revisions;
@@ -290,14 +295,21 @@ function node_revision_rollback($nid, $revision) {
 
   node_save($rev, $filter);
 
-  watchdog("message", "node: rolled-back '$node->title'");
+  watchdog("special", "node: rollbacked to revision #$revision of '$node->title'");
 }
 
 function node_revision_delete($nid, $revision) {
   $node = node_load(array("nid" => $nid));
 
   unset($node->revisions[$revision]);
+
   node_save($node, array("nid", "revisions"));
+
+  watchdog("special", "node: removed revision #$revision of '$node->title'");
+}
+
+function node_revision_previous($node) {
+  return end(array_keys($node->revisions));
 }
 
 function node_admin() {
@@ -670,6 +682,7 @@ function node_submit($node) {
 
       node_save($node, array_merge($fields, module_invoke($node->type, "save", $node)));
 
+      watchdog("special", "node: updated '$node->title'");
       $output = t("The node has been updated.");
     }
     else {
@@ -701,6 +714,7 @@ function node_submit($node) {
 
       node_save($node, array_merge($fields, module_invoke($node->type, "save", $node)));
 
+      watchdog("special", "node: added '$node->title'");
       $output = t("Thanks for your submission.");
     }
     else {
diff --git a/modules/node/node.module b/modules/node/node.module
index bc1697b7b595cb8ccc19ca6511d62b469a4b273a..26d40dc085e85a65a0267b366419c499c4653e68 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -237,6 +237,11 @@ function node_admin_nodes() {
 function node_revision_create($node) {
   global $user;
 
+  /*
+  ** 'revision' is the name of the field used to indicicate that we
+  ** have to create a new revision of a node.
+  */
+
   if ($node->nid && $node->revision) {
     $prev = node_load(array("nid" => $node->nid));
     $node->revisions = $prev->revisions;
@@ -290,14 +295,21 @@ function node_revision_rollback($nid, $revision) {
 
   node_save($rev, $filter);
 
-  watchdog("message", "node: rolled-back '$node->title'");
+  watchdog("special", "node: rollbacked to revision #$revision of '$node->title'");
 }
 
 function node_revision_delete($nid, $revision) {
   $node = node_load(array("nid" => $nid));
 
   unset($node->revisions[$revision]);
+
   node_save($node, array("nid", "revisions"));
+
+  watchdog("special", "node: removed revision #$revision of '$node->title'");
+}
+
+function node_revision_previous($node) {
+  return end(array_keys($node->revisions));
 }
 
 function node_admin() {
@@ -670,6 +682,7 @@ function node_submit($node) {
 
       node_save($node, array_merge($fields, module_invoke($node->type, "save", $node)));
 
+      watchdog("special", "node: updated '$node->title'");
       $output = t("The node has been updated.");
     }
     else {
@@ -701,6 +714,7 @@ function node_submit($node) {
 
       node_save($node, array_merge($fields, module_invoke($node->type, "save", $node)));
 
+      watchdog("special", "node: added '$node->title'");
       $output = t("Thanks for your submission.");
     }
     else {
diff --git a/modules/queue.module b/modules/queue.module
index 8dd4d2a5a2c4dc28f3850aacb3c8b76c7231b9ac..ea1ba0b11bea922f5d1004248d307140508ebf12 100644
--- a/modules/queue.module
+++ b/modules/queue.module
@@ -45,17 +45,29 @@ function queue_vote($id, $vote) {
 
       $node = node_load(array(nid => $id, type => $node->type));
 
-      if (variable_get($node->type ."_post", 4) <= $node->score) {
+      if (variable_get($node->type ."_post", 3) <= $node->score) {
         node_save($node, array("nid", "status" => 1, "moderate" => 0));
-        watchdog("special", "node: posted '$node->title' - moderation");
+        watchdog("special", "moderation: posted '$node->title'");
       }
       else if (variable_get($node->type ."_dump", -2) >= $node->score) {
-        node_save($node, array("nid", "status" => 1, "moderate" => 0));
-        watchdog("special", "node: dumped '$node->title' - moderation");
+        if ($node->revisions) {
+          node_revision_rollback($node->nid, node_revision_previous($node));
+          watchdog("special", "moderation: dumped '$node->title' (rollback)");
+        }
+        else {
+          node_save($node, array("nid", "status" => 0, "moderate" => 0));
+          watchdog("special", "moderation: dumped '$node->title'");
+        }
       }
-      else if (variable_get($node->type ."_expire", 8) <= $node->votes) {
-        node_save($node, array("nid", "status" => 0, "moderate" => 0));
-        watchdog("special", "node: expired '$node->title' - moderation");
+      else if (variable_get($node->type ."_expire", 6) <= $node->votes) {
+        if ($node->revisions) {
+          node_revision_rollback($node->nid,  node_revision_previous($node));
+          watchdog("special", "moderation: expired '$node->title' (rollback)");
+        }
+        else {
+          node_save($node, array("nid", "status" => 0, "moderate" => 0));
+          watchdog("special", "moderation: expired '$node->title'");
+        }
       }
     }
   }
diff --git a/updates/3.00-to-x.xx.mysql b/updates/3.00-to-x.xx.mysql
index 1944b61bc2b93553caf2bd108e89157b6f5e0e30..0495ff5c9bab840001e9888181b608b169d339e8 100644
--- a/updates/3.00-to-x.xx.mysql
+++ b/updates/3.00-to-x.xx.mysql
@@ -145,6 +145,11 @@ ALTER TABLE users CHANGE session sid varchar(32) DEFAULT '' NOT NULL;
 # 02/11/01:
 ALTER TABLE node ADD revisions TEXT DEFAULT '' NOT NULL;
 
+# 04/11/01:
+ALTER TABLE book ADD revision int(2) DEFAULT '1' NOT NULL;
+ALTER TABLE book DROP log;
+ALTER TABLE book DROP pid;
+
 #
 # Run the third part of updates/3.00-to-x.xx.php:
 #   visit http://www.yoursite.com/3.00-to-x.xx.php?part=3
diff --git a/updates/3.00-to-x.xx.php b/updates/3.00-to-x.xx.php
index 366dfda517d5b756b2b9a29e04eca44ac076e9f5..04ccfd0bc351425b9eba6bafd5c7d5ed833c18d7 100644
--- a/updates/3.00-to-x.xx.php
+++ b/updates/3.00-to-x.xx.php
@@ -48,7 +48,7 @@
   while ($object = db_fetch_object($result)) {
 
     $node = node_load(array("nid" => $object->nid));
- 
+
     $body = db_result(db_query("SELECT body_old FROM $node->type WHERE nid = $node->nid"), 0);
 
     switch ($node->type) {
@@ -63,7 +63,7 @@
       default:
         print "unknown node $node->nid '$node->title' ($node->type)<br />";
     }
- 
+
     unset($node);
     unset($body);
   }