diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 42d0346..6813080 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -19560,6 +19560,20 @@ deleting entries from u assumes that the first element is useless
\end{chunk}
+\chapter{Category handling}
+
+\defun{getConstructorExports}{getConstructorExports}
+\begin{chunk}{defun getConstructorExports}
+(defun |getConstructorExports| (&rest arg)
+ (let (options conform)
+ (setq conform (car arg))
+ (setq options (cdr arg))
+ (|categoryParts| conform
+ (getdatabase (|opOf| conform) 'constructorcategory)
+ (ifcar options))))
+
+\end{chunk}
+
\chapter{Building libdb.text}
\defun{extendLocalLibdb}{extendLocalLibdb}
\calls{extendLocalLibdb}{buildLibdb}
@@ -26440,6 +26454,7 @@ The current input line.
\getchunk{defun getArgumentModeOrMoan}
\getchunk{defun getCaps}
\getchunk{defun getCategoryOpsAndAtts}
+\getchunk{defun getConstructorExports}
\getchunk{defun getConstructorOpsAndAtts}
\getchunk{defun getDomainsInScope}
\getchunk{defun getFormModemaps}
diff --git a/changelog b/changelog
index 61bd44b..f4efa46 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20120101 tpd src/axiom-website/patches.html 20120101.03.tpd.patch
+20120101 tpd src/interp/cattable.lisp treeshake compiler
+20120101 tpd books/bookvol9 treeshake compiler
20120101 tpd src/axiom-website/patches.html 20120101.02.tpd.patch
20120101 tpd src/interp/br-con.lisp treeshake compiler
20120101 tpd books/bookvol9 treeshake compiler
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index af070dc..081cd71 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3757,5 +3757,7 @@ books/bookvol9 treeshake compiler
books/bookvol9 treeshake compiler
20120101.02.tpd.patch
books/bookvol9 treeshake compiler
+20120101.03.tpd.patch
+books/bookvol9 treeshake compiler