diff -rN -u old-elephant-1.0/src/elephant/cache.lisp new-elephant-1.0/src/elephant/cache.lisp
--- old-elephant-1.0/src/elephant/cache.lisp	2009-06-21 03:25:17.000000000 +0800
+++ new-elephant-1.0/src/elephant/cache.lisp	2009-06-21 03:25:17.000000000 +0800
@@ -22,6 +22,12 @@
 
 (in-package "ELEPHANT")
 
+(defmethod shared-initialize :around ((instance cacheable-persistent-object) slot-names &key make-cached-instance &allow-other-keys)
+  ;; User asked us to start in cached mode?  Otherwise default to not.
+  (setf (slot-value instance 'pchecked-out) make-cached-instance)
+  (setf (slot-value instance 'checked-out) make-cached-instance)
+  (call-next-method))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
 ;;; Portable value-weak hash-tables for the cache: when the
diff -rN -u old-elephant-1.0/src/elephant/classes.lisp new-elephant-1.0/src/elephant/classes.lisp
--- old-elephant-1.0/src/elephant/classes.lisp	2009-06-21 03:25:17.000000000 +0800
+++ new-elephant-1.0/src/elephant/classes.lisp	2009-06-21 03:25:17.000000000 +0800
@@ -260,12 +260,6 @@
       (loop for dslotname in derived-slots do
 	   (derived-index-updater class instance (find-slot-def-by-name class dslotname))))))
 
-(defmethod shared-initialize :around ((instance cacheable-persistent-object) slot-names &key make-cached-instance &allow-other-keys)
-  ;; User asked us to start in cached mode?  Otherwise default to not.
-  (setf (slot-value instance 'pchecked-out) make-cached-instance)
-  (setf (slot-value instance 'checked-out) make-cached-instance)
-  (call-next-method))
-
 (defun initialize-persistent-slots (class instance persistent-slot-inits initargs object-exists)
   (dolist (slotname persistent-slot-inits)
     (let ((slot-def (find-slot-def-by-name class slotname)))

