diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index bb71ebd..2842ac6 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -433,45 +433,139 @@ Given the top level command:
 \end{verbatim}
 The default call chain looks like:
 \begin{verbatim}
-  1> (|compiler| (PR))
-    2> (|compileSpad2Cmd| ("/research/test/int/algebra/PR.spad"))
-      3> (|compilerDoit| NIL (|rq| |lib|))
-        4> (/RF-1 NIL)
-          5> (SPAD "/research/test/int/algebra/PR.spad")
-            6> (S-PROCESS (|where| ...
-              7> (|compTopLevel| (|where| (DEF ...
-                8> (|compOrCroak| (|where| (DEF ...
-                  9> (|compOrCroak| (CATEGORY |domain| ...
-                  <9 (|compOrCroak| ((|DomainSubstitutionMacro| # #) ...
-...
-                    10> (|compOrCroak| (|FreeModule| R E) |$EmptyMode| ((#)))
-                    <10 (|compOrCroak| ((|FreeModule| R E) (|Join| # # #) (#)))
-...
-                    11> (|compOrCroak| (|construct| (|construct| # #)) $ ((#)))
-                    <11 (|compOrCroak| ((LIST #) $ (#)))
-...
-                  <9 (|compOrCroak| ((PROGN ... $) #1=(|Join| # #) (#)))
-                <8 (|compOrCroak| (|PolynomialRing| (|Mapping| ...
-              <7 (|compTopLevel| (|PolynomialRing| ...
-            <6 (S-PROCESS NIL)
-          <5 (SPAD T)
-        <4 (/RF-1 T)
-      <3 (|compilerDoit| T)
-(1) -> 
+1> (|compiler| ...)
+ 2> (|compileSpad2Cmd| ...)
+   Compiling AXIOM source code from file /tmp/A.spad using old system 
+      compiler.
+  3> (|compilerDoit| ...)
+   4> (|/RQ,LIB|)
+    5> (/RF-1 ...)
+     6> (SPAD ...)
+   AXSERV abbreviates package AxiomServer 
+      7> (S-PROCESS ...)
+       8> (|compTopLevel| ...)
+        9> (|compOrCroak| ...)
+         10> (|compOrCroak1| ...)
+          11> (|comp| ...)
+           12> (|compNoStacking| ...)
+            13> (|comp2| ...)
+             14> (|comp3| ...)
+              15> (|compExpression| ...)
+*              16> (|compWhere| ...)
+                17> (|comp| ...)
+                 18> (|compNoStacking| ...)
+                  19> (|comp2| ...)
+                   20> (|comp3| ...)
+                    21> (|compExpression| ...)
+                     22> (|compSeq| ...)
+                      23> (|compSeq1| ...)
+                       24> (|compSeqItem| ...)
+                        25> (|comp| ...)
+                         26> (|compNoStacking| ...)
+                          27> (|comp2| ...)
+                           28> (|comp3| ...)
+                            29> (|compExpression| ...)
+                            <29 (|compExpression| ...)
+                           <28 (|comp3| ...)
+                          <27 (|comp2| ...)
+                         <26 (|compNoStacking| ...)
+                        <25 (|comp| ...)
+                       <24 (|compSeqItem| ...)
+                       24> (|compSeqItem| ...)
+                        25> (|comp| ...)
+                         26> (|compNoStacking| ...)
+                          27> (|comp2| ...)
+                           28> (|comp3| ...)
+                            29> (|compExpression| ...)
+                             30> (|compExit| ...)
+                              31> (|comp| ...)
+                               32> (|compNoStacking| ...)
+                                33> (|comp2| ...)
+                                 34> (|comp3| ...)
+                                  35> (|compExpression| ...)
+                                  <35 (|compExpression| ...)
+                                 <34 (|comp3| ...)
+                                <33 (|comp2| ...)
+                               <32 (|compNoStacking| ...)
+                              <31 (|comp| ...)
+                              31> (|modifyModeStack| ...)
+                              <31 (|modifyModeStack| ...)
+                             <30 (|compExit| ...)
+                            <29 (|compExpression| ...)
+                           <28 (|comp3| ...)
+                          <27 (|comp2| ...)
+                         <26 (|compNoStacking| ...)
+                        <25 (|comp| ...)
+                       <24 (|compSeqItem| ...)
+                       24> (|replaceExitEtc| ...)
+                        25> (|replaceExitEtc,fn| ...)
+                         26> (|replaceExitEtc| ...)
+                          27> (|replaceExitEtc,fn| ...)
+                           28> (|replaceExitEtc| ...)
+                            29> (|replaceExitEtc,fn| ...)
+                            <29 (|replaceExitEtc,fn| ...)
+                           <28 (|replaceExitEtc| ...)
+                           28> (|replaceExitEtc| ...)
+                            29> (|replaceExitEtc,fn| ...)
+                            <29 (|replaceExitEtc,fn| ...)
+                           <28 (|replaceExitEtc| ...)
+                          <27 (|replaceExitEtc,fn| ...)
+                         <26 (|replaceExitEtc| ...)
+                         26> (|replaceExitEtc| ...)
+                          27> (|replaceExitEtc,fn| ...)
+                           28> (|replaceExitEtc| ...)
+                            29> (|replaceExitEtc,fn| ...)
+                             30> (|replaceExitEtc| ...)
+                              31> (|replaceExitEtc,fn| ...)
+                               32> (|replaceExitEtc| ...)
+                                33> (|replaceExitEtc,fn| ...)
+                                <33 (|replaceExitEtc,fn| ...)
+                               <32 (|replaceExitEtc| ...)
+                               32> (|replaceExitEtc| ...)
+                                33> (|replaceExitEtc,fn| ...)
+                                <33 (|replaceExitEtc,fn| ...)
+                               <32 (|replaceExitEtc| ...)
+                              <31 (|replaceExitEtc,fn| ...)
+                             <30 (|replaceExitEtc| ...)
+                             30> (|convertOrCroak| ...)
+                              31> (|convert| ...)
+                              <31 (|convert| ...)
+                             <30 (|convertOrCroak| ...)
+                            <29 (|replaceExitEtc,fn| ...)
+                           <28 (|replaceExitEtc| ...)
+                           28> (|replaceExitEtc| ...)
+                            29> (|replaceExitEtc,fn| ...)
+                            <29 (|replaceExitEtc,fn| ...)
+                           <28 (|replaceExitEtc| ...)
+                          <27 (|replaceExitEtc,fn| ...)
+                         <26 (|replaceExitEtc| ...)
+                        <25 (|replaceExitEtc,fn| ...)
+                       <24 (|replaceExitEtc| ...)
+                      <23 (|compSeq1| ...)
+                     <22 (|compSeq| ...)
+                    <21 (|compExpression| ...)
+                   <20 (|comp3| ...)
+                  <19 (|comp2| ...)
+                 <18 (|compNoStacking| ...)
+                <17 (|comp| ...)
+                17> (|comp| ...)
+                 18> (|compNoStacking| ...)
+                  19> (|comp2| ...)
+                   20> (|comp3| ...)
+                    21> (|compExpression| ...)
+                     22> (|comp| ...)
+                      23> (|compNoStacking| ...)
+                       24> (|comp2| ...)
+                        25> (|comp3| ...)
+                         26> (|compColon| ...)
+                         <26 (|compColon| ...)
+                        <25 (|comp3| ...)
+                       <24 (|comp2| ...)
+                      <23 (|compNoStacking| ...)
+                     <22 (|comp| ...)
 \end{verbatim}
 
 \subsection{Aldor compiler}
-This command compiles files with file extensions {\it .as, .ao} and
-{\it .al} with the Aldor compiler. It also can compile files
-with file extension {\it .lsp}. These are assumed to be Lisp files
-genererated by the Aldor compiler.  
-
-The general description of Aldor command line arguments is in
-the Aldor documentation.
-The default options used by the {\tt )compile} command can be
-viewed and set using the {\tt )set compiler args} Axiom
-system command.
-The current defaults are
 \begin{verbatim}
 -O -Fasy -Fao -Flsp -laxiom -Mno-AXL_W_WillObsolete -DAxiom
 \end{verbatim}
@@ -2510,6 +2604,43 @@ preferred to the underlying representation -- RDJ 9/12/83
 
 @
 
+\defun{compWhere}{compWhere}
+\calls{compWhere}{comp}
+\calls{compWhere}{macroExpand}
+\calls{compWhere}{deltaContour}
+\calls{compWhere}{addContour}
+\usesdollar{compWhere}{insideExpressionIfTrue}
+\usesdollar{compWhere}{insideWhereIfTrue}
+\usesdollar{compWhere}{EmptyMode}
+<<defun compWhere>>=
+(defun |compWhere| (arg0 m eInit)
+ (let (|$insideExpressionIfTrue| |$insideWhereIfTrue| form exprList e u 
+       eBefore tmp1 x eAfter del eFinal)
+ (declare (special |$insideExpressionIfTrue| |$insideWhereIfTrue|
+                   |$EmptyMode|))
+  (setq form (second arg0))
+  (setq exprlist (cddr arg0))
+  (setq |$insideExpressionIfTrue| nil)
+  (setq |$insideWhereIfTrue| t)
+  (setq e eInit)
+  (when (dolist (item exprList t)
+          (setq tmp1 (|comp| item |$EmptyMode| e))
+          (unless tmp1 (return nil))
+          (setq e (third tmp1)))
+  (setq |$insideWhereIfTrue| nil)
+  (setq tmp1 (|comp| (|macroExpand| form (setq eBefore e)) m e))
+  (when tmp1
+    (setq x (first tmp1))
+    (setq m (second tmp1))
+    (setq eAfter (third tmp1))
+    (setq del (|deltaContour| eAfter eBefore))
+    (if del
+      (setq eFinal (|addContour| del eInit))
+      (setq eFinal eInit))
+    (list x m eFinal)))))
+
+@
+
 \defun{argsToSig}{argsToSig}
 <<defun argsToSig>>=
 (defun |argsToSig| (args)
@@ -2857,6 +2988,7 @@ if \verb|$InteractiveMode| then use a null outputstream
 <<defun compTopLevel>>
 <<defun compTypeOf>>
 <<defun compVector>>
+<<defun compWhere>>
 <<defun compWithMappingMode>>
 <<defun compWithMappingMode1>>
 <<defun convert>>
diff --git a/changelog b/changelog
index 12bd525..463ee25 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20100928 tpd src/axiom-website/patches.html 20100928.01.tpd.patch
+20100928 tpd src/interp/compiler.lisp treeshake compiler
+20100928 tpd books/bookvol9.pamphlet treeshake compiler
 20100927 tpd src/axiom-website/patches.html 20100927.02.tpd.patch
 20100927 tpd src/axiom-website/download.html add fedora, debian
 20100927 tpd src/axiom-website/patches.html 20100927.01.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 4d52c85..a9ab314 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3162,5 +3162,7 @@ src/axiom-website/download.html add opensuse, vector<br/>
 books/bookvolbib add Eric Weisstein [Wein]<br/>
 <a href="patches/20100927.02.tpd.patch">20100927.02.tpd.patch</a>
 src/axiom-website/download.html add fedora, debian<br/>
+<a href="patches/20100928.01.tpd.patch">20100928.01.tpd.patch</a>
+books/bookvol9.pamphlet treeshake compiler<br/>
  </body>
 </html>
diff --git a/src/interp/compiler.lisp.pamphlet b/src/interp/compiler.lisp.pamphlet
index a705b10..dd02c39 100644
--- a/src/interp/compiler.lisp.pamphlet
+++ b/src/interp/compiler.lisp.pamphlet
@@ -1663,73 +1663,6 @@ Compile setelt
                                       NIL)))))))))))))
 
 @
-\subsection{compWhere}
-Compile where
-<<*>>=
-;compWhere([.,form,:exprList],m,eInit) ==
-;  $insideExpressionIfTrue: local:= false
-;  $insideWhereIfTrue: local:= true
-;  e:= eInit
-;  u:=
-;    for item in exprList repeat
-;      [.,.,e]:= comp(item,$EmptyMode,e) or return "failed"
-;  u="failed" => return nil
-;  $insideWhereIfTrue:= false
-;  [x,m,eAfter]:= comp(macroExpand(form,eBefore:= e),m,e) or return nil
-;  eFinal:=
-;    del:= deltaContour(eAfter,eBefore) => addContour(del,eInit)
-;    eInit
-;  [x,m,eFinal]
-
-(DEFUN |compWhere| (G168571 |m| |eInit|)
-  (PROG (|$insideExpressionIfTrue| |$insideWhereIfTrue| |form|
-            |exprList| |e| |u| |eBefore| |LETTMP#1| |x| |eAfter| |del|
-            |eFinal|)
-    (DECLARE (SPECIAL |$insideExpressionIfTrue| |$insideWhereIfTrue|
-                      |$EmptyMode|))
-    (RETURN
-      (SEQ (PROGN
-             (SPADLET |form| (CADR G168571))
-             (SPADLET |exprList| (CDDR G168571))
-             (SPADLET |$insideExpressionIfTrue| NIL)
-             (SPADLET |$insideWhereIfTrue| 'T)
-             (SPADLET |e| |eInit|)
-             (SPADLET |u|
-                      (DO ((G168594 |exprList| (CDR G168594))
-                           (|item| NIL))
-                          ((OR (ATOM G168594)
-                               (PROGN
-                                 (SETQ |item| (CAR G168594))
-                                 NIL))
-                           NIL)
-                        (SEQ (EXIT (PROGN
-                                     (SPADLET |LETTMP#1|
-                                      (OR
-                                       (|comp| |item| |$EmptyMode| |e|)
-                                       (RETURN '|failed|)))
-                                     (SPADLET |e| (CADDR |LETTMP#1|))
-                                     |LETTMP#1|)))))
-             (COND
-               ((BOOT-EQUAL |u| '|failed|) (RETURN NIL))
-               ('T (SPADLET |$insideWhereIfTrue| NIL)
-                (SPADLET |LETTMP#1|
-                         (OR (|comp| (|macroExpand| |form|
-                                      (SPADLET |eBefore| |e|))
-                                     |m| |e|)
-                             (RETURN NIL)))
-                (SPADLET |x| (CAR |LETTMP#1|))
-                (SPADLET |m| (CADR |LETTMP#1|))
-                (SPADLET |eAfter| (CADDR |LETTMP#1|))
-                (SPADLET |eFinal|
-                         (COND
-                           ((SPADLET |del|
-                                     (|deltaContour| |eAfter|
-                                      |eBefore|))
-                            (|addContour| |del| |eInit|))
-                           ('T |eInit|)))
-                (CONS |x| (CONS |m| (CONS |eFinal| NIL))))))))))
-
-@
 \subsection{compConstruct}
 Compile construct
 <<*>>=
