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<br/>
 books/bookvol9 treeshake compiler<br/>
 <a href="patches/20120101.02.tpd.patch">20120101.02.tpd.patch</a>
 books/bookvol9 treeshake compiler<br/>
+<a href="patches/20120101.03.tpd.patch">20120101.03.tpd.patch</a>
+books/bookvol9 treeshake compiler<br/>
  </body>
 </html>
diff --git a/src/interp/cattable.lisp.pamphlet b/src/interp/cattable.lisp.pamphlet
index 483870b..2abb6c0 100644
--- a/src/interp/cattable.lisp.pamphlet
+++ b/src/interp/cattable.lisp.pamphlet
@@ -1649,16 +1649,6 @@
                                             |curPred|))))))))))
              |cats|)))))
 
-;getConstructorExports(conform,:options) == categoryParts(conform,
-;  GETDATABASE(opOf conform,'CONSTRUCTORCATEGORY),IFCAR options)
-
-(DEFUN |getConstructorExports|
-       (&REST G167287 &AUX |options| |conform|)
-  (DSETQ (|conform| . |options|) G167287)
-  (|categoryParts| |conform|
-      (GETDATABASE (|opOf| |conform|) 'CONSTRUCTORCATEGORY)
-      (IFCAR |options|)))
-
 ;categoryParts(conform,category,:options) == main where
 ;  main ==
 ;    cons? := IFCAR options  --means to include constructors as well
