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-29 14:32:20.000000000 +0800
+++ new-elephant-1.0/src/elephant/cache.lisp	2009-06-29 14:32:20.000000000 +0800
@@ -22,6 +22,19 @@
 
 (in-package "ELEPHANT")
 
+(defclass cacheable-persistent-object (persistent-object)
+  ((pchecked-out :accessor pchecked-out-p :initform nil)
+   (checked-out :accessor checked-out-p :initform nil :transient t))
+  (:metaclass persistent-metaclass)
+  (:documentation 
+   "Adds a special value slot to store checkout state"))
+
+(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-29 14:32:20.000000000 +0800
+++ new-elephant-1.0/src/elephant/classes.lisp	2009-06-29 14:32:20.000000000 +0800
@@ -67,14 +67,6 @@
     objects that would not be appropriate for Elephant objects
     such as persistent collections"))
 
-(defclass cacheable-persistent-object (persistent-object)
-  ((pchecked-out :accessor pchecked-out-p :initform nil)
-   (checked-out :accessor checked-out-p :initform nil :transient t))
-  (:metaclass persistent-metaclass)
-  (:documentation 
-   "Adds a special value slot to store checkout state"))
-
-
 ;; ================================================
 ;; METACLASS INITIALIZATION 
 ;; ================================================
@@ -260,12 +252,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)))

