diff --git a/pcl/generic-functions.lisp b/pcl/generic-functions.lisp
index 00d71d767c3516c2590c5361f398f865afa5f633..23faf75cf4eb7b9ba2ac2645360ab9892fdb1f67 100644
--- a/pcl/generic-functions.lisp
+++ b/pcl/generic-functions.lisp
@@ -622,6 +622,18 @@
 ;          (slot-class forward-referenced-class)
 ;          (funcallable-standard-class standard-class)
 
+(defgeneric (setf documentation) (new-value slotd doc-type)
+  (:argument-precedence-order doc-type slotd new-value))
+;          (t t)
+;          (t documentation-mixin)
+;          (t standard-slot-definition)
+
+(defgeneric documentation (slotd doc-type)
+  (:argument-precedence-order doc-type slotd))
+;          (t)
+;          (documentation-mixin)
+;          (standard-slot-definition)
+
 
 ;;; 3 arguments 
 (defgeneric add-boundp-method (class generic-function slot-name))
@@ -693,16 +705,6 @@
 
 
 ;;; optional arguments  
-(defgeneric (setf documentation) (new-value slotd &optional doc-type))
-;          (t t)
-;          (t documentation-mixin)
-;          (t standard-slot-definition)
-
-(defgeneric documentation (slotd &optional doc-type))
-;          (t)
-;          (documentation-mixin)
-;          (standard-slot-definition)
-
 (defgeneric get-method (generic-function qualifiers specializers &optional (errorp t)))
 ;          (standard-generic-function t t)
 
diff --git a/pcl/std-class.lisp b/pcl/std-class.lisp
index f9bf0fec555e29a5c62e4f0ec60147ec75450619..4949963e1fbc644f1dd15f2087aca8ed04ca3d60 100644
--- a/pcl/std-class.lisp
+++ b/pcl/std-class.lisp
@@ -113,29 +113,28 @@
   (when documentation-p
     (setf (plist-value object 'documentation) documentation)))
 
-(defmethod documentation (object &optional doc-type)
+(defmethod documentation (object doc-type)
   (declare (ignore object doc-type))
   nil)
 
-(defmethod (setf documentation) (new-value object &optional doc-type)
+(defmethod (setf documentation) (new-value object doc-type)
   (declare (ignore new-value doc-type))
   (error "Can't change the documentation of ~S." object))
 
-
-(defmethod documentation ((object documentation-mixin) &optional doc-type)
+(defmethod documentation ((object documentation-mixin) doc-type)
   (declare (ignore doc-type))
   (plist-value object 'documentation))
 
-(defmethod (setf documentation) (new-value (object documentation-mixin) &optional doc-type)
+(defmethod (setf documentation) (new-value (object documentation-mixin) doc-type)
   (declare (ignore doc-type))
   (setf (plist-value object 'documentation) new-value))
 
 
-(defmethod documentation ((slotd standard-slot-definition) &optional doc-type)
+(defmethod documentation ((slotd standard-slot-definition) doc-type)
   (declare (ignore doc-type))
   (slot-value slotd 'documentation))
 
-(defmethod (setf documentation) (new-value (slotd standard-slot-definition) &optional doc-type)
+(defmethod (setf documentation) (new-value (slotd standard-slot-definition) doc-type)
   (declare (ignore doc-type))
   (setf (slot-value slotd 'documentation) new-value))