diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet
index a24a47c..057850e 100644
--- a/books/bookvol10.4.pamphlet
+++ b/books/bookvol10.4.pamphlet
@@ -4175,7 +4175,7 @@ AnyFunctions1(S:Type): with
 )set message test on
 )set message auto off
 )clear all
---S 1 of 6
+--S 1 of 9
 getDomains 'Collection
 --R 
 --R
@@ -4193,7 +4193,7 @@ getDomains 'Collection
 --R                                                            Type: Set(Symbol)
 --E 1
 
---S 2 of 6
+--S 2 of 9
 difference(getDomains 'IndexedAggregate,getDomains 'Collection)
 --R 
 --R
@@ -4204,7 +4204,7 @@ difference(getDomains 'IndexedAggregate,getDomains 'Collection)
 --R                                                            Type: Set(Symbol)
 --E 2
 
---S 3 of 6
+--S 3 of 9
 credits()
 --R 
 --RAn alphabetical listing of contributors to AXIOM:
@@ -4300,13 +4300,13 @@ credits()
 The summary command simply types out the contents of the file
 \$AXIOM/lib/summary so no output is captured in the spool file.
 \begin{chunk}{ApplicationProgramInterface.input}
---S 4 of 6
+--S 4 of 9
 summary()
 --R 
 --R                                                                   Type: Void
 --E 4
 
---S 5 of 6
+--S 5 of 9
 )show API
 --R 
 --R ApplicationProgramInterface  is a package constructor
@@ -4321,7 +4321,7 @@ summary()
 --R
 --E 5
 
---S 6 of 6
+--S 6 of 9
 getAncestors 'IndexedAggregate
 --R 
 --R
@@ -4330,6 +4330,47 @@ getAncestors 'IndexedAggregate
 --R    HomogeneousAggregate, InnerEvalable, SetCategory, Type}
 --R                                                            Type: Set(Symbol)
 --E 6
+
+--S 7 of 9
+reportInstantiations(true)
+--R 
+--R                                                                   Type: Void
+--R# instantiated/# dropped/domain name
+--R------------------------------------
+--R Totals: 0 instantiated
+--R         0 inside coerceInteractive
+--R         0 inside canCoerceFrom
+--R         0 inside evalMmCond
+--R         0 reinstantiated
+--R         0 dropped
+--R         0 distinct domains instantiated/dropped
+--E 7
+
+--S 8 of 9
+1
+--R 
+--R
+--R   (7)  1
+--R                                                        Type: PositiveInteger
+--R# instantiated/# dropped/domain name
+--R------------------------------------
+--R1 0 PositiveInteger
+--R1 0 NonNegativeInteger
+--R Totals: 2 instantiated
+--R         0 inside coerceInteractive
+--R         0 inside canCoerceFrom
+--R         0 inside evalMmCond
+--R         0 reinstantiated
+--R         0 dropped
+--R         2 distinct domains instantiated/dropped
+--E 8
+
+--S 9 of 9
+reportInstantiations(true)
+--R 
+--R                                                                   Type: Void
+--E 9
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -4384,6 +4425,70 @@ getAncestors 'IndexedAggregate
     HomogeneousAggregate, InnerEvalable, SetCategory, Type}
                                                             Type: Set(Symbol)
 
+The reportInstantiations function information about what domains
+are instantiated by an expression. In a clean Axiom you'll see
+
+(1) -> reportInstantiations(true)
+                                                                   Type: Void
+# instantiated/# dropped/domain name
+------------------------------------
+1 0 Void
+1 0 String
+1 0 SingleInteger
+1 0 PrimitiveArray(OutputForm)
+1 0 OutputForm
+1 0 List(OutputForm)
+1 0 Integer
+1 0 Character
+ Totals: 8 instantiated
+         0 inside coerceInteractive
+         0 inside canCoerceFrom
+         0 inside evalMmCond
+         0 reinstantiated
+         0 dropped
+         8 distinct domains instantiated/dropped
+
+Which shows that 8 domains were instantiated.
+If a new domain is requested, more will be instantiated.
+
+(2) -> 1
+
+   (2)  1
+                                                        Type: PositiveInteger
+# instantiated/# dropped/domain name
+------------------------------------
+1 0 PositiveInteger
+1 0 NonNegativeInteger
+ Totals: 2 instantiated
+         0 inside coerceInteractive
+         0 inside canCoerceFrom
+         0 inside evalMmCond
+         0 reinstantiated
+         0 dropped
+         2 distinct domains instantiated/dropped
+
+However, this happens only once. Invoking already instantiated 
+domains does nothing since they already exist.
+
+(3) -> 1
+
+   (3)  1
+                                                        Type: PositiveInteger
+# instantiated/# dropped/domain name
+------------------------------------
+ Totals: 0 instantiated
+         0 inside coerceInteractive
+         0 inside canCoerceFrom
+         0 inside evalMmCond
+         0 reinstantiated
+         0 dropped
+         0 distinct domains instantiated/dropped
+
+We call the function with false to turn off this information.
+
+(4) -> reportInstantiations(false)
+                                                                   Type: Void
+
 \end{chunk}
 \pagehead{ApplicationProgramInterface}{API}
 \pagepic{ps/v104applicationprograminterface.ps}{API}{1.00}
@@ -4420,6 +4525,13 @@ ApplicationProgramInterface(): Exports == Implementation where
       ++ summary() prints a short list of useful console commands
       ++
       ++X summary()
+    reportInstantiations: Boolean -> Void
+      ++ A debugging tool to show instantiation information
+      ++
+      ++X reportInstantiations(true)
+      ++X 1
+      ++X reportInstantiations(false)
+
   Implementation ==> add
     getDomains(cat:Symbol):Set(Symbol) == 
       set [symbol car first destruct a _
@@ -4433,6 +4545,10 @@ ApplicationProgramInterface(): Exports == Implementation where
 
     summary() == ( summary()$Lisp ; void() )
 
+    reportInstantiations(b:Boolean): Void ==
+      REPORTINSTANTIATIONS(b)$Lisp
+      void
+
 \end{chunk}
 \begin{chunk}{API.dotabb}
 "API" [color="#FF4488",href="bookvol10.4.pdf#nameddest=APPRULE"]
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index b7a8b88..fd5bb63 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -39208,6 +39208,13 @@ 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{ApplicationProgramInterface}
+\defun{reportinstantiations}{Report what domains get instantiated}
+\begin{chunk}{defun reportinstantiations}
+(defun reportinstantiations (b)
+ (setq |$reportInstantiations| b))
+\end{chunk}
+
 \section{InputForm}
 \defun{unparseInputForm}{unparseInputForm}
 This fixes bug 7217. The default title generation is bogus.
@@ -54815,6 +54822,7 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
 \getchunk{defun replaceSharps}
 \getchunk{defun reportAO}
 \getchunk{defun reportCategory}
+\getchunk{defun reportinstantiations}
 \getchunk{defun reportOperations}
 \getchunk{defun reportOpsFromLisplib}
 \getchunk{defun reportOpsFromLisplib0}
diff --git a/changelog b/changelog
index 9d562e3..1557497 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20140610 tpd src/axiom-website/patches.html 20140610.04.tpd.patch
+20140610 tpd books/bookvol10.4,bookvol5 add reportInstantiations to API package
 20140610 tpd src/axiom-website/patches.html 20140610.03.tpd.patch
 20140610 tpd book/*.txt email cleanup
 20140610 tpd src/axiom-website/patches.html 20140610.02.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 774ae4d..d175135 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4414,6 +4414,8 @@ books/bookvolbib add reference Yapp07
 src/doc/msgs/s2-us.msgs remove .as extension from compiler msg
 <a href="patches/20140610.03.tpd.patch">20140610.03.tpd.patch</a>
 book/*.txt email cleanup
+<a href="patches/20140610.04.tpd.patch">20140610.04.tpd.patch</a>
+books/bookvol10.4,bookvol5 add reportInstantiations to API package
  </body>
 </html>
 
