diff --git a/books/bookvol0.pamphlet b/books/bookvol0.pamphlet
index e9df36c..be3d288 100644
--- a/books/bookvol0.pamphlet
+++ b/books/bookvol0.pamphlet
@@ -1416,7 +1416,7 @@ floating point number to the nearest integer while the other truncates
 {\bf floating point} number. To extract the fractional part of a floating
 point number use the function {\bf fractionPart} but note that the sign
 of the result depends on the sign of the argument. Axiom obtains the
-fractional partof $x$ using $x - truncate(x)$:
+fractional part of $x$ using $x - truncate(x)$:
 
 \spadcommand{round(3.77623)}
 $$
@@ -1642,8 +1642,8 @@ Given that we can define expressions involving symbols, how do we actually
 compute the result when the symbols are assigned values? The answer is to
 use the {\bf eval} function which takes an expression as its first argument
 followed by a list of assignments. For example, to evaluate the expressions
-{\bf XDummy} and {xyDummy} resulting from their respective assignments above
-we type:
+{\bf XDummy} and {\bf xyDummy} resulting from their respective assignments 
+above we type:
 
 \spadcommand{eval(xDummy,x=3)}
 $$
@@ -1762,7 +1762,7 @@ $$
 
 Note that the semicolon ``;'' in the examples above allows several
 expressions to be entered on one line. The result of the last expression
-is displayed. remember also that the percent symbol ``\%'' is used to
+is displayed. Remember also that the percent symbol ``\%'' is used to
 represent the result of a previous calculation.
 
 To display rational numbers in a base other than 10 the function {\bf radix}
@@ -1834,7 +1834,7 @@ is available and returns a partial fraction of one term. To decompose this
 further the numerator can be obtained using {\bf firstNumer} and the 
 denominator with {\bf firstDenom}. The whole part of a partial fraction can
 be retrieved using {\bf wholePart} and the number of fractional parts can
-be found using the function {\bf numberOf FractionalTerms}:
+be found using the function {\bf numberOfFractionalTerms}:
 
 \spadcommand{t := partialFraction(234,40)}
 $$
@@ -1994,11 +1994,11 @@ include them in the object files produced and make them availabe to the
 end user for documentation purposes.
 
 A description is placed {\bf before} a calculation begins with three
-``+++'' signs and a description placed after a calculation begins with
-two plus symbols ``++''. The so-called ``plus plus'' comments are used
-within the algebra files and are processed by the compiler to add
-to the documentation. The so-called ``minus minus'' comments are ignored
-everywhere.
+``+'' signs (i.e. ``+++'') and a description placed after a calculation
+begins with two plus symbols (i.e.``++''). The so-called ``plus plus''
+comments are used within the algebra files and are processed by the
+compiler to add to the documentation. The so-called ``minus minus''
+comments are ignored everywhere.
 
 \subsection{Control of Result Types}
 In earlier sections the type of an expression was converted to another
@@ -2718,7 +2718,7 @@ $$
 
 (note that {\tt ARRAY1} is an abbreviation for the type 
 {\tt OneDimensionalArray}.) Other types based on one-dimensional arrays are
-{\tt Vector}, {\tt String}, and {tt Bits}.
+{\tt Vector}, {\tt String}, and {\tt Bits}.
 
 \spadcommand{map!(i +-> i+1,a); a}
 $$
@@ -2899,8 +2899,8 @@ $$
 There are several things to point out concerning these
 examples. First, although flexible arrays are mutable, making copies
 of these arrays creates separate entities. This can be seen by the
-fact that the modification of element {\sl b.2} above did not alter
-{\sl a}. Second, the {\bf merge!}  function can take an extra argument
+fact that the modification of element {\sl g.2} above did not alter
+{\sl f}. Second, the {\bf merge!}  function can take an extra argument
 before the two arrays are merged. The argument is a comparison
 function and defaults to ``{\tt <=}'' if omitted. Lastly, 
 {\bf shrinkable} tells the system whether or not to let flexible arrays
@@ -3320,7 +3320,7 @@ current block whereas {\bf break} leaves the current loop. The {\bf return}
 statement leaves the current function.
 
 To skip the rest of a loop body and continue the next iteration of the loop
-use the {\bf iterate} statement (the -- starts a comment in Axiom)
+use the {\bf iterate} statement (the {\tt --} starts a comment in Axiom)
 \begin{verbatim}
 i := 0
 repeat
@@ -3595,8 +3595,8 @@ for w in ["This", "is", "your", "life!"] repeat
 The second form of the {\bf for} loop syntax includes a ``{\bf such that}''
 clause which must be of type {\bf Boolean}:
 \begin{center}
-for {\sl var} | {\sl BoolExpr} in {\sl seg} repeat {\sl loopBody}\\
-for {\sl var} | {\sl BoolExpr} in {\sl list} repeat {\sl loopBody}
+for {\sl var} in {\sl seg} \textbar\ {\sl BoolExpr} repeat {\sl loopBody}\\
+for {\sl var} in {\sl list} \textbar\ {\sl BoolExpr} repeat {\sl loopBody}
 \end{center}
 Some examples are:
 \begin{verbatim}
@@ -4262,7 +4262,7 @@ is the same as if you had entered
 
 Axiom statements in an input file
 (see \sectionref{ugInOutIn})
-can use indentation to indicate the program structure .
+can use indentation to indicate the program structure.
 (see \sectionref{ugLangBlocks}).
 
 \subsection{Comments}
@@ -4337,7 +4337,7 @@ $$
 $$
 \returnType{Type: Fraction Integer}
 
-To factor fractions, you have to pmap {\bf factor} onto the numerator
+To factor fractions, you have to map {\bf factor} onto the numerator
 and denominator.
 
 \spadcommand{map(factor,r)}
@@ -4870,17 +4870,17 @@ $$
 $$
 \returnType{Type: FlexibleArray Integer}
 
-Flexible arrays are used to implement ``heaps.'' A {\it heap} is an
-example of a data structure called a {\it priority queue}, where
-elements are ordered with respect to one another. A heap
+Flexible arrays are used to implement ``heaps.'' A {\it heap}
 \footnote{\domainref{Heap}}
+is an example of a data structure called a {\it priority queue}, where
+elements are ordered with respect to one another. A heap
 is organized so as to optimize insertion
 and extraction of maximum elements.  The {\bf extract!} operation
 returns the maximum element of the heap, after destructively removing
 that element and reorganizing the heap so that the next maximum
 element is ready to be delivered.
 
-An easy way to create a heap is to apply the operation {\it heap}
+An easy way to create a heap is to apply the operation {\bf heap}
 to a list of values.
 \spadcommand{h := heap [-4,7,11,3,4,-7]}
 $$
@@ -4904,16 +4904,16 @@ $$
 A {\it binary tree} is a ``tree'' with at most two branches
 \index{tree} per node: it is either empty, or else is a node
 consisting of a value, and a left and right subtree (again, binary
-trees). \footnote{\domainref{BinarySearchTree}}
+trees). 
 Examples of binary tree types are {\tt BinarySearchTree}, 
 {\tt PendantTree}, {\tt TournamentTree}, and {\tt BalancedBinaryTree}.
-\footnote{\domainref{BalancedBinaryTree}}
+
 
 A {\it binary search tree} is a binary tree such that,
 \index{tree!binary search} for each node, the value of the node is
 \index{binary search tree} greater than all values (if any) in the
 left subtree, and less than or equal all values (if any) in the right
-subtree.
+subtree. \footnote{\domainref{BinarySearchTree}}
 \spadcommand{binarySearchTree [5,3,2,9,4,7,11]}
 $$
 \left[
@@ -4926,6 +4926,7 @@ $$
 \returnType{Type: BinarySearchTree PositiveInteger}
 
 A {\it balanced binary tree} is useful for doing modular computations.
+\footnote{\domainref{BalancedBinaryTree}}
 \index{balanced binary tree} Given a list $lm$ of moduli,
 \index{tree!balanced binary} {\bf modTree}$(a,lm)$ produces
 a balanced binary tree with the values $a \bmod m$ at its leaves.
@@ -4944,7 +4945,7 @@ corresponding structure like streams for infinite collections.
 
 Create sets using braces ``\{`` and ``\}'' rather than brackets.
 
-\spadcommand{fs := set[1/3,4/5,-1/3,4/5]}
+\spadcommand{fs := set [1/3,4/5,-1/3,4/5]}
 $$
 \left\{
 -{\frac{1}{3}},  {\frac{1}{3}},  {\frac{4}{5}} 
@@ -24953,8 +24954,8 @@ and using member? we can test if the stack holds a given element:
    member?(14,a)
        true
 \end{verbatim}
-Also see \domainref{Stack}, \domainref{Queue}, \domainref{Dequeue},
-\domainref{Heap}, and \domainref{BagAggregate}
+Also see \domainref{Stack}, \domainref{Queue}, \domainref{Dequeue} and
+\domainref{Heap}.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \domainhead{AssociationList}
@@ -25296,7 +25297,7 @@ $$
 \returnType{Type: Union(Record(particular: Expression Integer,
 basis: List Expression Integer),...)}
 
-See \sectionref{ugProblemDEQPage}
+See \sectionref{ugProblemDEQ}
 for this kind of use of {\tt BasicOperator}.
 
 Use the single argument form of \spadfunFrom{operator}{BasicOperator}
@@ -27439,7 +27440,7 @@ $$
 $$
 \returnType{Type: Complex Fraction Integer}
 
-Use a conversion (see \sectionref{ugTypesConvertPage})
+Use a conversion (see \sectionref{ugTypesConvert})
 to view the last object as a fraction of complex integers.
 
 \spadcommand{\% :: Fraction Complex Integer }
@@ -29558,8 +29559,8 @@ Gr\"{o}bner basis calculations which can be very
 sensitive to term ordering.
 
 For more information on related topics, see
-\sectionref{ugIntroVariablesPage},
-\sectionref{ugTypesConvertPage},
+\sectionref{ugIntroVariables},
+\sectionref{ugTypesConvert},
 \domainref{Polynomial}, \domainref{UnivariatePolynomial}, and
 \domainref{MultivariatePolynomial}.
 
@@ -30098,7 +30099,7 @@ $$
 $$
 \returnType{Type: Expression Integer}
 
-See \sectionref{ugIntroCalcDerivPage}
+See \sectionref{ugIntroCalcDeriv}
 for more examples of expressions and derivatives.
 
 \spadcommand{D(e, [x, y], [1, 2]) }
@@ -30137,12 +30138,12 @@ $$
 \returnType{Type: Expression Integer}
 
 See 
-\sectionref{ugIntroCalcLimitsPage} and 
-\sectionref{ugIntroSeriesPage} for more examples of expressions and
+\sectionref{ugIntroCalcLimits} and 
+\sectionref{ugIntroSeries} for more examples of expressions and
 calculus.  Differential equations involving expressions are discussed
-in \sectionref{ugProblemDEQPage} on page~\pageref{ugProblemDEQPage}.
+in \sectionref{ugProblemDEQ} on page~\pageref{ugProblemDEQ}.
 Chapter 8 has many advanced examples: see
-\sectionref{ugProblemIntegrationPage}
+\sectionref{ugProblemIntegration}
 for a discussion of Axiom's integration facilities.
 
 When an expression involves no ``symbol kernels'' (for example, 
@@ -30234,7 +30235,7 @@ $$
 $$
 \returnType{Type: Expression Integer}
 
-See \sectionref{ugUserRulesPage} for
+See \sectionref{ugUserRules} for
 examples of how to write your own rewrite rules for expressions.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30485,7 +30486,7 @@ $$
 \returnType{Type: Boolean}
 
 Another way to get the zero and one factored objects is to use
-package calling (see \sectionref{ugTypesPkgCallPage}).
+package calling (see \sectionref{ugTypesPkgCall}).
 
 \spadcommand{0\$Factored(Integer)}
 $$
@@ -30675,7 +30676,7 @@ $$
 \returnType{Type: Union("nil",...)}
 
 For more information about factored objects and their use, see
-\domainref{Factored} and \sectionref{ugProblemGaloisPage}.
+\domainref{Factored} and \sectionref{ugProblemGalois}.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \domainhead{File}
@@ -31163,7 +31164,7 @@ Arbitrary-precision floating-point arithmetic typically takes twenty
 to two hundred times more time than hardware floating point.
 
 For more information about Axiom's numeric and graphic facilities, see
-\sectionref{ugGraphPage}, \sectionref{ugProblemNumeric}, and
+\sectionref{ugGraph}, \sectionref{ugProblemNumeric}, and
 \domainref{DoubleFloat}.
 
 \subsection{Introduction to Float}
@@ -31201,7 +31202,7 @@ $$
 
 \subsection{Conversion Functions}
 
-You can use conversion (\sectionref{ugTypesConvertPage} to
+You can use conversion (\sectionref{ugTypesConvert} to
 go back and forth between {\tt Integer}, {\tt Fraction Integer} and
 {\tt Float}, as appropriate.
 
@@ -31432,6 +31433,7 @@ This resets the output printing to the default behavior.
 \returnType{Type: Void}
 
 \subsection{An Example: Determinant of a Hilbert Matrix}
+\label{ugxFloatHilbert}
 
 Consider the problem of computing the determinant of a {\tt 10} by
 {\tt 10} Hilbert matrix.  The $(i,j)$-th entry of a Hilbert
@@ -31652,7 +31654,7 @@ $$
 $$
 \returnType{Type: Complex Fraction Integer}
 
-Conversion is discussed in detail in \sectionref{ugTypesConvertPage}.
+Conversion is discussed in detail in \sectionref{ugTypesConvert}.
 
 \spadcommand{g :: FRAC COMPLEX INT }
 $$
@@ -32666,7 +32668,7 @@ Axiom provides many operations for manipulating arbitrary precision
 integers.  In this section we will show some of those that come from
 {\tt Integer} itself plus some that are implemented in other packages.
 More examples of using integers are in the following sections:
-\sectionref{ugIntroNumbersPage},
+\sectionref{ugIntroNumbers},
 \domainref{IntegerNumberTheoryFunctions},
 \domainref{DecimalExpansion}, \domainref{BinaryExpansion}, 
 \domainref{HexadecimalExpansion}, and \domainref{RadixExpansion}.
@@ -32906,7 +32908,7 @@ $$
 
 One integer is evenly divisible by another if the remainder is zero.
 The operation \spadfunFrom{exquo}{Integer} can also be used.  See
-\sectionref{ugTypesUnionsPage} for an example.
+\sectionref{ugTypesUnions} for an example.
 
 \spadcommand{zero?(167604736446952 rem 2003644)}
 $$
@@ -41467,7 +41469,7 @@ $$
 $$
 \returnType{Type: SquareMatrix(2,Integer)}
 
-For more information, see \sectionref{ugUserMakePage}.
+For more information, see \sectionref{ugUserMake}.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \domainhead{MappingPackage1}
@@ -42272,9 +42274,9 @@ $$
 \returnType{Type: Matrix Integer}
 
 For more information on related topics, see 
-\sectionref{ugIntroTwoDimPage}, 
-\sectionref{ugProblemEigenPage},
-\sectionref{ugxFloatHilbertPage},
+\sectionref{ugIntroTwoDim}, 
+\sectionref{ugProblemEigen},
+\sectionref{ugxFloatHilbert},
 \domainref{Permanent}, \domainref{Vector}, \domainref{OneDimensionalArray},
 and \domainref{TwoDimensionalArray}.
 
@@ -44033,7 +44035,7 @@ to think of solving problems in general ways.  Axiom facilities for
 factoring polynomials created with {\tt Polynomial} are currently
 restricted to the integer and rational number coefficient cases.
 There are more complete facilities for factoring univariate
-polynomials: see \sectionref{ugProblemFactorPage}.
+polynomials: see \sectionref{ugProblemFactor}.
 
 The standard arithmetic operations are available for polynomials.
 
@@ -44554,6 +44556,113 @@ $$
 \returnType{Type: Quaternion Fraction Integer}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\domainhead{Queue}
+
+A queue is an aggregate structure which allows insertion at the back of
+the queue, deletion at the front of the queue and inspection of the
+front element. Queues are similar to a line of people where you can
+join the line at the back, leave the line at the front, or see the
+person in the front of the line.
+
+Queues can be created from a list of elements using the {\bf queue}
+function.
+
+\spadcommand{a:Queue INT:= queue [1,2,3,4,5]}
+$$
+[1,2,3,4,5]
+$$
+\returnType{Type: Queue Integer}
+
+An empty queue can be created using the {\bf empty} function. 
+
+\spadcommand{a:Queue INT:= empty()}
+$$
+[]
+$$
+\returnType{Type: Queue Integer}
+
+The {\bf empty?} function will return {\tt true} if the queue contains
+no elements.
+
+\spadcommand{empty? a}
+$$
+true
+$$
+\returnType{Type: Boolean}
+
+Queues modify their arguments so they use the exclamation mark ``!''
+as part of the function name.
+
+The {\bf dequeue!} operation removes the front element of the queue and
+returns it.  The queue is one element smaller. The {\bf extract!} does
+the same thing with a different name.
+
+\spadcommand{a:Queue INT:= queue [1,2,3,4,5]}
+$$ 
+[1,2,3,4,5]
+$$
+\returnType{Type: Queue Integer}
+
+\spadcommand{dequeue! a}
+$$
+1
+$$
+\returnType{Type: PositiveInteger}
+
+\spadcommand{a}
+$$
+[2,3,4,5]
+$$
+\returnType{Type: Queue Integer}
+
+The {\bf enqueue!} function adds a new element to the back of the
+queue and returns the element that was pushed. The queue is one
+element larger.  The {\bf insert!} function does the same thing with a
+different name.
+
+\spadcommand{a:Queue INT:= queue [1,2,3,4,5]}
+$$
+[1,2,3,4,5]
+$$
+\returnType{Type: Queue Integer}
+
+\spadcommand{enqueue!(9,a)}
+$$
+9
+$$
+\returnType{Type: PositiveInteger}
+
+\spadcommand{a}
+$$
+[1,2,3,4,5,9]
+$$
+\returnType{Type: Queue Integer}
+
+To read the top element without changing the queue use the {\bf front}
+function.
+
+\spadcommand{a:Queue INT:= queue [1,2,3,4,5]}
+$$
+[1,2,3,4,5]
+$$
+\returnType{Type: Queue Integer}
+
+\spadcommand{front a}
+$$
+1
+$$
+\returnType{Type: PositiveInteger}
+
+\spadcommand{a}
+$$
+[1,2,3,4,5]
+$$
+\returnType{Type: Queue Integer}
+
+For more information on related topics, see Stack
+\sectionref{Stack}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \domainhead{RadixExpansion}
 
 It possible to expand numbers in general bases.
@@ -47397,7 +47506,7 @@ $$
 
 To avoid confusion with {\tt Integer}, which is the default type for
 integers, you usually need to work with declared variables
-(\sectionref{ugTypesDeclarePage}).
+(\sectionref{ugTypesDeclare}).
 \ldots
 
 \spadcommand{a := 1234 :: SingleInteger }
@@ -47406,7 +47515,7 @@ $$
 $$
 \returnType{Type: SingleInteger}
 
-or use package calling (\sectionref{ugTypesPkgCallPage}).
+or use package calling (\sectionref{ugTypesPkgCall}).
 
 \spadcommand{b := 124\$SingleInteger }
 $$
@@ -47483,7 +47592,7 @@ $$
 
 Many other operations are available for small integers, including many
 of those provided for {\tt Integer}.  To see the other operations, use
-the Browse HyperDoc facility (\sectionref{ugBrowsePage})
+the Browse HyperDoc facility (\sectionref{ugBrowse})
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \domainhead{SparseTable}
@@ -47675,7 +47784,7 @@ $$
 \returnType{Type: SquareMatrix(2,Polynomial Complex Integer)}
  
 For more information on related topics, see
-\sectionref{ugTypesWritingModesPage}, \sectionref{ugTypesExposePage},
+\sectionref{ugTypesWritingModes}, \sectionref{ugTypesExpose},
 and \domainref{Matrix}.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -48072,6 +48181,111 @@ NewSparseMultivariatePolynomial(Integer,
 OrderedVariableList [x,y,z,t])))}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\domainhead{Stack}
+
+A stack is an aggregate structure which allows insertion, deletion, and
+inspection of the ``top'' element. Stacks are similar to any pile of
+paper where you can only add to the pile, remove the top paper from
+the pile, or read the top paper. 
+
+Stacks can be created from a list of elements using the {\bf stack}
+function.
+
+\spadcommand{a:Stack INT:= stack [1,2,3,4,5]}
+$$
+[1,2,3,4,5]
+$$
+\returnType{Type: Stack Integer}
+
+An empty stack can be created using the {\bf empty} function. 
+
+\spadcommand{a:Stack INT:= empty()}
+$$
+[]
+$$
+\returnType{Type: Stack Integer}
+
+The {\bf empty?} function will return {\tt true} if the stack contains
+no elements.
+
+\spadcommand{empty? a}
+$$
+true
+$$
+\returnType{Type: Boolean}
+
+Stacks modify their arguments so they use the exclamation mark ``!''
+as part of the function name.
+
+The {\bf pop!} function removes the top element of the stack and
+returns it.  The stack is one element smaller. The {\bf extract!}
+function does the same thing with a different name.
+
+\spadcommand{a:Stack INT:= stack [1,2,3,4,5]}
+$$ 
+[1,2,3,4,5]
+$$
+\returnType{Type: Stack Integer}
+
+\spadcommand{pop! a}
+$$
+1
+$$
+\returnType{Type: PositiveInteger}
+
+\spadcommand{a}
+$$
+[2,3,4,5]
+$$
+\returnType{Type: Stack Integer}
+
+The {\bf push!} operation adds a new top element to the stack and returns
+the element that was pushed. The stack is one element larger. 
+The {\bf insert!} does the same thing with a different name.
+
+\spadcommand{a:Stack INT:= stack [1,2,3,4,5]}
+$$
+[1,2,3,4,5]
+$$
+\returnType{Type: Stack Integer}
+
+\spadcommand{push!(9,a)}
+$$
+9
+$$
+\returnType{Type: PositiveInteger}
+
+\spadcommand{a}
+$$
+[9,1,2,3,4,5]
+$$
+\returnType{Type: Stack Integer}
+
+To read the top element without changing the stack use the {\bf top}
+function.
+
+\spadcommand{a:Stack INT:= stack [1,2,3,4,5]}
+$$
+[1,2,3,4,5]
+$$
+\returnType{Type: Stack Integer}
+
+\spadcommand{top a}
+$$
+1
+$$
+\returnType{Type: PositiveInteger}
+
+\spadcommand{a}
+$$
+[1,2,3,4,5]
+$$
+\returnType{Type: Stack Integer}
+
+For more information on related topics, see Queue
+\sectionref{Queue}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \domainhead{Stream}
 
 A {\tt Stream} object is represented as a list whose last element
@@ -48193,8 +48407,8 @@ $$
 
 The packages {\tt StreamFunctions1}, {\tt StreamFunctions2} and 
 {\tt StreamFunctions3} export some useful stream manipulation operations.
-For more information, see \sectionref{ugLangItsPage},
-\sectionref{ugProblemSeriesPage},
+For more information, see \sectionref{ugLangIts},
+\sectionref{ugProblemSeries},
 \domainref{ContinuedFraction}, and \domainref{List}.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -49094,7 +49308,7 @@ The {\tt TwoDimensionalArray} domain is used for storing data in a
 two dimensional data structure indexed by row and by column.  Such an array
 is a homogeneous data structure in that all the entries of the array
 must belong to the same Axiom domain (although see
-\sectionref{ugTypesAnyNonePage}. Each
+\sectionref{ugTypesAnyNone}. Each
 array has a fixed number of rows and columns specified by the user and
 arrays are not extensible.  In Axiom, the indexing of two-dimensional
 arrays is one-based.  This means that both the ``first'' row of an
@@ -49999,12 +50213,12 @@ $$
 $$
 \returnType{Type: UnivariatePolynomial(b1,Fraction Polynomial Integer)}
 
-See \sectionref{ugProblemFactorPage} 
+See \sectionref{ugProblemFactor} 
 for a discussion of the factorization facilities
 in Axiom for univariate polynomials.
 For more information on related topics, see
-\sectionref{ugIntroVariablesPage},
-\sectionref{ugTypesConvertPage},
+\sectionref{ugIntroVariables},
+\sectionref{ugTypesConvert},
 \domainref{Polynomial}, \domainref{MultivariatePolynomial}, and
 \domainref{DistributedMultivariatePolynomial}.
 
@@ -59978,7 +60192,7 @@ As you see, the operation {\bf inverse} is exported.
 \label{ugBrowseMiscellaneousFeatures}
 
 \subsection{The Description Page for Operations}
-\label{ugBrowseDescriptionPage}
+\label{ugBrowseDescription}
 
 From the constructor page of {\tt Matrix},
 click on {\bf Operations} to bring up the table of operations
@@ -60323,7 +60537,7 @@ used to represent mathematical symbols is given in
 Introduction to NAG On-Line Documentation
 \index{manpageXXonline}.
 Advice about choosing a routine from a particular {\em chapter} can be found in
-the Chapter Documents \index{FoundationLibraryDocPage}.
+the Chapter Documents \index{FoundationLibraryDoc}.
 
 % ----------------------------------------------------------------------
 \subsubsection{Correspondence Between Fortran and Axiom types}
@@ -60474,6 +60688,7 @@ example for that routine.
 
 % ----------------------------------------------------------------------
 \subsection{Providing values for Argument Subprograms}
+\label{aspSection}
 \index{aspSection}
 % ----------------------------------------------------------------------
 
@@ -60565,6 +60780,7 @@ d01ajf(0.0 ,1.0, 0.0, 1.0e-5, 800, 200, -1, "asp.f")
 
 % ----------------------------------------------------------------------
 \subsection{General Fortran-generation utilities in Axiom}
+\label{generalFortran}
 \index{generalFortran}
 % ----------------------------------------------------------------------
 
@@ -61002,7 +61218,7 @@ by the {\tt nagd} daemon process which may run on a different host.
 The {\tt nagman} local agent is started by default whenever you
 start Axiom. The {\tt nagd} server must be started separately.
 Instructions for installing and running the server are supplied
-in \sectionref{nugNagd}.
+in by NAG.
 Use the {\tt )set naglink host} system command
 to point your local agent to a server in your network.
 
@@ -61511,6 +61727,7 @@ browser in order to see correct mathML mathematics output. See
 the faq file for details.
 
 \section{)cd}
+\label{ugSysCmdcd}
 \index{ugSysCmdcd}
 
 \index{cd}
@@ -61690,6 +61907,7 @@ system function and constructor caches.
 
 
 \section{)compile}
+\label{ugSysCmdcompile}
 \index{ugSysCmdcompile}
 
 \index{compile}
@@ -62652,6 +62870,8 @@ command may be used to  drop out  of Axiom  into Common Lisp.
 This command is obsolete. Use {\tt )library} instead.
 
 \section{)trace}
+\label{ugSysCmdtrace}
+\label{ugSysCmdltrace}
 \index{ugSysCmdltrace}
 
 \index{ltrace}
@@ -62834,6 +63054,7 @@ The {\tt )quiet} option suppresses output while the file is being read.
 
 
 \section{)set}
+\label{ugSysCmdset}
 \index{ugSysCmdset}
 
 \index{set}
@@ -63466,6 +63687,7 @@ lines of your program.
 
 \section{)what}
 \index{ugSysCmdwhat}
+\label{ugSysCmdwhat}
 
 \index{what}
 
diff --git a/books/bookvol1.pamphlet b/books/bookvol1.pamphlet
index 8a65b54..5281098 100644
--- a/books/bookvol1.pamphlet
+++ b/books/bookvol1.pamphlet
@@ -1756,7 +1756,7 @@ is the same as if you had entered
 \end{verbatim}
 
 Axiom statements in an {\bf input} file
-can use indentation to indicate the program structure .
+can use indentation to indicate the program structure.
 
 \subsection{Comments}
 \label{sec:Comments}
@@ -1899,7 +1899,7 @@ floating point number to the nearest integer while the other truncates
 {\bf floating point} number. To extract the fractional part of a floating
 point number use the function {\bf fractionPart} but note that the sign
 of the result depends on the sign of the argument. Axiom obtains the
-fractional partof $x$ using $x - truncate(x)$:
+fractional part of $x$ using $x - truncate(x)$:
 
 \index{round}
 \spadcommand{round(3.77623)}
@@ -2307,7 +2307,7 @@ $$
 \index{; output suppression}
 Note that the semicolon ``;'' in the examples above allows several
 expressions to be entered on one line. The result of the last expression
-is displayed. remember also that the percent symbol ``\%'' is used to
+is displayed. Remember also that the percent symbol ``\%'' is used to
 represent the result of a previous calculation.
 
 To display rational numbers in a base other than 10 the function {\bf radix}
@@ -2387,7 +2387,7 @@ is available and returns a partial fraction of one term. To decompose this
 further the numerator can be obtained using {\bf firstNumer} and the 
 denominator with {\bf firstDenom}. The whole part of a partial fraction can
 be retrieved using {\bf wholePart} and the number of fractional parts can
-be found using the function {\bf numberOf FractionalTerms}:
+be found using the function {\bf numberOfFractionalTerms}:
 
 \spadcommand{t := partialFraction(234,40)}
 $$
@@ -2561,11 +2561,11 @@ include them in the object files produced and make them available to the
 end user for documentation purposes.
 
 A description is placed {\bf before} a calculation begins with three
-``+++'' signs and a description placed after a calculation begins with
-two plus signs ``++''. The so-called ``plus plus'' comments are used
-within the algebra files and are processed by the compiler to add
-to the documentation. The so-called ``minus minus'' comments are ignored
-everywhere.
+``+'' signs (i.e. ``+++'') and a description placed after a calculation
+begins with two plus symbols (i.e.``++''). The so-called ``plus plus''
+comments are used within the algebra files and are processed by the
+compiler to add to the documentation. The so-called ``minus minus''
+comments are ignored everywhere.
 
 \subsection{Control of Result Types}
 \index{:: conversion}
@@ -4161,7 +4161,7 @@ statement leaves the current function.
 
 \index{iterate}
 To skip the rest of a loop body and continue the next iteration of the loop
-use the {\bf iterate} statement (the -- starts a comment in Axiom)
+use the {\bf iterate} statement (the {\tt --} starts a comment in Axiom)
 \begin{verbatim}
 i := 0
 repeat
@@ -4465,8 +4465,8 @@ for w in ["This", "is", "your", "life!"] repeat
 The second form of the {\bf for} loop syntax includes a ``{\bf such that}''
 clause which must be of type {\bf Boolean}:
 \begin{center}
-for {\sl var} | {\sl BoolExpr} in {\sl seg} repeat {\sl loopBody}\\
-for {\sl var} | {\sl BoolExpr} in {\sl list} repeat {\sl loopBody}
+for {\sl var} in {\sl seg} \textbar\ {\sl BoolExpr} repeat {\sl loopBody}\\
+for {\sl var} in {\sl list} \textbar\ {\sl BoolExpr} repeat {\sl loopBody}
 \end{center}
 We can iterate over a segment
 \begin{verbatim}
@@ -4672,7 +4672,7 @@ $$
 $$
 \returnType{Type: Fraction Integer}
 
-To factor fractions, you have to pmap {\bf factor} onto the numerator
+To factor fractions, you have to map {\bf factor} onto the numerator
 and denominator.
 
 \index{map}
@@ -5245,7 +5245,7 @@ returns the maximum element of the heap, after destructively removing
 that element and reorganizing the heap so that the next maximum
 element is ready to be delivered.
 
-An easy way to create a heap is to apply the operation {\it heap}
+An easy way to create a heap is to apply the operation {\bf heap}
 to a list of values.
 \index{heap}
 \spadcommand{h := heap [-4,7,11,3,4,-7]}
@@ -5318,7 +5318,7 @@ corresponding structure like streams for infinite collections.
 Create sets using braces ``\{`` and ``\}'' rather than brackets.
 
 \index{set}
-\spadcommand{fs := set[1/3,4/5,-1/3,4/5]}
+\spadcommand{fs := set [1/3,4/5,-1/3,4/5]}
 $$
 \left\{
 -{1 \over 3},  {1 \over 3},  {4 \over 5} 
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 2d780fb..5e4556e 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -319,9 +319,9 @@ of effort. We would like to acknowledge and thank the following people:
 "Gary Cornell           Meino Cramer           Claire Di Crescenzo"
 "David Cyganski"
 "Timothy Daly Sr.       Timothy Daly Jr.       James H. Davenport"
-"Didier Deshommes       Michael Dewar"
-"Jean Della Dora        Gabriel Dos Reis       Claire DiCrescendo"
-"Sam Dooley             Lionel Ducos           Martin Dunstan"
+"Didier Deshommes       Michael Dewar          Jean Della Dora"
+"Gabriel Dos Reis       Claire DiCrescendo     Sam Dooley"
+"Lionel Ducos           Lee Duhem              Martin Dunstan"
 "Brian Dupee            Dominique Duval"
 "Robert Edwards         Heow Eide-Goodman      Lars Erickson"
 "Richard Fateman        Bertfried Fauser       Stuart Feldman"
@@ -10782,7 +10782,7 @@ If the frame is found we return the environment portion of the frame
 otherwise we construct an empty environment and return it.
 The initial values of an empty frame are created here. This function
 returns a single frame that will be placed in the frame ring.
-\calls{frameEnvironment}{frameinteractive}
+\calls{frameEnvironment}{frameInteractive}
 <<defun frameEnvironment>>=
 (defun |frameEnvironment| (fname)
  "Get Named Frame Environment (aka Interactive)"
@@ -10899,7 +10899,7 @@ of the interesting interpreter data structures from that frame.
 Each frame contains its name as the 0th element.  We simply walk all
 the frames and if we find one we return it.
 \calls{findFrameInRing}{boot-equal}
-\calls{findFrameInRing}{framename}
+\calls{findFrameInRing}{frameName}
 \usesdollar{findFrameInRing}{interpreterFrameRing}
 <<defun findFrameInRing>>=
 (defun |findFrameInRing| (name)
diff --git a/books/bookvol7.1.pamphlet b/books/bookvol7.1.pamphlet
index 324d395..50c7d72 100644
--- a/books/bookvol7.1.pamphlet
+++ b/books/bookvol7.1.pamphlet
@@ -21057,7 +21057,7 @@ Reset \spadfunFrom{digits}{Float} to its default value.
 \tab{5}\spadcommand{digits 20}
 \end{paste}\end{patch}
 
-f@
+@
 \section{fname.ht}
 \pagehead{FileNameXmpPage}{fname.ht}{FileName}
 <<fname.ht>>=
@@ -69961,7 +69961,7 @@ structure like streams for infinite collections.
 %Create sets using braces (\axiomSyntax{\{} and \axiomSyntax{\}})
 %rather than brackets.
 }{
-\spadpaste{fs := set[1/3,4/5,-1/3,4/5] \bound{fs}}
+\spadpaste{fs := set [1/3,4/5,-1/3,4/5] \bound{fs}}
 }
 
 A \spadgloss{multiset}
diff --git a/changelog b/changelog
index 47ae9ce..6759e97 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,10 @@
+20091219 tpd src/axiom-website/patches.html 20091219.01.lxd.patch
+20091219 lxd books/bookvol7.1 fix typos
+20091219 lxd books/bookvol1 fix typos
+20091219 lxd books/bookvol0 fix typos
+20091219 tpd books/bookvol5 add Lee Duham to credits list
+20091219 tpd readme add Lee Duham to credits list
+20091219 lxd Lee Duhem <lee.duhem@gmail.com>
 20091218 tpd src/axiom-website/patches.html 20091218.03.tpd.patch
 20091218 tpd src/interp/Makefile remove cformat.lisp
 20091218 tpd src/interp/format.lisp add documentation from cformat
diff --git a/readme b/readme
index f734e4a..bf76111 100644
--- a/readme
+++ b/readme
@@ -204,9 +204,9 @@ at the axiom command prompt will prettyprint the list.
 "Gary Cornell           Meino Cramer           Claire Di Crescenzo"
 "David Cyganski"
 "Timothy Daly Sr.       Timothy Daly Jr.       James H. Davenport"
-"Didier Deshommes       Michael Dewar"
-"Jean Della Dora        Gabriel Dos Reis       Claire DiCrescendo"
-"Sam Dooley             Lionel Ducos           Martin Dunstan"
+"Didier Deshommes       Michael Dewar          Jean Della Dora"
+"Gabriel Dos Reis       Claire DiCrescendo     Sam Dooley"
+"Lionel Ducos           Lee Duhem              Martin Dunstan"
 "Brian Dupee            Dominique Duval"
 "Robert Edwards         Heow Eide-Goodman      Lars Erickson"
 "Richard Fateman        Bertfried Fauser       Stuart Feldman"
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 91e6cf9..389c28e 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2318,5 +2318,7 @@ books/bookvol5 tree shake code from cparse, posit, vmlisp<br/>
 books/bookvol10.4 document RepeatedSquaring<br/>
 <a href="patches/20091218.03.tpd.patch">20091218.02.tpd.patch</a>
 books/bookvol5 tree shake code from cformat, remove cformat.lisp<br/>
+<a href="patches/20091219.01.lxd.patch">20091219.01.lxd.patch</a>
+books/bookvol0,1,7.1 Lee Duham fix typos, added to credits<br/>
  </body>
 </html>
