anchor.diff:       do (draw-boid boid)))
   
   (defun update-player (dt)
  -  (with-slots (position velocity orientation color)
  +  (with-slots (position velocity orientation color speed angular-speed)
         (player *world*)
   
       ;; input
  +    (setf speed (cond ((key-pressed-p :scancode-up)
  +                       +player-running-speed+)
  +                      ((key-pressed-p :scancode-down)
  +                       +player-slow-speed+)
  +                      (t
  +                       +player-base-speed+))
  +          angular-speed (cond ((key-pressed-p :scancode-left)
  +                               (+ +player-angular-speed+))
  +                              ((key-pressed-p :scancode-right)
  +                               (- +player-angular-speed+))
  +                              (t
  +                               0.0)))
   
       ;; physics
  -    (p2dm:add-to-vector position (p2dm:scaled-vector velocity dt))
  -    ;; TODO rotation, stuff.
  -))
  +    (incf orientation (* angular-speed dt))
  +    (setf velocity (p2dm:scaled-vector (p2dm:rotated-vector-2d (p2dm:make-vector-2d 1.0 0.0) orientation)
  +                                       speed))
  +    (p2dm:add-to-vector position (p2dm:scaled-vector velocity dt))))
   
   (defun draw-player ()
     (with-slots (position velocity orientation color)
  
positive.code: 
  
  
  (defun click-handler (x y)
    (add-boid x y)
  
negative.code: (defclass player (entity)
    ((orientation :initarg :orientation
                  :initform 0.0
                  :accessor player-orientation)
     (speed :initarg :speed
            :initform 30.0
            :accessor player-speed)
     (angular-speed :initarg :speed
                    :initform p2dm:+pi+
                    :accessor player-angular-speed)))
  
  (defun make-default-player ()
    (make-instance 'player
  