diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 8ef1abf..e95ce54 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -5562,10 +5562,6 @@ shift back and forth between the frames. By default, the system starts
 in ``frame0'' (try the \verb|)frame names| command). See the Frame
 Mechanism chapter (\ref{TheFrameMechanism} page~\pageref{TheFrameMechanism}).
 
-The \verb|$InteractiveFrame| variable contains the state information
-related to the current frame, which includes things like the last value,
-the value of all of the variables, etc.
-
 The \varref{printLoadMsgs} variable controls whether load messages will
 be output as library routines are loaded. We disnable this by default.
 It can be changed by using \verb|)set message autoload|.
@@ -5688,6 +5684,13 @@ information is initialized.
 
 \end{chunk}
 
+\defdollar{PrintCompilerMessageIfTrue}
+The \verb|$PrintCompilerMessageIfTrue| variable is set to NIL in spad.
+\begin{chunk}{initvars}
+(defvar |$PrintCompilerMessageIfTrue| nil)
+
+\end{chunk}
+
 \defunsec{spad}{Starts the interpreter but do not read in profiles}
 \calls{spad}{setOutputAlgebra}
 \calls{spad}{runspad}
@@ -5795,6 +5798,54 @@ While not using the ``dollar'' convention this variable is still ``global''.
 
 \end{chunk}
 
+There are several different environments used in the interpreter:
+
+{\bf \verb|$InteractiveFrame|} is the environment where the user
+values are stored.  Any side effects of evaluation of a top-level
+expression are stored in this environment.  It is always used as
+the starting environment for interpretation.
+
+{\bf \$e} is the name used for \verb|$InteractiveFrame| while interpreting.
+
+{\bf \verb|$env|} is local environment used by the interpreter.
+Only temporary information (such as types of local variables is
+stored in \verb|$env|. It is thrown away after evaluation of each expression.
+
+\defdollar{InteractiveFrame}
+The \verb|$InteractiveFrame| is set in the restart function 
+to the value of the call to the makeInitialModemapFrame function. 
+This function simply returns a copy of the variable \verb|$InitialModemapFrame|
+
+The \verb|$InteractiveFrame| variable contains the state information
+related to the current frame, which includes things like the last value,
+the value of all of the variables, etc.
+\begin{chunk}{initvars}
+(defvar |$InteractiveMode| (list (list nil)) "top level environment")
+
+\end{chunk}
+
+\defdollar{env}
+\begin{chunk}{initvars}
+(defvar |$env| nil "checked in isDomainValuedVariable")
+
+\end{chunk}
+
+\defdollar{e}
+The \verb|$e| variable is set to the value of \verb|$InteractiveFrame|
+which is set in restart to the value of the call to the
+makeInitialModemapFrame function. This function simply returns a copy
+of the variable \verb|$InitialModemapFrame|.
+
+Prints out the value x which is of type m, and records the changes
+in environment \verb|$e| into \verb|$InteractiveFrame|
+Thus \verb|$e| is a copy of the variable \verb|$InitialModemapFrame|.
+
+This variable is used in the undo mechanism.
+\begin{chunk}{initvars}
+(defvar |$e| nil "the environment?")
+
+\end{chunk}
+
 \defdollar{InteractiveMode}
 \begin{chunk}{initvars}
 (defvar |$InteractiveMode| t)
@@ -5807,6 +5858,14 @@ While not using the ``dollar'' convention this variable is still ``global''.
 
 \end{chunk}
 
+\subsection{\$newspad}
+The \verb|$newspad| is set to T in ncTopLevel.
+\defdollar{newspad}
+\begin{chunk}{initvars}
+(defvar $newspad nil)
+
+\end{chunk}
+
 \defunsec{ncTopLevel}{Top-level read-parse-eval-print loop}
 Top-level read-parse-eval-print loop for the interpreter.  Uses
 the Bill Burge's parser.
@@ -6814,6 +6873,20 @@ a top level command
 
 \end{chunk}
 
+\defdollar{compilingMap}
+{\bf \verb|$compilingMap|}: true when compiling a map, used to
+detect where to THROW when interpret-only is invoked
+\begin{chunk}{initvars}
+(defvar |$compilingMap| ())
+
+\end{chunk}
+
+\defdollar{instantRecord}
+\begin{chunk}{initvars}
+(setq |$instantRecord| (make-hash-table :test #'eq))
+
+\end{chunk}
+
 \defun{processInteractive}{processInteractive}
 Parser Output {\tt -->} Interpreter
 
@@ -7051,6 +7124,12 @@ modeset otherwise. It creates the attributed tree.
 
 \end{chunk}
 
+\defdollar{ThrowAwayMode}
+\begin{chunk}{initvars}
+(defvar |$ThrowAwayMode| '|$ThrowAwayMode| "interp constant")
+
+\end{chunk}
+
 \defun{interpret2}{interpret2}
 This is the late interpretCoerce. I removed the call to
 coerceInteractive, so it only does the JENKS cases    ALBI
@@ -7092,6 +7171,22 @@ coerceInteractive, so it only does the JENKS cases    ALBI
 
 \end{chunk}
 
+\defdollar{runTestFlag}
+This is referenced by maPrin to stash output by recordAndPrint to not
+print type/time
+\begin{chunk}{initvars}
+(defvar |$runTestFlag| nil)
+
+\end{chunk}
+
+\defdollar{mkTestFlag}
+This referenced by READLN to stash input by maPrin to stash output
+by recordAndPrint to write i/o onto \verb|$testStream|
+\begin{chunk}{initvars}
+(defvar |$mkTestFlag| nil)  
+
+\end{chunk}
+
 \defun{recordAndPrint}{Result Output Printing}
 Prints out the value x which is of type m, and records the changes
 in environment \verb|$e| into \verb|$InteractiveFrame|
@@ -7215,7 +7310,6 @@ It is controlled with the {\tt )se me any} command.
 \calls{printTypeAndTimeNormal}{msgText}
 \calls{printTypeAndTimeNormal}{sayKeyedMsg}
 \calls{printTypeAndTimeNormal}{justifyMyType}
-\usesdollar{printTypeAndTimeNormal}{outputLines}
 \usesdollar{printTypeAndTimeNormal}{collectOutput}
 \usesdollar{printTypeAndTimeNormal}{printTypeIfTrue}
 \usesdollar{printTypeAndTimeNormal}{printTimeIfTrue}
@@ -7381,7 +7475,6 @@ sameUnionBranch(uArg, m) ==
 \end{chunk}
 
 \defunsec{intloopInclude}{Include a file into the stream}
-\calls{intloopInclude}{ST}
 \calls{intloopInclude}{intloopInclude0}
 \begin{chunk}{defun intloopInclude}
 (defun |intloopInclude| (name n)
@@ -7825,6 +7918,7 @@ contiguous comment spanning enough lines to overflow the stack.
 
 \defun{incZip}{incZip}
 Axiom ``zips'' a function together with two delays into a delay.
+
 \calls{incZip}{Delay}
 \calls{incZip}{incZip1}
 \label{incZip}
@@ -7930,6 +8024,7 @@ This function takes
 \item {\bf states} -- a list of integers
 \end{enumerate}
 and constructs a call to \bfref{Delay}.
+
 \calls{incLude}{Delay}
 \calls{include}{incLude1}
 \label{incLude}
@@ -7953,48 +8048,56 @@ and constructs a call to \bfref{Delay}.
 (defvar |Top| 1 "used in incLude1 for parsing")
 
 \end{chunk}
+
 \defvar{IfSkipToEnd}
 \begin{chunk}{initvars}
 (defvar |IfSkipToEnd| 10 "used in incLude1 for parsing")
 
 \end{chunk}
+
 \defvar{IfKeepPart}
 \begin{chunk}{initvars}
 (defvar |IfKeepPart| 11 "used in incLude1 for parsing")
 
 \end{chunk}
+
 \defvar{IfSkipPart}
 \begin{chunk}{initvars}
 (defvar |IfSkipPart| 12 "used in incLude1 for parsing")
 
 \end{chunk}
+
 \defvar{ElseifSkipToEnd}
 \begin{chunk}{initvars}
 (defvar |ElseifSkipToEnd| 20 "used in incLude1 for parsing")
 
 \end{chunk}
+
 \defvar{ElseifKeepPart}
 \begin{chunk}{initvars}
 (defvar |ElseifKeepPart| 21 "used in incLude1 for parsing")
 
 \end{chunk}
+
 \defvar{ElseifSkipPart}
 \begin{chunk}{initvars}
 (defvar |ElseifSkipPart| 22 "used in incLude1 for parsing")
 
 \end{chunk}
+
 \defvar{ElseSkipToEnd}
 \begin{chunk}{initvars}
 (defvar |ElseSkipToEnd| 30 "used in incLude1 for parsing")
 
 \end{chunk}
+
 \defvar{ElseKeepPart}
 \begin{chunk}{initvars}
 (defvar |ElseKeepPart| 31 "used in incLude1 for parsing")
 
 \end{chunk}
 
-\defvar{Top?}
+\defun{Top?}{Top?}
 \calls{Top?}{quotient}
 \begin{chunk}{defun Top? 0}
 (defun |Top?| (|st|)
@@ -8002,7 +8105,8 @@ and constructs a call to \bfref{Delay}.
  (eql (quotient |st| 10) 0))
 
 \end{chunk}
-\defvar{If?}
+
+\defun{If?}{If?}
 \calls{If?}{quotient}
 \begin{chunk}{defun If?}
 (defun |If?| (|st|)
@@ -8010,15 +8114,17 @@ and constructs a call to \bfref{Delay}.
  (eql (quotient |st| 10) 1))
 
 \end{chunk}
-\defvar{Elseif?}
-\calls{Elseif?}{QUOTIENT}
+
+\defun{Elseif?}{Elseif?}
+\calls{Elseif?}{quotient}
 \begin{chunk}{defun Elseif?}
 (defun |Elseif?| (|st|)
  "used in incLude1 for parsing"
  (eql (quotient |st| 10) 2))
 
 \end{chunk}
-\defvar{Else?}
+
+\defun{Else?}{Else?}
 \calls{Else?}{QUOTIENT}
 \begin{chunk}{defun Else?}
 (defun |Else?| (|st|)
@@ -8026,7 +8132,8 @@ and constructs a call to \bfref{Delay}.
  (eql (quotient |st| 10) 3))
 
 \end{chunk}
-\defvar{SkipEnd?}
+
+\defun{SkipEnd?}{SkipEnd?}
 \calls{SkipEnd?}{remainder}
 \begin{chunk}{defun SkipEnd?}
 (defun |SkipEnd?| (|st|)
@@ -8034,7 +8141,8 @@ and constructs a call to \bfref{Delay}.
  (eql (remainder |st| 10) 0))
 
 \end{chunk}
-\defvar{KeepPart?}
+
+\defun{KeepPart?}{KeepPart?}
 \calls{KeepPart?}{remainder}
 \begin{chunk}{defun KeepPart?}
 (defun |KeepPart?| (|st|)
@@ -8042,7 +8150,8 @@ and constructs a call to \bfref{Delay}.
  (eql (remainder |st| 10) 1))
 
 \end{chunk}
-\defvar{SkipPart?}
+
+\defun{SkipPart?}{SkipPart?}
 \calls{SkipPart?}{remainder}
 \begin{chunk}{defun SkipPart?}
 (defun |SkipPart?| (|st|)
@@ -8050,7 +8159,8 @@ and constructs a call to \bfref{Delay}.
  (eql (remainder |st| 10) 2))
 
 \end{chunk}
-\defvar{Skipping?}
+
+\defun{Skipping?}{Skipping?}
 \calls{Skipping?}{KeepPart?}
 \begin{chunk}{defun Skipping?}
 (defun |Skipping?| (|st|)
@@ -8289,7 +8399,7 @@ and constructs a call to \bfref{Delay}.
 \end{chunk}
 
 \defun{xlOK}{xlOK}
-\calls{xlOK}{lxOK1}
+\calls{xlOK}{xlOK1}
 \begin{chunk}{defun xlOK}
 (defun |xlOK| (extrablanks string localnum fileobj)
  (|xlOK1| extrablanks string string localnum fileobj))
@@ -8349,7 +8459,7 @@ and constructs a call to \bfref{Delay}.
 \end{chunk}
 
 \defun{inclmsgPrematureEOF}{inclmsgPrematureEOF}
-\calls{inclmsgPrematureEOF}{origin}
+\calls{inclmsgPrematureEOF}{theorigin}
 \begin{chunk}{defun inclmsgPrematureEOF 0}
 (defun |inclmsgPrematureEOF| (ufo)
  (list 'S2CI0002 (list (|theorigin| ufo))))
@@ -8363,7 +8473,7 @@ and constructs a call to \bfref{Delay}.
 \end{chunk}
 
 \defun{porigin}{porigin}
-\calls{porigin}{stringp}
+\calls{porigin}{pfname}
 \begin{chunk}{defun porigin}
 (defun |porigin| (x)
  (if (stringp x)
@@ -8388,7 +8498,7 @@ and constructs a call to \bfref{Delay}.
 
 \defun{xlSkip}{xlSkip}
 \calls{xlSkip}{incLine}
-\calls{xlSkip}{CONCAT}
+\calls{xlSkip}{concat}
 \begin{chunk}{defun xlSkip}
 (defun |xlSkip| (extrablanks str localnum fileobj)
  (let ((string (concat "-- Omitting:" str)) (globalnum -1))
@@ -8408,7 +8518,7 @@ and constructs a call to \bfref{Delay}.
 \end{chunk}
 
 \defun{inclmsgSay}{inclmsgSay}
-\calls{inclmsgSay}{id}
+\calls{inclmsgSay}{theid}
 \begin{chunk}{defun inclmsgSay}
 (defun |inclmsgSay| (str)
  (list 'S2CI0001 (list (|theid| str))))
@@ -8489,7 +8599,7 @@ and constructs a call to \bfref{Delay}.
 
 \end{verbatim}
 \calls{inclmsgFileCycle}{porigin}
-\calls{inclmsgFileCycle}{id}
+\calls{inclmsgFileCycle}{theid}
 \begin{chunk}{defun inclmsgFileCycle}
 (defun |inclmsgFileCycle| (ufos fn)
  (let (cycle f1 flist)
@@ -8530,7 +8640,7 @@ and constructs a call to \bfref{Delay}.
 \end{chunk}
 
 \defun{inclmsgConActive}{inclmsgConActive}
-\calls{inclmsgConActive}{id}
+\calls{inclmsgConActive}{theid}
 \begin{chunk}{defun inclmsgConActive}
 (defun |inclmsgConActive| (n)
  (list 'S2CI0006 (list (|theid| n))))
@@ -8547,7 +8657,7 @@ and constructs a call to \bfref{Delay}.
 \end{chunk}
 
 \defun{inclmsgConStill}{inclmsgConStill}
-\calls{inclmsgConStill}{id}
+\calls{inclmsgConStill}{theid}
 \begin{chunk}{defun inclmsgConStill}
 (defun |inclmsgConStill| (n)
  (list 'S2CI0007 (list (|theid| n))))
@@ -8598,7 +8708,7 @@ and constructs a call to \bfref{Delay}.
 \end{chunk}
 
 \defun{inclmsgPrematureFin}{inclmsgPrematureFin}
-\calls{inclmsgPrematureFin}{origin}
+\calls{inclmsgPrematureFin}{theorigin}
 \begin{chunk}{defun inclmsgPrematureFin}
 (defun |inclmsgPrematureFin| (ufo)
  (list 'S2CI0003 (list (|theorigin| ufo))))
@@ -8643,8 +8753,8 @@ and constructs a call to \bfref{Delay}.
 
 \defun{inclmsgIfSyntax}{inclmsgIfSyntax}
 \calls{inclmsgIfSyntax}{concat}
-\calls{inclmsgIfSyntax}{id}
-\calls{inclmsgIfSyntax}{origin}
+\calls{inclmsgIfSyntax}{theid}
+\calls{inclmsgIfSyntax}{theorigin}
 \begin{chunk}{defun inclmsgIfSyntax}
 (defun |inclmsgIfSyntax| (ufo found context)
  (setq found (concat ")" found))
@@ -8780,8 +8890,6 @@ b ==> 7
 \end{chunk}
 
 \defun{incCommand?}{incCommand?}
-\calls{incCommand?}{char}
-\label{incCommand?}
 \sig{incCommand?}{String}{Boolean}
 \begin{chunk}{defun incCommand? 0}
 (defun |incCommand?| (s)
@@ -8885,6 +8993,7 @@ b ==> 7
 
 \defun{incRgen}{incRgen}
 Note that incRgen1 recursively calls this function.
+
 \calls{incRgen}{Delay}
 \calls{incRgen}{incRgen1}
 \begin{chunk}{defun incRgen}
@@ -20442,6 +20551,215 @@ Get the entry for key k on x's association list
 
 \end{chunk}
 
+\subsection{Special Category Names}
+
+\defdollar{EmptyMode}
+The CONTAINED predicate is used to walk internal structures
+such as modemaps to see if the $X$ object occurs within $Y$. One
+particular use is in a function called isPartialMode to decide
+if a modemap is only partially complete. If this is true then the 
+modemap will contain the constant \verb|$EmptyMode|. So the call 
+ends up being CONTAINED \verb|$EmptyMode| Y. 
+\begin{chunk}{initvars}
+(defvar |$EmptyMode| '|$EmptyMode|)
+
+\end{chunk}
+
+\defdollar{AnonymousFunction}
+\begin{chunk}{initvars}
+(defvar |$AnonymousFunction| '(|AnonymousFunction|))
+
+\end{chunk}
+
+\defdollar{Any}
+\begin{chunk}{initvars}
+(defvar |$Any|   '(|Any|))
+
+\end{chunk}
+
+\defdollar{BFtag}
+\begin{chunk}{initvars}
+(defvar |$BFtag| '|:BF:|)
+
+\end{chunk}
+
+\defdollar{Boolean}
+\begin{chunk}{initvars}
+(defvar |$Boolean| '(|Boolean|))
+
+\end{chunk}
+
+\defdollar{Category}
+\begin{chunk}{initvars}
+(defvar |$Category| '(|Category|))
+
+\end{chunk}
+
+\defdollar{Domain}
+\begin{chunk}{initvars}
+(defvar |$Domain| '(|Domain|))
+
+\end{chunk}
+
+\defdollar{Exit}
+\begin{chunk}{initvars}
+(defvar |$Exit|  '(|Exit|))
+
+\end{chunk}
+
+\defdollar{Expression}
+\begin{chunk}{initvars}
+(defvar |$Expression| '(|OutputForm|))
+
+\end{chunk}
+
+\defdollar{OutputForm}
+\begin{chunk}{initvars}
+(defvar |$OutputForm| '(|OutputForm|))
+
+\end{chunk}
+
+\defdollar{BigFloat}
+\begin{chunk}{initvars}
+(defvar |$BigFloat| '(|Float|))
+
+\end{chunk}
+
+\defdollar{Float}
+\begin{chunk}{initvars}
+(defvar |$Float| '(|Float|))
+
+\end{chunk}
+
+\defdollar{DoubleFloat}
+\begin{chunk}{initvars}
+(defvar |$DoubleFloat| '(|DoubleFloat|))
+
+\end{chunk}
+
+\defdollar{FontTable}
+\begin{chunk}{initvars}
+(defvar |$FontTable| '(|FontTable|))
+
+\end{chunk}
+
+\defdollar{Integer}
+\begin{chunk}{initvars}
+(defvar |$Integer| '(|Integer|))
+
+\end{chunk}
+
+\defdollar{ComplexInteger}
+\begin{chunk}{initvars}
+(defvar |$ComplexInteger| (LIST '|Complex| |$Integer|))
+
+\end{chunk}
+
+\defdollar{Mode}
+\begin{chunk}{initvars}
+(defvar |$Mode| '(|Mode|))
+
+\end{chunk}
+
+\defdollar{NegativeInteger}
+\begin{chunk}{initvars}
+(defvar |$NegativeInteger| '(|NegativeInteger|))
+
+\end{chunk}
+
+\defdollar{NonNegativeInteger}
+\begin{chunk}{initvars}
+(defvar |$NonNegativeInteger| '(|NonNegativeInteger|))
+
+\end{chunk}
+
+\defdollar{NonPositiveInteger}
+\begin{chunk}{initvars}
+(defvar |$NonPositiveInteger| '(|NonPositiveInteger|))
+
+\end{chunk}
+
+\defdollar{PositiveInteger}
+\begin{chunk}{initvars}
+(defvar |$PositiveInteger| '(|PositiveInteger|))
+
+\end{chunk}
+
+\defdollar{RationalNumber}
+\begin{chunk}{initvars}
+(defvar |$RationalNumber| '(|Fraction| (|Integer|)))
+
+\end{chunk}
+
+\defdollar{String}
+\begin{chunk}{initvars}
+(defvar |$String| '(|String|))
+
+\end{chunk}
+
+\defdollar{StringCategory}
+\begin{chunk}{initvars}
+(defvar |$StringCategory| '(|StringCategory|))
+
+\end{chunk}
+
+\defdollar{Symbol}
+\begin{chunk}{initvars}
+(defvar |$Symbol| '(|Symbol|))
+
+\end{chunk}
+
+\defdollar{Void}
+\begin{chunk}{initvars}
+(defvar |$Void|  '(|Void|))
+
+\end{chunk}
+
+\defdollar{QuotientField}
+\begin{chunk}{initvars}
+(defvar |$QuotientField| '|Fraction|)
+
+\end{chunk}
+
+\defdollar{FunctionalExpression}
+\begin{chunk}{initvars}
+(defvar |$FunctionalExpression| '|Expression|)
+
+\end{chunk}
+
+\defdollar{defaultFunctionTargets}
+\begin{chunk}{initvars}
+(defvar |$defaultFunctionTargets| '(()))
+
+\end{chunk}
+
+;; Old names
+\defdollar{SmallInteger}
+\begin{chunk}{initvars}
+(defvar |$SmallInteger| '(|SingleInteger|))
+
+\end{chunk}
+
+;; New Names
+\defdollar{SingleFloat}
+\begin{chunk}{initvars}
+(defvar |$SingleFloat| '(|SingleFloat|))
+
+\end{chunk}
+
+\defdollar{DoubleFloat}
+\begin{chunk}{initvars}
+(defvar |$DoubleFloat| '(|DoubleFloat|))
+
+\end{chunk}
+
+\defdollar{SingleInteger}
+\begin{chunk}{initvars}
+(defvar |$SingleInteger| '(|SingleInteger|))
+
+\end{chunk}
+
+
 \chapter{Function Selection}
 \begin{verbatim}
 New Selection of Modemaps
@@ -39846,20 +40164,6 @@ nodes during the bottom up phase.
 This is the declared type of an identifier.
 \end{itemize}
 
-There are several different environments used in the interpreter:
-\begin{itemize}
-\item {\bf \verb|$InteractiveFrame|:} this is the environment where the user
-values are stored.  Any side effects of evaluation of a top-level
-expression are stored in this environment.  It is always used as
-the starting environment for interpretation.
-\item {\bf \$e:} 
-This is the name used for \verb|$InteractiveFrame| while interpreting.
-\item {\bf \verb|$env|:} This is local environment used by the interpreter.
-Only temporary information (such as types of local variables is
-stored in \verb|$env|.
-It is thrown away after evaluation of each expression.
-\end{itemize}
-
 Frequently used global variables:
 \begin{itemize}
 \item {\bf \verb|$genValue|}: if true then evaluate generated code,
@@ -39869,8 +40173,6 @@ we are compiling.
 (unused except in map printing)
 \item {\bf \verb|$mapList|}: list of maps being type analyzed, used in
 recursive map type anlysis.
-\item {\bf \verb|$compilingMap|}: true when compiling a map, used to
-detect where to THROW when interpret-only is invoked
 \item {\bf \verb|$compilingLoop|}: true when compiling a loop body,
 used to control nesting level of interp-only loop CATCH points
 \item {\bf \verb|$interpOnly|}: true when in interpret only mode, used
@@ -60897,16 +61199,6 @@ It is used in removeUndoLines in the undo mechanism.
 The \verb|$displayStartMsgs| variable is used in restart but is not
 set so this is likely a bug.
 
-\subsection{\$e}
-The \verb|$e| variable is set to the value of
-\verb|$InteractiveFrame| which is set in restart to the value of the
-call to the makeInitialModemapFrame function. This function simply
-returns a copy of the variable \verb|$InitialModemapFrame|.
-
-Thus \verb|$e| is a copy of the variable \verb|$InitialModemapFrame|.
-
-This variable is used in the undo mechanism.
-
 \subsection{\$erMsgToss}
 The \verb|$erMsgToss| variable is set to NIL in SpadInterpretStream.
 
@@ -60993,12 +61285,6 @@ move around the ring.
 The \verb|$interpreterFrameRing| is set to a pair whose car is set to
 the result of emptyInterpreterFrame
 
-\subsection{\$InteractiveFrame}
-The \verb|$InteractiveFrame| is set in the restart function 
-to the value of the
-call to the makeInitialModemapFrame function. This function simply
-returns a copy of the variable \verb|$InitialModemapFrame|
-
 \subsection{\$intRestart}
 The \verb|$intRestart| variable is used in intloop but has no value.
 This is probably a bug. While the variable's value is unchanged the
@@ -61040,9 +61326,6 @@ The \verb|$ncMsgList| is set to NIL in SpadInterpretStream.
 \subsection{\$newcompErrorCount}
 The \verb|$newcompErrorCount| is set to 0 in SpadInterpretStream.
 
-\subsection{\$newspad}
-The \verb|$newspad| is set to T in ncTopLevel.
-
 \subsection{\$nopos}
 The \verb|$nopos| variable is used in SpadInterpretStream but does
 not appear to have a value and is likely a bug.
@@ -61077,9 +61360,6 @@ The \verb|$previousBindings| is a copy of the
 compute the delta(i)s stored in \verb|$frameRecord|.
 This is part of the undo mechanism.
 
-\subsection{\$PrintCompilerMessageIfTrue}
-The \verb|$PrintCompilerMessageIfTrue| variable is set to NIL in spad.
-
 \subsection{\$reportundo}
 The \verb|$reportundo| variable is used in diffAlist. It was not normally
 bound but has been set to T in initvars. If the variable is set
diff --git a/changelog b/changelog
index 987038a..7943c4f 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20141215 tpd src/axiom-website/patches.html 20141215.01.tpd.patch
+20141215 tpd books/bookvol5 merge from vmlisp.lisp, treeshake 
 20141214 rrr src/axiom-website/patches.html 20141214.01.rrr.patch
 20141214 rrr buglist: bug 7272: )savesystem does not build a restorable session
 20141214 rrr Raymond Rogers <raymond.rogers72@gmail.com>
diff --git a/patch b/patch
index 764ba11..091a543 100644
--- a/patch
+++ b/patch
@@ -1,9 +1,4 @@
-buglist: bug 7272: )savesystem does not build a restorable session
+books/bookvol5 merge from vmlisp.lisp, treeshake 
 
-Raymond Rogers <raymond.rogers72@gmail.com> reports that
-
-a:=4
-)savesystem foo
-
-./foo
-a <=== should be 4 but is a Variable
+Move some code from vmlisp.lisp to bookvol5.
+Find missing functions and variables, add them to bookvol5
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index c45f061..f87d24d 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4810,6 +4810,8 @@ books/bookvol5 merge and remove regress.lisp<br/>
 projects: progress report for week ending 12/13/14<br/>
 <a href="patches/20141214.01.rrr.patch">20141214.01.rrr.patch</a>
 buglist: bug 7272: )savesystem does not build a restorable session<br/>
+<a href="patches/20141215.01.tpd.patch">20141215.01.tpd.patch</a>
+books/bookvol5 merge from vmlisp.lisp, treeshake<br/>
  </body>
 </html>
 
diff --git a/src/interp/vmlisp.lisp.pamphlet b/src/interp/vmlisp.lisp.pamphlet
index fb7acc1..ba70dd2 100644
--- a/src/interp/vmlisp.lisp.pamphlet
+++ b/src/interp/vmlisp.lisp.pamphlet
@@ -11,7 +11,6 @@ documentclass{article}
 
 \begin{chunk}{*}
 
-
 ;      VM LISP EMULATION PACKAGE
 ;      Lars Ericson, Barry Trager, Martial Schor, tim daly, LVMCL, et al
 ;      IBM Thomas J. Watson Research Center
@@ -2185,8 +2184,6 @@ do the compile, and then rename the result back to code.o.
 (def-boot-val |$EmptyList| ()                            "???")
 \end{chunk}
 \begin{chunk}{*}
-;(def-boot-val |$EmptyMode| '|$EmptyMode|    "compiler constant")
-;(def-boot-val |$EM| |$EmptyMode|                    "???")
 (def-boot-val |$EmptyString| ""                     "???")
 (def-boot-val |$EmptyVector| '#()                     "???")
 (def-boot-val |$Expression| '(|Expression|)            "???")
@@ -2220,9 +2217,6 @@ do the compile, and then rename the result back to code.o.
 (def-boot-var |$hasYield|                            "???")
 (def-boot-var |$ignoreCommentsIfTrue|                    "???")
 (def-boot-var |$Index|                                    "???")
-;(def-boot-val |$InitialDomainsInScope|
-;          '((|Boolean|) |$EmptyMode| |$NoValueMode|)
-;          "???")
 (def-boot-var |$insideCapsuleFunctionIfTrue|            "???")
 (def-boot-var |$insideCategoryIfTrue|                    "???")
 (def-boot-var |$insideCoerceInteractiveHardIfTrue|  "???")
@@ -2231,11 +2225,8 @@ do the compile, and then rename the result back to code.o.
 (def-boot-var |$insideExpressionIfTrue|                    "???")
 (def-boot-var |$insideFunctorIfTrue|                    "???")
 (def-boot-var |$insideWhereIfTrue|                    "???")
-(def-boot-val |$instantRecord| (MAKE-HASHTABLE 'ID) "???")
 (def-boot-val |$Integer| '(|Integer|)                    "???")
 (def-boot-val |$IntegerOpt| '(|Integer| . OPT)            "???")
-(def-boot-val |$InteractiveFrame| '((NIL))            "top level environment")
-(def-boot-var |$InteractiveMode|                    "Interactive>System.boot")
 (def-boot-val |$InteractiveModemapFrame| '((NIL))   "???")
 (def-boot-var |$InteractiveTimingStatsIfTrue|            "???")
 (def-boot-var |$LastCxArg|                            "???")
@@ -2316,7 +2307,6 @@ for primitive domains.        Also used by putInLocalDomainReferences and optCal
         |SmallInteger| |String| |Boolean| |Symbol| |BooleanFunctions|)
    "used in optCall to decide which domains can be optimized")
 (def-boot-val |$PrintBox| '(|PrintBox|)                    "???")
-(def-boot-var |$PrintCompilerMessagesIfTrue|            "???")
 (def-boot-val |$printConStats| nil  "display constructor cache totals")
 (def-boot-val |$printLoadMsgs|        't            "Interpreter>SetVarT.boot")
 (def-boot-var |$PrintOnly|                            "Compiler>LispLib.boot")
@@ -2367,7 +2357,6 @@ for primitive domains.        Also used by putInLocalDomainReferences and optCal
 (def-boot-val |$Symbol| '(|Symbol|)                    "???")
 (def-boot-val |$SymbolOpt| '(|Symbol| . OPT)            "???")
 (def-boot-val |$tempCategoryTable| (MAKE-HASHTABLE 'UEQUAL) "???")
-(def-boot-val |$ThrowAwayMode| '|$ThrowAwayMode|    "interp constant")
 (def-boot-val |$timerOn| t                            "???")
 (def-boot-var |$topOp|                                   "See displayPreCompilationErrors")
 (def-boot-var |$tokenCommands|                            "???")
@@ -2409,7 +2398,6 @@ for primitive domains.        Also used by putInLocalDomainReferences and optCal
 (def-boot-val |$useDCQnotLET| () "checked in DEF-LET for use of DCQ")
 (def-boot-fun BUMPCOMPERRORCOUNT ()                    "errorSupervisor1")
 (def-boot-var |$VariableCount|                      "???")
-(def-boot-val |$Void| '(|Void|) "compiler constant")
 (def-boot-var |$warningStack|                       "???")
 (def-boot-val |$whereList| () "referenced in format boot formDecl2String")
 (def-boot-var |$xCount|                             "???")
@@ -2425,7 +2413,6 @@ for primitive domains.        Also used by putInLocalDomainReferences and optCal
 (def-boot-val |$inputPromptType| '|step|  "checked in MKPROMPT")
 (def-boot-val |$IOindex| 0                 "step counter")
 
-(defvar |$compilingMap| ())
 (defvar |$definingMap| nil)
  
 (defmacro KAR (ARG) `(ifcar ,arg))
@@ -2821,7 +2808,6 @@ for primitive domains.        Also used by putInLocalDomainReferences and optCal
  
 (defmacro SUCHTHATCLAUSE  (&rest L) (LIST 'COND (LIST (CADR L) (CAR L))))
  
-(defvar $NEWSPAD NIL)
 (defvar $BOOT NIL)
  
 (defmacro spadDO (&rest OL)
@@ -5379,7 +5365,6 @@ now the function is defined but does nothing.
 (defvar |$newCompCompare| nil "compare new compiler with old")
 (defvar |$compileOnlyCertainItems| nil "list of functions to compile")
 (defvar |$doNotCompileJustPrint| nil "switch for compile")
-(defvar |$PrintCompilerMessageIfTrue| t)
 (defvar |$Rep| '|$Rep| "should be bound to gensym? checked in coerce")
 ;; the following initialization of $ must not be a defvar
 ;; since that make $ special
@@ -5388,8 +5373,6 @@ now the function is defined but does nothing.
 (defvar |$Representation| nil "checked in compNoStacking")
 (defvar |$definition| nil "checked in DomainSubstitutionFunction")
 (defvar |$Attributes| nil "global attribute list used in JoinInner")
-(defvar |$env| nil "checked in isDomainValuedVariable")
-(defvar |$e| nil "checked in isDomainValuedVariable")
 (defvar |$getPutTrace| nil)
 (defvar |$specialCaseKeyList| nil "checked in optCall")
 (defvar |$formulaFormat| nil "if true produce script formula output")
@@ -5598,7 +5581,6 @@ now the function is defined but does nothing.
 (SETQ |$updateCatTableIfTrue| 'T)
 
 (SETQ |$ConstructorCache| (MAKE-HASHTABLE 'ID))
-(SETQ |$instantRecord| (MAKE-HASHTABLE 'ID))
 (SETQ |$immediateDataSymbol| '|--immediateData--|)
 
 (SETQ |$useIntegerSubdomain| 'T)
@@ -5693,7 +5675,6 @@ now the function is defined but does nothing.
 
 (|SETQ| |$BasicDomains| '(|Integer| |Float| |Symbol| |Boolean| |String|))
 
-(SETQ |$PrintCompilerMessagesIfTrue| NIL)
 (SETQ |$printStorageIfTrue| NIL) ;; storage info disabled in common lisp
 (SETQ |$mostRecentOpAlist| NIL)
 (SETQ |$noEnv| NIL)
@@ -5715,12 +5696,10 @@ now the function is defined but does nothing.
 (SETQ |$Domain| '(|Domain|))
 (SETQ |$Exit|  '(|Exit|))
 (SETQ |$Expression| '(|OutputForm|))
-
 (SETQ |$OutputForm| '(|OutputForm|))
 (SETQ |$BigFloat| '(|Float|))
 (SETQ |$Float| '(|Float|))
 (SETQ |$DoubleFloat| '(|DoubleFloat|))
-
 (SETQ |$FontTable| '(|FontTable|))
 (SETQ |$Integer| '(|Integer|))
 (SETQ |$ComplexInteger| (LIST '|Complex| |$Integer|))
@@ -5737,24 +5716,19 @@ now the function is defined but does nothing.
 (SETQ |$QuotientField| '|Fraction|)
 (SETQ |$FunctionalExpression| '|Expression|)
 (SETQ |$defaultFunctionTargets| '(()))
-
-;; Old names
 (SETQ |$SmallInteger| '(|SingleInteger|))
-
-;; New Names
 (SETQ |$SingleFloat| '(|SingleFloat|))
 (SETQ |$DoubleFloat| '(|DoubleFloat|))
 (SETQ |$SingleInteger| '(|SingleInteger|))
 
 (SETQ $TOP_LEVEL T)
 (SETQ $NE (LIST (LIST NIL)))
-(SETQ |$InteractiveFrame| (LIST (LIST NIL)))
 (SETQ |$gauss01| '(|gauss| 0 1))
 (SETQ |$LocalFrame| (LIST (LIST NIL)))
 (SETQ |$DomainsInScope| (LIST NIL))
 (SETQ |$EmptyEnvironment| '((NIL)))
 (SETQ |$NETail| (CONS |$EmptyEnvironment| NIL))
-(SETQ |$EmptyMode| '|$EmptyMode|)
+
 (SETQ |$DummyFunctorNames| '(|Mapping|))
 (SETQ |$form| NIL)
 (SETQ |$DoubleQuote| '"\"")
@@ -5830,9 +5804,6 @@ now the function is defined but does nothing.
         )))
     ))))
 
-;(SETQ |$InitialDomainsInScope|
-;  '(|$EmptyMode| |$NoValueMode|))
-
 (SETQ |$NRTflag| T)
 (SETQ |$NRTaddForm| NIL)
 (SETQ |$NRTdeltaList| NIL)
@@ -5876,13 +5847,6 @@ now the function is defined but does nothing.
 (SETQ |$testOutputLineStack| NIL)  ;; saves lines to be printed
                                    ;; (needed to convert lines for use
                                    ;; in hypertex)
-(SETQ |$runTestFlag| NIL)          ;; referenced by maPrin to stash
-                                   ;; output by recordAndPrint to not
-                                   ;; print type/time
-(SETQ |$mkTestFlag| NIL)           ;; referenced by READLN to stash input
-                                   ;; by maPrin to stash output
-                                   ;; by recordAndPrint to write i/o
-                                   ;; onto $testStream
 (SETQ |$mkTestInputStack| NIL)     ;; saves input for $testStream
                                    ;; (see READLN)
 (SETQ |$mkTestOutputStack| NIL)    ;; saves output for $testStream
