diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index dcdeb4d..5f3c821 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -23968,7 +23968,43 @@ Formal for libdb.text:
 
 \end{chunk}
 
+\defun{purgeNewConstructorLines}{purgeNewConstructorLines}
+\calls{purgeNewConstructorLines}{screenLocalLine}
+\begin{chunk}{defun purgeNewConstructorLines}
+(defun |purgeNewConstructorLines| (lines conlist)
+ (loop for x in lines
+  when (null (|screenLocalLine| x conlist))
+  collect x))
+
+\end{chunk}
+
+;dbWriteLines(s, :options) ==
+;  pathname := IFCAR options or getTempPath 'source
+;  $outStream: local := MAKE_-OUTSTREAM pathname
+;  for x in s repeat writedb x
+;  SHUT $outStream
+;  pathname
+
+\defun{dbWriteLines}{dbWriteLines}
+\calls{dbWriteLines}{ifcar}
+\calls{dbWriteLines}{getTempPath}
+\calls{dbWriteLines}{make-outstream}
+\calls{dbWriteLines}{writedb}
+\calls{dbWriteLines}{shut}
+\defsdollar{dbWriteLines}{outStream}
+\refsdollar{dbWriteLines}{outStream}
+\begin{chunk}{defun dbWriteLines}
+(defun |dbWriteLines| (&rest G176369 &aux options s)
+ (dsetq (s . options) G176369)
+ (let (|$outStream| pathname)
+ (declare (special |$outStream|))
+  (setq pathname (or (ifcar options) (|getTempPath| '|source|)))
+  (setq |$outStream| (make-outstream pathname))
+  (loop for x in s do (|writedb| x))
+  (shut |$outStream|)
+  pathname))
 
+\end{chunk}
 
 
 \defun{print-defun}{print-defun}
@@ -26272,6 +26308,7 @@ The current input line.
 \getchunk{defun current-token}
 
 \getchunk{defun dbReadLines}
+\getchunk{defun dbWriteLines}
 \getchunk{defun decodeScripts}
 \getchunk{defun deepestExpression}
 \getchunk{defun def-rename}
@@ -26665,6 +26702,7 @@ The current input line.
 \getchunk{defun primitiveType}
 \getchunk{defun print-defun}
 \getchunk{defun processFunctor}
+\getchunk{defun purgeNewConstructorLines}
 \getchunk{defun push-reduction}
 \getchunk{defun putDomainsInScope}
 \getchunk{defun putInLocalDomainReferences}
diff --git a/changelog b/changelog
index 489849d..06cd895 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20120101 tpd src/axiom-website/patches.html 20120101.01.tpd.patch
+20120101 tpd src/interp/br-con.lisp treeshake compiler
+20120101 tpd books/bookvol9 treeshake compiler
 20111231 tpd src/axiom-website/patches.html 20111231.02.tpd.patch
 20111231 tpd src/interp/br-con.lisp treeshake compiler
 20111231 tpd books/bookvol9 treeshake compiler
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 62bb129..6b1f228 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3753,5 +3753,7 @@ books/bookvol9 treeshake and document compiler<br/>
 src/axiom-website/axiomgraph/js/axiomcode.js default compiler<br/>
 <a href="patches/20111231.02.tpd.patch">20111231.02.tpd.patch</a>
 books/bookvol9 treeshake compiler<br/>
+<a href="patches/20120101.01.tpd.patch">20120101.01.tpd.patch</a>
+books/bookvol9 treeshake compiler<br/>
  </body>
 </html>
diff --git a/src/interp/br-con.lisp.pamphlet b/src/interp/br-con.lisp.pamphlet
index 97fb348..f02e07e 100644
--- a/src/interp/br-con.lisp.pamphlet
+++ b/src/interp/br-con.lisp.pamphlet
@@ -7160,19 +7160,6 @@
 ;--=======================================================================
 ;--            Code for Private Libdbs
 ;--=======================================================================
-;-- $createLocalLibDb := false
-;extendLocalLibdb conlist ==   --  called by astran
-;  not $createLocalLibDb => nil
-;  null conlist => nil
-;  buildLibdb conlist          --> puts datafile into temp.text
-;  $newConstructorList := UNION(conlist, $newConstructorList)
-;  localLibdb := '"libdb.text"
-;  not PROBE_-FILE '"libdb.text" =>
-;    RENAME_-FILE('"temp.text",'"libdb.text")
-;  oldlines := purgeNewConstructorLines(dbReadLines localLibdb, conlist)
-;  newlines := dbReadLines '"temp.text"
-;  dbWriteLines(MSORT UNION(oldlines,newlines), '"libdb.text")
-;  deleteFile '"temp.text"
 
 ;$returnNowhereFromGoGet := false
 
@@ -18172,30 +18159,6 @@
         (|obey| (STRCONC "rm -f " |pathname|))
         |pathname|))))
 
-;dbWriteLines(s, :options) ==
-;  pathname := IFCAR options or getTempPath 'source
-;  $outStream: local := MAKE_-OUTSTREAM pathname
-;  for x in s repeat writedb x
-;  SHUT $outStream
-;  pathname
-
-(DEFUN |dbWriteLines| (&REST G176369 &AUX |options| |s|)
-  (DSETQ (|s| . |options|) G176369)
-  (PROG (|$outStream| |pathname|)
-    (DECLARE (SPECIAL |$outStream|))
-    (RETURN
-      (SEQ (PROGN
-             (SPADLET |pathname|
-                      (OR (IFCAR |options|) (|getTempPath| '|source|)))
-             (SPADLET |$outStream| (MAKE-OUTSTREAM |pathname|))
-             (DO ((G176356 |s| (CDR G176356)) (|x| NIL))
-                 ((OR (ATOM G176356)
-                      (PROGN (SETQ |x| (CAR G176356)) NIL))
-                  NIL)
-               (SEQ (EXIT (|writedb| |x|))))
-             (SHUT |$outStream|)
-             |pathname|)))))
-
 ;dbGetCommentOrigin line ==
 ;--Given a comment line in comdb, returns line in libdb pointing to it
 ;--Comment lines have format  [dcpxoa]xxxxxx`ccccc... where
@@ -26970,23 +26933,6 @@ $dbKindAlist :=
 ;--=======================================================================
 ;--            Code for Private Libdbs
 ;--=======================================================================
-;purgeNewConstructorLines(lines, conlist) ==
-;  [x for x in lines | not screenLocalLine(x, conlist)]
-
-(DEFUN |purgeNewConstructorLines| (|lines| |conlist|)
-  (PROG ()
-    (RETURN
-      (SEQ (PROG (G180083)
-             (SPADLET G180083 NIL)
-             (RETURN
-               (DO ((G180089 |lines| (CDR G180089)) (|x| NIL))
-                   ((OR (ATOM G180089)
-                        (PROGN (SETQ |x| (CAR G180089)) NIL))
-                    (NREVERSE0 G180083))
-                 (SEQ (EXIT (COND
-                              ((NULL (|screenLocalLine| |x| |conlist|))
-                               (SETQ G180083 (CONS |x| G180083)))))))))))))
-
 ;-- Got rid of debugging statement and deleted screenLocalLine1, MCD 26/3/96
 ;--screenLocalLine(line,conlist) ==
 ;--  u := screenLocalLine1(line,conlist)
