diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 038128f..12cfc11 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -66,7 +66,7 @@ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTIUTE GOODS OR 
 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
@@ -22118,6 +22118,37 @@ preferred to the underlying representation -- RDJ 9/12/83
  
 \end{chunk}
 
+\defun{substituteIntoFunctorModemap}{substituteIntoFunctorModemap}
+\calls{substituteIntoFunctorModemap}{nequal}
+\calls{substituteIntoFunctorModemap}{keyedSystemError}
+\calls{substituteIntoFunctorModemap}{eqsubstlist}
+\calls{substituteIntoFunctorModemap}{compOrCroak}
+\calls{substituteIntoFunctorModemap}{sublis}
+\begin{chunk}{defun substituteIntoFunctorModemap}
+(defun |substituteIntoFunctorModemap| (argl modemap env)
+ (let (dc sig tmp1 tl substitutionList)
+  (setq dc (caar modemap))
+  (setq sig (cdar modemap))
+  (cond
+   ((nequal (|#| dc) (|#| sig))
+     (|keyedSystemError| 'S2GE0016
+      (list "substituteIntoFunctorModemap" "Incompatible maps")))
+   ((equal (|#| argl) (|#| (cdr sig)))
+    (setq sig (eqsubstlist argl (cdr dc) sig))
+    (setq tl
+     (loop for a in argl for m in (rest sig)
+      collect (progn
+               (setq tmp1 (|compOrCroak| a m env))
+               (setq env (caddr tmp1))
+               tmp1)))
+    (setq substitutionList
+     (loop for x in (rest dc) for tt in tl
+      collect (cons x (car tt))))
+     (list (sublis substitutionList modemap) env))
+   (t nil))))
+
+\end{chunk}
+
 \defun{compFormPartiallyBottomUp}{compFormPartiallyBottomUp}
 \calls{compFormPartiallyBottomUp}{compForm3}
 \calls{compFormPartiallyBottomUp}{compFormMatch}
@@ -23611,6 +23642,7 @@ The current input line.
 \getchunk{defun stripOffSubdomainConditions}
 \getchunk{defun subrname}
 \getchunk{defun substituteCategoryArguments}
+\getchunk{defun substituteIntoFunctorModemap}
 \getchunk{defun substNames}
 \getchunk{defun substVars}
 \getchunk{defun s-process}
diff --git a/changelog b/changelog
index e440a30..a7dd1e7 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20111113 tpd src/axiom-website/patches.html 20111113.01.tpd.patch
+20111113 tpd src/interp/Makefile remove apply.lisp
+20111113 tpd src/interp/apply.lisp removed, merged with bookvol9
+20111113 tpd books/bookvol9 treeshake compiler
 20111112 tpd src/axiom-website/patches.html 20111112.01.tpd.patch
 20111112 tpd src/interp/apply.lisp treeshake compiler
 20111112 tpd books/bookvol9 treeshake compiler
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 0f90319..e667b7f 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3678,5 +3678,7 @@ src/axiom-website/documentation.html add Knuth quote<br/>
 books/bookvol5 treeshake interpreter<br/>
 <a href="patches/20111112.01.tpd.patch">20111112.01.tpd.patch</a>
 books/bookvol9 treeshake compiler<br/>
+<a href="patches/20111113.01.tpd.patch">20111113.01.tpd.patch</a>
+books/bookvol9 treeshake compiler, remove apply.lisp<br/>
  </body>
 </html>
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet
index 374b2f2..3f253dc 100644
--- a/src/interp/Makefile.pamphlet
+++ b/src/interp/Makefile.pamphlet
@@ -181,7 +181,7 @@ OBJS= ${OUT}/vmlisp.${O}      \
       ${OUT}/template.${O}    ${OUT}/termrw.${O} \
       ${OUT}/fortcall.${O} \
       ${OUT}/parsing.${O}  \
-      ${OUT}/apply.${O}	      ${OUT}/c-doc.${O}    \
+      ${OUT}/c-doc.${O}    \
       ${OUT}/c-util.${O}      ${OUT}/profile.${O}  \
       ${OUT}/category.${O}    \
       ${OUT}/functor.${O}  \
@@ -723,29 +723,6 @@ ${DEBUGSYS}: ${MID}/debugsys.lisp
 
 \section{The Interpreter files}
 
-<<apply.o (OUT from MID)>>=
-${OUT}/apply.${O}: ${MID}/apply.lisp 
-	@ echo 10 making ${OUT}/apply.${O} from ${MID}/apply.lisp
-	@ (cd ${MID} ; \
-	  if [ -z "${NOISE}" ] ; then \
-	   echo '(progn  (compile-file "${MID}/apply.lisp"' \
-             ':output-file "${OUT}/apply.${O}") (${BYE}))' | ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file "${MID}/apply.lisp"' \
-             ':output-file "${OUT}/apply.${O}") (${BYE}))' | ${DEPSYS} \
-             >${TMP}/trace ; \
-	  fi )
-
-@
-<<apply.lisp (MID from IN)>>=
-${MID}/apply.lisp: ${IN}/apply.lisp.pamphlet
-	@ echo 11 making ${MID}/apply.lisp from ${IN}/apply.lisp.pamphlet
-	@( cd ${MID} ; \
-          echo '(tangle "${IN}/apply.lisp.pamphlet" "*" "apply.lisp")' \
-        | ${OBJ}/${SYS}/bin/lisp )
-
-@
-
 \subsection{cfuns.lisp \cite{10}}
 <<cfuns.o (OUT from MID)>>=
 ${OUT}/cfuns.${O}: ${MID}/cfuns.lisp
@@ -3045,9 +3022,6 @@ clean:
 <<debugsys>>
 <<databases>>
 
-<<apply.o (OUT from MID)>>
-<<apply.lisp (MID from IN)>>
-
 <<bc-matrix.o (AUTO from OUT)>>
 <<bc-matrix.o (OUT from MID)>>
 <<bc-matrix.lisp (MID from IN)>>
diff --git a/src/interp/apply.lisp.pamphlet b/src/interp/apply.lisp.pamphlet
deleted file mode 100644
index cd1bbab..0000000
--- a/src/interp/apply.lisp.pamphlet
+++ /dev/null
@@ -1,104 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp apply.lisp}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\begin{chunk}{*}
-
-(in-package "BOOT" )
-
-;substituteIntoFunctorModemap(argl,modemap is [[dc,:sig],:.],e) ==
-;  #dc^=#sig =>
-;    keyedSystemError("S2GE0016",['"substituteIntoFunctorModemap",
-;      '"Incompatible maps"])
-;  #argl=#rest sig =>
-;                        --here, we actually have a functor form
-;    sig:= EQSUBSTLIST(argl,rest dc,sig)
-;      --make new modemap, subst. actual for formal parametersinto modemap
-;    Tl:= [[.,.,e]:= compOrCroak(a,m,e) for a in argl for m in rest sig]
-;    substitutionList:= [[x,:T.expr] for x in rest dc for T in Tl]
-;    [SUBLIS(substitutionList,modemap),e]
-;  nil
-
-(DEFUN |substituteIntoFunctorModemap| (|argl| |modemap| |e|)
-  (PROG (|dc| |sig| |LETTMP#1| |Tl| |substitutionList|)
-    (RETURN
-      (SEQ (PROGN
-             (SPADLET |dc| (CAAR |modemap|))
-             (SPADLET |sig| (CDAR |modemap|))
-             (COND
-               ((NEQUAL (|#| |dc|) (|#| |sig|))
-                (|keyedSystemError| 'S2GE0016
-                    (CONS "substituteIntoFunctorModemap"
-                          (CONS "Incompatible maps" NIL))))
-               ((BOOT-EQUAL (|#| |argl|) (|#| (CDR |sig|)))
-                (SPADLET |sig| (EQSUBSTLIST |argl| (CDR |dc|) |sig|))
-                (SPADLET |Tl|
-                         (PROG (G167960)
-                           (SPADLET G167960 NIL)
-                           (RETURN
-                             (DO ((G167969 |argl| (CDR G167969))
-                                  (|a| NIL)
-                                  (G167970 (CDR |sig|)
-                                      (CDR G167970))
-                                  (|m| NIL))
-                                 ((OR (ATOM G167969)
-                                      (PROGN
-                                        (SETQ |a| (CAR G167969))
-                                        NIL)
-                                      (ATOM G167970)
-                                      (PROGN
-                                        (SETQ |m| (CAR G167970))
-                                        NIL))
-                                  (NREVERSE0 G167960))
-                               (SEQ (EXIT
-                                     (SETQ G167960
-                                      (CONS
-                                       (PROGN
-                                         (SPADLET |LETTMP#1|
-                                          (|compOrCroak| |a| |m| |e|))
-                                         (SPADLET |e|
-                                          (CADDR |LETTMP#1|))
-                                         |LETTMP#1|)
-                                       G167960))))))))
-                (SPADLET |substitutionList|
-                         (PROG (G167984)
-                           (SPADLET G167984 NIL)
-                           (RETURN
-                             (DO ((G167990 (CDR |dc|)
-                                      (CDR G167990))
-                                  (|x| NIL)
-                                  (G167991 |Tl| (CDR G167991))
-                                  (T$ NIL))
-                                 ((OR (ATOM G167990)
-                                      (PROGN
-                                        (SETQ |x| (CAR G167990))
-                                        NIL)
-                                      (ATOM G167991)
-                                      (PROGN
-                                        (SETQ T$ (CAR G167991))
-                                        NIL))
-                                  (NREVERSE0 G167984))
-                               (SEQ (EXIT
-                                     (SETQ G167984
-                                      (CONS (CONS |x| (CAR T$))
-                                       G167984))))))))
-                (CONS (SUBLIS |substitutionList| |modemap|)
-                      (CONS |e| NIL)))
-               ('T NIL)))))))
-
-;--% APPLY MODEMAPS
-
-
-\end{chunk}
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
