anchor.diff:  		      `,`(prop *global* #+nil this ,name)))
   		(js!assign (op exp val)
   		  (let ((name (find-name exp)))
  -		    (cond 
  -		      ((string-equal "this" name)
  -		       `,`(setf ,exp ,val))
  -		      ((funcall ,local-variable-p name)
  -		       `(setf ,exp #+nil (->sym name) ,val)) ;todo: same as this?
  -		      (t
  -		       `,`(setf (prop *global* #+nil this ,exp) ,val)))))
  +		    (if (funcall ,local-variable-p name)
  +			`(setf ,exp ,val)
  +			`,`(setf (prop *global* #+nil this ,exp) ,val))))
   		(js!return (ret) `,`(return-from ,',blockname ,ret)))
          (lambda (this &rest ,argument-list)
   	 (declare (dynamic-extent ,argument-list))
  -	 (format t "this: ~A~%" this)
  +	 #+js-debug (format t "this: ~A~%" this)
   	 (let ((arguments (coerce ,argument-list 'simple-vector))
   	       ,@(mapcar (lambda (var-desc)
   			   (list (->sym (car var-desc))
  
positive.code:      ,@(mapcar (lambda (op)
  		 (if (symbolp op)
  		     `(setf (symbol-function ',(js!intern op)) (function ,op))
  		     `(setf (symbol-function ',(js!intern (first op)) (function ,(second op))))))
  	     ops)))
  
  (js!binary-operators + - * /)
  
  (defmacro js!binary (op-sym ls rs)
    (let ((op (symbol-function op-sym)))
      `(funcall ,op ,ls ,rs)))
  
negative.code: (defmacro js!num (num) num)
  
  (defmacro js!stat (form)
    `(progn ,form))
  
  (defmacro js!block (form)
    `(progn ,form))
  
  (defmacro js!var (vars)
  