diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 1d38171..5e232fb 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -15777,7 +15777,7 @@ This command is obsolete. Use )library instead.
 We keep this command around in case anyone has the original Axiom book.
 \calls{load}{sayKeyedMsg}
 <<defun load>>=
-(defun |load| (&rest ignore)
+(defun |load| (ignore)
  (declare (ignore ignore))
  (|sayKeyedMsg| 'S2IU0003 nil))
 
@@ -30789,6 +30789,78 @@ but the Axiom semantics are not the same. Because Axiom was originally
 written in Maclisp, then VMLisp, and then Common Lisp some of these old
 semantics survive. 
 
+\section{IndexCard}
+\defun{alqlGetOrigin}{IndexCard origin function support}
+\calls{alqlGetOrigin}{dbPart}
+\calls{alqlGetOrigin}{charPosition}
+\calls{alqlGetOrigin}{substring}
+<<defun alqlGetOrigin>>=
+(defun |alqlGetOrigin| (x)
+ (let (field k)
+  (setq field (|dbPart| x 5 1))
+  (setq k (|charPosition| #\( field 2))
+  (substring field 1 (1- k))))
+
+@
+
+\defun{alqlGetParams}{IndexCard origin function support}
+\calls{alqlGetParams}{dbPart}
+\calls{alqlGetParams}{charPosition}
+\calls{alqlGetParams}{substring}
+<<defun alqlGetParams>>=
+(defun |alqlGetParams| (x)
+ (let (field k)
+  (setq field (|dbPart| x 5 1))
+  (setq k (|charPosition| #\( field 2))
+  (substring field k nil)))
+
+@
+
+\defun{alqlGetKindString}{IndexCard elt function support}
+\calls{alqlGetKindString}{dbPart}
+\calls{alqlGetKindString}{substring}
+<<defun alqlGetKindString>>=
+(defun |alqlGetKindString| (x)
+ (if (or (char= (elt x 0) #\a) (char= (elt x 0) #\o))
+  (substring (|dbPart| x 5 1) 0 1)
+  (substring x 0 1)))) 
+
+@
+
+\section{OperationsQuery}
+
+\defun{getBrowseDatabase}{OperationQuery getDatabase function support}
+This function, called as \verb|getBrowseDatabase(arg)| returns a list of
+appropriate entries in the browser database. The legal values for arg are
+\begin{itemize}
+\item ``o'' (operations)
+\item ``k'' (constructors)
+\item ``d'' (domains)
+\item ``c'' (categories)
+\item ``p'' (packages)
+\end{itemize}
+\calls{getBrowseDatabase}{member}
+\calls{getBrowseDatabase}{grepConstruct}
+\usesdollar{getBrowseDatabase}{includeUnexposed?}
+<<defun getBrowseDatabase>>=
+(defun |getBrowseDatabase| (kind)
+ (let (|$includeUnexposed?|)
+ (declare (special |$includeUnexposed?|))
+  (setq |$includeUnexposed?| t)
+  (when (|member| kind '("o" "k" "c" "d" "p"))
+   (|grepConstruct| "*" (intern kind)))))
+
+@
+
+\section{Database}
+\defun{stringMatches?}{Database elt function support}
+\calls{stringMatches?}{basicMatch?}
+<<defun stringMatches?>>=
+(defun |stringMatches?| (pattern subject)
+ (when fixp (|basicMatch?| pattern subject) t))
+
+@
+
 \section{FileName}
 \defun{fnameMake}{FileName filename function implementation}
 \calls{fnameMake}{StringToDir}
@@ -31425,6 +31497,9 @@ See Steele Common Lisp 1990 pp305-307
 <<defun addTraceItem>>
 <<defun allConstructors>>
 <<defun allOperations>>
+<<defun alqlGetOrigin>>
+<<defun alqlGetParams>>
+<<defun alqlGetKindString>>
 <<defun alreadyOpened?>>
 <<defun apropos>>
 <<defun asec>>
@@ -31604,6 +31679,7 @@ See Steele Common Lisp 1990 pp305-307
 <<defun getAliasIfTracedMapParameter>>
 <<defun getAndSay>>
 <<defun getBpiNameIfTracedMap>>
+<<defun getBrowseDatabase>>
 <<defun get-current-directory>>
 <<defun getdatabase>>
 <<defun getenviron>>
@@ -32134,6 +32210,7 @@ See Steele Common Lisp 1990 pp305-307
 <<defun statisticsInitialization>>
 <<defun streamChop>>
 <<defun StreamNull>>
+<<defun stringMatches?>>
 <<defun StringToDir>>
 <<defun stripLisp>>
 <<defun stripSpaces>>
diff --git a/changelog b/changelog
index 4eca7cc..ed8154c 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20100120 tpd src/axiom-website/patches.html 20100120.03.tpd.patch
+20100120 tpd src/interp/alql.lisp removed
+20100120 tpd src/interp/Makefile remove alql.lisp
+20100120 tpd books/bookvol5 merge and remove alql.lisp
 20100120 tpd src/axiom-website/patches.html 20100120.02.tpd.patch
 20100120 tpd src/interp/Makefile remove packtran
 20100120 tpd src/interp/packtran.lisp removed
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index e88ca26..aa4f869 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2398,5 +2398,7 @@ books/bookvol5 merge and delete fname.lisp<br/>
 src/interp/intfile.lisp removed<br/>
 <a href="patches/20100120.02.tpd.patch">20100120.02.tpd.patch</a>
 src/interp/intint.lisp merge and remove packtran.lisp<br/>
+<a href="patches/20100120.03.tpd.patch">20100120.03.tpd.patch</a>
+books/bookvol5 merge and remove alql.lisp<br/>
  </body>
 </html>
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet
index 4a542d0..3b7e753 100644
--- a/src/interp/Makefile.pamphlet
+++ b/src/interp/Makefile.pamphlet
@@ -140,7 +140,7 @@ The file http.lisp contains code to enable browser-based hyperdoc
 and graphics.
 <<environment>>=
 OBJS= ${OUT}/vmlisp.${O}      \
-      ${OUT}/alql.${O}        ${OUT}/buildom.${O} \
+      ${OUT}/buildom.${O} \
       ${OUT}/cattable.${O}    \
       ${OUT}/cfuns.${O} \
       ${OUT}/clam.${O}        ${OUT}/clammed.${O} \
@@ -1183,29 +1183,6 @@ ${MID}/vmlisp.lisp: ${IN}/vmlisp.lisp.pamphlet
 
 @
 
-\subsection{alql.lisp}
-<<alql.o (OUT from MID)>>=
-${OUT}/alql.${O}: ${MID}/alql.lisp
-	@ echo 136 making ${OUT}/alql.${O} from ${MID}/alql.lisp
-	@ ( cd ${MID} ; \
-	  if [ -z "${NOISE}" ] ; then \
-	   echo '(progn  (compile-file "${MID}/alql.lisp"' \
-             ':output-file "${OUT}/alql.${O}") (${BYE}))' | ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file "${MID}/alql.lisp"' \
-             ':output-file "${OUT}/alql.${O}") (${BYE}))' | ${DEPSYS} \
-             >${TMP}/trace ; \
-	  fi )
-
-@
-<<alql.lisp (MID from IN)>>=
-${MID}/alql.lisp: ${IN}/alql.lisp.pamphlet
-	@ echo 137 making ${MID}/alql.lisp from ${IN}/alql.lisp.pamphlet
-	@ (cd ${MID} ; \
-	   ${TANGLE} ${IN}/alql.lisp.pamphlet >alql.lisp )
-
-@
-
 \subsection{buildom.lisp}
 <<buildom.o (OUT from MID)>>=
 ${OUT}/buildom.${O}: ${MID}/buildom.lisp
@@ -3737,9 +3714,6 @@ clean:
 <<debugsys>>
 <<databases>>
 
-<<alql.o (OUT from MID)>>
-<<alql.lisp (MID from IN)>>
-
 <<apply.o (OUT from MID)>>
 <<apply.lisp (MID from IN)>>
 
diff --git a/src/interp/alql.lisp.pamphlet b/src/interp/alql.lisp.pamphlet
deleted file mode 100644
index 66d786e..0000000
--- a/src/interp/alql.lisp.pamphlet
+++ /dev/null
@@ -1,89 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp alql.lisp}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-<<*>>=
-
-;; Note: this seems to only be used in the ICARD (IndexCard) domain
-
-(IN-PACKAGE "BOOT" )
-
-;getBrowseDatabase(kind) ==
-;  $includeUnexposed? : local := true
-;  not FUNCALL("member",kind,'("o" "k" "c" "d" "p")) => nil
-;  grepConstruct('"*",INTERN kind)
-
-(DEFUN |getBrowseDatabase| (|kind|)
- (PROG (|$includeUnexposed?|)
-  (DECLARE (SPECIAL |$includeUnexposed?|))
-  (RETURN
-   (PROGN
-    (SPADLET |$includeUnexposed?| (QUOTE T))
-    (COND
-     ((NULL (FUNCALL (QUOTE |member|) |kind| (QUOTE ("o" "k" "c" "d" "p"))))
-       NIL)
-     ((QUOTE T)
-      (|grepConstruct| (MAKESTRING "*") (INTERN |kind|)))))))) 
-
-;stringMatches?(pattern,subject) ==
-;  FIXP basicMatch?(pattern,subject) => true
-;  false
-
-(DEFUN |stringMatches?| (|pattern| |subject|)
- (COND
-  ((FIXP (|basicMatch?| |pattern| |subject|)) (QUOTE T))
-  ((QUOTE T) NIL))) 
-
-;alqlGetKindString(x) ==
-;  x.0 = char 'a or x.0 = char 'o => SUBSTRING(dbPart(x,5,1),0,1)
-;  SUBSTRING(x,0,1)
-
-(DEFUN |alqlGetKindString| (|x|)
- (COND
-  ((OR (BOOT-EQUAL (ELT |x| 0) (|char| (QUOTE |a|)))
-       (BOOT-EQUAL (ELT |x| 0) (|char| (QUOTE |o|))))
-    (SUBSTRING (|dbPart| |x| 5 1) 0 1))
-  ((QUOTE T)
-    (SUBSTRING |x| 0 1)))) 
-
-;alqlGetOrigin(x) ==
-;  field :=dbPart(x,5,1)
-;  k := charPosition(char '_(,field,2)
-;  SUBSTRING(field,1,k-1)
-
-(DEFUN |alqlGetOrigin| (|x|)
- (PROG (|field| |k|)
-  (RETURN
-   (PROGN
-    (SPADLET |field| (|dbPart| |x| 5 1))
-    (SPADLET |k|
-     (|charPosition| (|char| (QUOTE |(|)) |field| 2))
-     (SUBSTRING |field| 1 (SPADDIFFERENCE |k| 1)))))) 
-
-;alqlGetParams(x) ==
-;  field :=dbPart(x,5,1)
-;  k := charPosition(char '_(,field,2)
-;  SUBSTRING(field,k,nil)
-
-(DEFUN |alqlGetParams| (|x|)
- (PROG (|field| |k|)
-  (RETURN
-   (PROGN
-    (SPADLET |field| (|dbPart| |x| 5 1))
-    (SPADLET |k|
-     (|charPosition| (|char| (QUOTE |(|)) |field| 2))
-     (SUBSTRING |field| |k| NIL))))) 
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
