--- a/src/clos/fixup.lsp
+++ b/src/clos/fixup.lsp
@@ -45,9 +45,7 @@
     (map-into direct-slots #'identity new-direct-slots)
     (map-into effective-slots #'identity new-effective-slots)
     (when (typep class 'std-class)
-      (std-create-slots-table class)
-      )
-    (std-class-generate-accessors class))
+      (std-create-slots-table class)))
   (mapc #'convert-one-class (class-direct-subclasses class)))
 
 ;;;
@@ -241,6 +239,13 @@
 (function-to-method 'find-method '((gf standard-generic-function)
 				   qualifiers specializers &optional error))
 
+(labels ((create-accessors (class)
+	   (when (typep class 'standard-class)
+	     (std-class-generate-accessors class))
+	   (loop for i in (class-direct-subclasses class)
+	      do (create-accessors i))))
+  (create-accessors (find-class 't)))
+
 ;;; COMPUTE-APPLICABLE-METHODS is used by the core in various places,
 ;;; including instance initialization. This means we cannot just redefine it.
 ;;; Instead, we create an auxiliary function and move definitions from one to