diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index d26fcd9..070f10c 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -7307,7 +7307,7 @@ An angry JHD - August 15th., 1984
 \calls{setqSingle}{profileRecord}
 \calls{setqSingle}{consProplistOf}
 \calls{setqSingle}{removeEnv}
-\calls{setqSingle}{addBinding}
+\seebook{setqSingle}{addBinding}{5}
 \calls{setqSingle}{isDomainForm}
 \calls{setqSingle}{isDomainInScope}
 \calls{setqSingle}{stackWarning}
@@ -11140,6 +11140,72 @@ loop
 
 \chapter{Utility Functions}
 
+\defmacro{pop-stack-1}
+\calls{pop-stack-1}{reduction-value}
+\calls{pop-stack-1}{Pop-Reduction}
+\begin{chunk}{defmacro pop-stack-1}
+(defmacro pop-stack-1 () '(reduction-value (Pop-Reduction)))
+
+\end{chunk}
+
+\defmacro{pop-stack-2}
+\calls{pop-stack-2}{stack-push}
+\calls{pop-stack-2}{reduction-value}
+\calls{pop-stack-2}{Pop-Reduction}
+\begin{chunk}{defmacro pop-stack-2}
+(defmacro pop-stack-2 ()
+  `(let* ((top (Pop-Reduction)) (next (Pop-Reduction)))
+     (stack-push top Reduce-Stack)
+     (reduction-value next)))
+
+\end{chunk}
+
+\defmacro{pop-stack-3}
+\calls{pop-stack-3}{stack-push}
+\calls{pop-stack-3}{reduction-value}
+\calls{pop-stack-3}{Pop-Reduction}
+\begin{chunk}{defmacro pop-stack-3}
+(defmacro pop-stack-3 ()
+  `(let* ((top (Pop-Reduction)) (next (Pop-Reduction)) (nnext (Pop-Reduction)))
+     (stack-push next Reduce-Stack)
+     (stack-push top Reduce-Stack)
+     (reduction-value nnext)))
+
+\end{chunk}
+
+\defmacro{pop-stack-4}
+\calls{pop-stack-4}{stack-push}
+\calls{pop-stack-4}{reduction-value}
+\calls{pop-stack-4}{Pop-Reduction}
+\begin{chunk}{defmacro pop-stack-4}
+(defmacro pop-stack-4 ()
+  `(let* ((top (Pop-Reduction))
+          (next (Pop-Reduction))
+          (nnext (Pop-Reduction))
+          (nnnext (Pop-Reduction)))
+     (stack-push nnext Reduce-Stack)
+     (stack-push next Reduce-Stack)
+     (stack-push top Reduce-Stack)
+     (reduction-value nnnext)))
+
+\end{chunk}
+
+\defmacro{nth-stack}
+\calls{nth-stack}{stack-store}
+\calls{nth-stack}{reduction-value}
+\begin{chunk}{defmacro nth-stack}
+(defmacro nth-stack (x)
+  `(reduction-value (nth (1- ,x) (stack-store Reduce-Stack))))
+
+\end{chunk}
+
+\defun{Pop-Reduction}{Pop-Reduction}
+\calls{Pop-Reduction}{stack-pop}
+\begin{chunk}{defun Pop-Reduction}
+(defun Pop-Reduction () (stack-pop Reduce-Stack))
+
+\end{chunk}
+
 \defun{addclose}{addclose}
 \calls{addclose}{suffix}
 \begin{chunk}{defun addclose}
@@ -12263,9 +12329,9 @@ And the {\bf s-process} function which returns a parsed version of the input.
 
 \defun{spad}{spad}
 \catches{spad}{spad-reader}
-\calls{spad}{addBinding}
-\calls{spad}{makeInitialModemapFrame}
-\calls{spad}{init-boot/spad-reader}
+\seebook{spad}{addBinding}{5}
+\seebook{spad}{makeInitialModemapFrame}{5}
+\seebook{spad}{init-boot/spad-reader}{5}
 \calls{spad}{initialize-preparse}
 \calls{spad}{preparse}
 \calls{spad}{PARSE-NewExpr}
@@ -14010,6 +14076,11 @@ if \verb|$InteractiveMode| then use a null outputstream
 
 \getchunk{defmacro bang}
 \getchunk{defmacro must}
+\getchunk{defmacro nth-stack}
+\getchunk{defmacro pop-stack-1}
+\getchunk{defmacro pop-stack-2}
+\getchunk{defmacro pop-stack-3}
+\getchunk{defmacro pop-stack-4}
 \getchunk{defmacro star}
 
 \getchunk{defun action}
@@ -14280,6 +14351,7 @@ if \verb|$InteractiveMode| then use a null outputstream
 \getchunk{defun parseTransform}
 \getchunk{defun parseVCONS}
 \getchunk{defun parseWhere}
+\getchunk{defun Pop-Reduction}
 \getchunk{defun postAdd}
 \getchunk{defun postAtom}
 \getchunk{defun postAtSign}
diff --git a/changelog b/changelog
index 63afb50..6822dda 100644
--- a/changelog
+++ b/changelog
@@ -1,5 +1,10 @@
+20110204 tpd src/axiom-website/patches.html 20110204.02.tpd.patch
+20110204 tpd src/interp/parsing.lisp treeshake compiler
+20110204 tpd src/scripts/tex/axiom.sty add seebook
+20110204 tpd src/doc/axiom.sty add seebook
+20110204 tpd books/bookvol9 add seebook changes
 20110204 tpd src/axiom-website/patches.html 20110204.01.tpd.patch
-20110204 tpd src/axiom-website/download.html add binaries
+20110204 tpd src/axiom-website/download.html add binaries	
 20110202 tpd src/axiom-website/patches.html 20110202.01.tpd.patch
 20110202 tpd src/interp/vmlisp.lisp remove extra end{chunk}
 20110201 tpd src/axiom-website/patches.html 20110201.01.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 03e7e67..93a427f 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3389,5 +3389,7 @@ src/axiom-website/download.html update the download page<br/>
 src/interp/vmlisp.lisp remove extra end{chunk}<br/>
 <a href="patches/20110204.01.tpd.patch">20110204.01.tpd.patch</a>
 src/axiom-website/download.html add binaries<br/>
+<a href="patches/20110204.02.tpd.patch">20110204.02.tpd.patch</a>
+books/bookvol9 add seebook changes, treeshake compiler<br/>
  </body>
 </html>
diff --git a/src/doc/axiom.sty.pamphlet b/src/doc/axiom.sty.pamphlet
index 1caede1..a8e4181 100644
--- a/src/doc/axiom.sty.pamphlet
+++ b/src/doc/axiom.sty.pamphlet
@@ -210,6 +210,17 @@
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%
+%% calls marks a call from this function to another
+%%
+<<axiom.sty>>=
+\newcommand{\seebook}[3]{% e.g. \seebook{thisfunc}{thatfunc}{5}
+[#1 #2 (vol#3)]\\%
+\index{#2[#3]!{called by #1}}%
+\index{#1!{calls #2[#3]}}}%
+@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
 %% uses marks use of a throw tagvar
 %%
 <<axiom.sty>>=
diff --git a/src/interp/parsing.lisp.pamphlet b/src/interp/parsing.lisp.pamphlet
index 8afaf84..c8b1f0f 100644
--- a/src/interp/parsing.lisp.pamphlet
+++ b/src/interp/parsing.lisp.pamphlet
@@ -177,34 +177,6 @@
 
 (defmacro reduce-stack-clear () `(stack-load nil reduce-stack))
 
-(defun Pop-Reduction () (stack-pop Reduce-Stack))
-
-(defmacro pop-stack-1 () '(reduction-value (Pop-Reduction)))
-
-(defmacro pop-stack-2 ()
-  `(let* ((top (Pop-Reduction)) (next (Pop-Reduction)))
-     (stack-push top Reduce-Stack)
-     (reduction-value next)))
-
-(defmacro pop-stack-3 ()
-  `(let* ((top (Pop-Reduction)) (next (Pop-Reduction)) (nnext (Pop-Reduction)))
-     (stack-push next Reduce-Stack)
-     (stack-push top Reduce-Stack)
-     (reduction-value nnext)))
-
-(defmacro pop-stack-4 ()
-  `(let* ((top (Pop-Reduction))
-          (next (Pop-Reduction))
-          (nnext (Pop-Reduction))
-          (nnnext (Pop-Reduction)))
-     (stack-push nnext Reduce-Stack)
-     (stack-push next Reduce-Stack)
-     (stack-push top Reduce-Stack)
-     (reduction-value nnnext)))
-
-(defmacro nth-stack (x)
-  `(reduction-value (nth (1- ,x) (stack-store Reduce-Stack))))
-
 (defmacro sequence (subrules &optional (actions nil))
   `(and ,(pop subrules) .
         ,(append (mapcar #'(lambda (x) (list 'must x)) subrules)
diff --git a/src/scripts/tex/axiom.sty b/src/scripts/tex/axiom.sty
index 20968b2..a90fae2 100644
--- a/src/scripts/tex/axiom.sty
+++ b/src/scripts/tex/axiom.sty
@@ -79,6 +79,10 @@
 [#2 p\pageref{#2}]\\%
 \index{#2!{calledby #1}}%
 \index{#1!{calls #2}}}%
+\newcommand{\seebook}[3]{% e.g. \seebook{thisfunc}{thatfunc}{5}
+[#1 #2 (vol#3)]\\%
+\index{#2[#3]!{called by #1}}%
+\index{#1!{calls #2[#3]}}}%
 \newcommand{\throws}[2]{% e.g. \throws{thisfunc}{tagvar}
 [#2 p\pageref{#2}]\\%
 \index{throws!#1}%
