anchor.diff:  		  `((title ,sketch-title)
   		    (width ,sketch-width)
   		    (height ,sketch-height)
  -		    (framerate ,sketch-framerate))))
  -	 
  -	 (slots (mapcar #'car slot-bindings))
  -	 
  +		    (framerate ,sketch-framerate))))	 
  +	 (slots (mapcar #'car slot-bindings))	 
   	 (initforms (mapcar #'(lambda (binding)
   			       `(,(car binding) :initform ,(cadr binding)))
   			    slot-bindings)))
  -    
  +    ;; We are going to need slot names available during macroexpansion, so that
  +    ;; our enhanced methods can know what slots should be provided to WITH-SLOTS.
  +    ;; This is accomplished by saving slot names provided via SLOT-BINDINGS and
  +    ;; WINDOW-OPTIONS into *SKETCH-SLOT-HASH-TABLE*.
       (setf (gethash sketch-name *sketch-slot-hash-table*) slots)
   
       `(progn
  
positive.code: ;;; Macros
  
  (eval-when (:compile-toplevel :load-toplevel)
    (defvar *sketch-slot-hash-table*)
    (setf *sketch-slot-hash-table* (make-hash-table)))
  
  (defmacro defsketch (sketch-name window-options slot-bindings &body body)
    (let* ((sketch-title (getf window-options :title "Sketch"))
  	 (sketch-width (getf window-options :width 200))
  	 (sketch-height (getf window-options :height 200))
  	 (sketch-framerate (getf window-options :framerate :auto))
  	 
  	 (slot-bindings
  	  (append (remove-if
  		   #'(lambda (x)
  
negative.code:    (height :initform 200)))
  
  (defun framelimit (window &optional (fps 60))
    "Limits the framerate by using sdl2:delay. Technically, it is not
  the correct way to do things, but it will have to do for now."
    ;; Adapted from k-stz's code found in sdl2kit cube example. Used
    ;; with permission.
    (with-slots (last-frame-time) window
      (let ((elapsed-time (- (get-internal-real-time) last-frame-time))
  	  (time-per-frame (/ internal-time-units-per-second fps)))
  