anchor.diff:  (clinch:defevent clinch:*on-mouse-move* (win mouse state x y xrel yrel ts)
     ;;(format t "win: ~A mouse: ~A x: ~A y: ~A button: ~A state: ~A clicks: ~A ts: ~A~%" win mouse state x y xrel yrel ts)
   
  -  (let ((event (list win mouse state x y xrel yrel ts))
  +  (let ((event `((:window . ,win)
  +		 (:mouse . ,mouse)
  +		 (:mouse-screen-position ,x . ,y)
  +		 (:state . ,state)
  +		 (:x-relative ,xrel)
  +		 (:y-relative . ,yrel)
  +		 (:timestamp . ,ts))) 
   	(cached-collisions (make-hash-table)))
   
       (map-event (lambda (k v)
  
positive.code:   (gl:clear :color-buffer-bit :depth-buffer-bit)
    ;;(clinch:render entity :projection *projection*)
    (clinch:update *node*)
    (clinch:render *node* :projection *projection*)
  
    )
  
  (defun map-event (f e)
    (unless (gethash e *event-hash*)
  
negative.code:     (map-event (lambda (k v)
  		 (multiple-value-bind (collisions start ray) (check-intersect (car (children k)) k x y *viewport* *projection*)
  		   (when collisions
  		     (when (= button *click-button*)
  		       
  		       (setf *last-mouse-down-target* k))
  		     (funcall v k collisions (acons :event :mouse-down
  						    (acons :ray-start start
  							   (acons :ray ray event))))
  		     (when (= button *drag-button*)
  		       (let ((h (gethash :mouse-drag-start *event-hash*)))
  			 (when h
  			   (let ((f (gethash k h)))
  			     (setf *dragging* k)
  			     (when f (funcall f k collisions  (acons :event :mouse-drag-start event))))))))))
  	       :mouse-down)))
  
  (clinch:defevent clinch:*on-mouse-up* (win mouse x y button state clicks ts)
  
    ;;(format t "win: ~A mouse: ~A x: ~A y: ~A button: ~A state: ~A clicks: ~A ts: ~A~%" win mouse x y button state clicks ts)
      (let ((event `((:window . ,win)
  		   (:mouse . ,mouse)
  		   (:mouse-screen-position ,x . ,y)
  