anchor.diff:                         (,(intern-accessor (car slot)) instance)))
                      *default-slots*)))
   
  +(defun custom-slots (bindings)
  +  (loop
  +     for b in (mapcar #'car bindings)
  +     if (not (member b *default-slots*))
  +     collect b))
  +
    ;;; DEFSKETCH macro
   
   (defmacro defsketch (sketch-name bindings &body body)
  -  (let ((redefines-sketch-p (gensym))
  -        (default-not-overridden
  -         (remove-if (lambda (x) (find x bindings :key #'car))
  -                    (mapcar #'car *default-slots*))))
  -    `(let ((,redefines-sketch-p (find-class ',sketch-name nil)))
  -
  -       (unless ,redefines-sketch-p
  -         (defclass ,sketch-name (sketch)
  -           ,(sketch-bindings-to-slots `,sketch-name bindings)))
  +  (let ((default-not-overridden
  +          (remove-if (lambda (x) (find x bindings :key #'car))
  +                     (mapcar #'car *default-slots*))))
  +    `(progn
  +       (defclass ,sketch-name (sketch)
  +         ,(sketch-bindings-to-slots `,sketch-name bindings))
   
          ,@(remove-if-not #'identity (make-channel-observers sketch-name bindings))
   
  
positive.code:                                                            ,value)
                                                        `(or (getf initargs ,(alexandria:make-keyword name)) ,value)))))
                                     (replace-channels-with-values bindings)))
                      (declare (ignorable ,@(mapcar #'car *default-slots*)))
                      ,(make-window-parameter-setf)
                      ,(make-custom-slots-setf sketch-name (custom-bindings bindings)))
                    (setf (env-y-axis-sgn (slot-value instance '%env))
                          (if (eq (slot-value instance 'y-axis) :down) +1 -1)))
  
         (when ,redefines-sketch-p
           (defclass ,sketch-name (sketch)
             ,(sketch-bindings-to-slots `,sketch-name bindings)))
  
         (defmethod draw ((instance ,sketch-name) &key &allow-other-keys)
           (with-accessors ,(mapcar (lambda (x) (list (car x) (intern-accessor (car x))))
  
negative.code:            (with-slots ,(mapcar #'car bindings) instance
               ,@body)))
  
         (make-instances-obsolete ',sketch-name)
  
         (find-class ',sketch-name))))
  