anchor.diff:  
   (defun update-world (dt)
     (update-all-boids *world* dt)
  -  (update-player (player *world*) dt)
  +  (update-entity (player *world*) *world* dt)
   
     (handle-collisions *world*)
     (remove-eaten-food *world*))
  
positive.code: 
  (defparameter +sheep-size+ 2.0)
  (defparameter +sheep-grazing-cooldown-time+ 2.0)
  
  (defparameter +food-color+ (p2dg:make-color-4 0 0.4 0 1))
  (defparameter +food-size+ 2.0)
  
negative.code:    (angular-speed :initarg :speed
                    :initform p2dm:+pi+
                    :accessor player-angular-speed)))
  
  (defmethod update-entity ((player player) (world world) dt)
    (declare (ignore world))
    (with-slots (position velocity orientation color speed angular-speed)
        player
  
      ;; 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
      (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))
  
      ;; clamp position to game boundaries
      (p2dm:clampf (p2dm:vec-x position) 0.0 (float p2d:*canvas-width*))
      (p2dm:clampf (p2dm:vec-y position) 0.0 (float p2d:*canvas-height*))))
  
  (defmethod draw-entity ((player player))
    (with-slots (position orientation color)
  