--- a/src/clos/cpl.lsp
+++ b/src/clos/cpl.lsp
@@ -77,7 +77,7 @@
 		       (return (values class-list precedence-lists)))
 		  (let ((next-class (pop superclasses)))
 		    (unless (member next-class class-list :test 'eql)
-		      (let ((more-classes (class-direct-superclasses next-class)))
+		      (let ((more-classes (slot-value next-class 'direct-superclasses)))
 			(setf class-list (list* next-class class-list)
 			      precedence-lists (list* (list* next-class more-classes)
 						      precedence-lists)
@@ -102,7 +102,7 @@
 	     (if (or (null cpl) (endp free-list) (endp (rest free-list)))
 		 (first free-list)
 		 (dolist (i cpl nil)
-		   (dolist (j (class-direct-superclasses i))
+		   (dolist (j (slot-value i 'direct-superclasses))
 		     (when (member j free-list :test 'eql)
 		       (return-from next-element j))))))
 	   (delete-class (class precedence-lists)
@@ -116,7 +116,7 @@
 	   (list new-class))
 	  ((endp (rest superclasses))
 	   (let ((class (first superclasses)))
-	     (list* new-class (class-precedence-list class))))
+	     (list* new-class (slot-value class 'precedence-list))))
 	  (t
 	   (multiple-value-bind (class-list precedence-lists)
 	       (walk-supers superclasses)