anchor.diff:  		 (let ((collisions (or (gethash k cached-collisions)
   				       (check-intersect (car (children k)) k x y *viewport* *projection*))))
   		   (when collisions
  -		       (funcall v k collisions (cons :mouse-move event)))))
  +		       (funcall v k collisions (acons :event :mouse-move event)))))
   	       :mouse-move)))
   
       
  
positive.code:     (map-event (lambda (k v)
  		 (multiple-value-bind (collisions start ray) (check-intersect (car (children k)) k x y *viewport* *projection*)
  		   (when collisions
  		     (setf *last-mouse-down-target* k)
  		     (funcall v k collisions (acons :event :mouse-down
  						    (acons :ray-start start
  							   (acons :ray ray 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)
  
negative.code: 		     (when collisions
  		       (let ((e (acons :ray-start start
  				       (acons :ray ray event))))
  			 (when (and 
  				(= *click-button* button)
  				(eq *last-mouse-down-target* k))
  			   (let ((h (gethash :mouse-click *event-hash*)))
  			     (when h
  			       (let ((f (gethash k h)))
  				 (when f (funcall f k collisions  (acons :event :mouse-click e)))))))
  			 (funcall v k collisions (acons :event :mouse-up e)))
  		       (setf *last-mouse-down-target* nil))))
  		 
  