 
 : define-changer ( name -- )
     dup changer-word dup deferred? [
-        [
-            \ over ,
-            over reader-word 1quotation
-            [ dip call ] curry [ ] like [ dip swap ] curry %
-            swap setter-word ,
-        ] [ ] make ( object quot -- object ) define-inline
+        over reader-word 1quotation
+        [ dip call ] curry [ dip swap ] curry [ over ] prepose
+        rot setter-word 1quotation compose
+        ( object quot -- object ) define-inline
     ] [ 2drop ] if ;
 
 : define-slot-methods ( class slot-spec -- )

    } cond ;

M: object instance-check-quot
    [
        \ dup ,
        [ predicate-def % ]
        [ [ bad-slot-value ] curry , ] bi
        \ unless ,
    ] [ ] make ;

GENERIC#: writer-quot 1 ( class slot-spec -- quot )



: define-setter ( name -- )
    dup setter-word dup deferred? [
        swap writer-word 1quotation [ over ] prepose
        ( object value -- object ) define-inline
    ] [ 2drop ] if ;

