anchor.diff:  	    (q:* rot (rotation this)))
         (q:* rot (rotation this))))
   
  -(defmacro !r (this w x y z)
  -  `(scale ,this ,w ,x ,y, z))  
  +(defmacro !r (this w x y z &optional in-place)
  +  (let ((tthis (gensym))
  +	(v (gensym)))
  +	
  +    `(let ((,tthis ,this)
  +	   (,v (v! ,w ,x ,y, z)))
  +       (if ,in-place
  +	   (setf (rotation ,tthis) ,v)
  +	   (rotate ,tthis ,v)))))
   
   (defmethod translate ((this node) trans &key (modify t))
     "Translate the node. Takes a vector3."
  
positive.code: (defgeneric (setf translation) (val this))
  (defgeneric (setf rotation) (val this))
  (defgeneric (setf scaling) (val this))
  (clone-function (setf translation) (setf !t))
  (clone-function (setf rotation) (setf !r))
  (clone-function (setf scaling) (setf !s))
  
  (defgeneric translation-matrix (this &key))
  (defgeneric rotation-matrix (this &key))
  
negative.code: 
  (defmethod !reset-scaling ((this node))
    (setf (slot-value this 's-matrix) nil
  	(scaling this) vi))
  
  
  (defmethod print-object ((this node) s)
  