anchor.diff:    (format t "~A button: ~A at ~A, ~A~%" state b x y))
   
   (defmethod mousemotion-event ((window test-window) ts mask x y xr yr)
  -  (when (> mask 0)
  -    (format t "Mouse motion, button-mask = ~A at ~A, ~A~%" mask x y)))
  +  (flet ((left-mouse-button-clicked-p ()
  +	   (= mask 1)))
  +    ;; rotate x, y axis
  +    (when (left-mouse-button-clicked-p)
  +      (incf *rotate-y* (/ xr 100.0))
  +      (incf *rotate-x* (/ yr 100.0)))))
   
   ;; (make-instance 'test-window)
  
positive.code:   (setf *programs-dict* (load-shaders)))
  
  
  ;; to be understood while reading LOAD-SHADER function
  ;; example: (uniform :vec :<name-of-uniform> <new-value>)
  (defmethod uniform ((type (eql :vec)) key value)
    (uniformfv *programs-dict* key value))
  
  
  (defmethod uniform ((type (eql :mat)) key value)
    ;; nice, transpose is NIL by default!
    (uniform-matrix *programs-dict* key 4 value NIL))
  
  
  ;; TODO: why specialize on SHADE
  
  
  ;;..............................................................................
  
  (defvar *vao* 0)
  (defun initialize-vao ()
  
negative.code: 
  
  (defparameter *rotate-x* -1.0)
  (defparameter *rotate-y* 0.0)
  (defparameter *zoom-z* -2.0)
  
  (defun draw-cube ()
    (gl:bind-vertex-array *vao*)
  