anchor.diff:    ((boids :initform '()
             :initarg :boids
             :accessor boids)
  +
  +   (food :initform '()
  +         :initarg :food
  +         :accessor food)
  +
  +   (player :initform (error "Player needs to be specified explicitly.")
  +           :initarg :player
  +           :accessor player)))
  +
  +(defclass perceived-world ()
  +  ((friendlies :initform '()
  +               :initarg :friendlies
  +               :accessor friendlies)
  +
  +   (dangers :initform '()
  +            :initarg :dangers
  +            :accessor dangers)
   
      (food :initform '()
            :initarg :food
  
positive.code:     (flet ((can-see-point (point)       ;TODO expand to limited forward vision
               (< (p2dm:distance-between-vectors position point) perception-range)))
        (ddp position perception-range :sight-range)
        (make-instance 'world
                       :boids (remove-if-not #'can-see-point
                                             (boids world)
                                             :key #'entity-position)
                       :food (food world)
                       :player (when (can-see-point (entity-position (player world)))
                                 (player world))))))
  
negative.code: 
  (defun make-default-boid-behaviours ()
    (list (lambda (boid world)                 ; cohesion
            (com boid (friendlies world)))
          (lambda (boid world)                 ; alignment
            (align boid (friendlies world)))
          (lambda (boid world)                 ; separation
            (separate boid (friendlies world)))
          (lambda (boid world)                 ; wall avoidance
            (avoid-walls boid))
          (lambda (boid world)
  