anchor.diff:         do (let ((stale? (first (lookup book :a cell-id :b :stale :c t)))
   		(res-fact (first (lookup book :a cell-id :b :result)))
   		(*package* (namespace book)))
  -	    (let ((res 
  +	    (let ((res
   		   (handler-case
   		       (bt:with-timeout (.1)
  -			 (front-end-eval 
  -			  :common-lisp cell-type 
  +			 (front-end-eval
  +			  :common-lisp cell-type
   			  (caddar (lookup book :a cell-id :b :contents))))
   		     #-sbcl (bordeaux-threads:timeout () :timed-out)
   		     #+sbcl (sb-ext:timeout () :timed-out))))
  
positive.code: 		(when stale? (delete! book stale?))
  		(unless (equalp (third res-fact) res)
  		  (let ((new (list cell-id :result res)))
  		    (if res-fact 
  			(change! book res-fact new)
  			(insert! book new))))))))
      (write! book)))
  
negative.code: 
  (define-json-handler (cl-notebook/notebook/change-cell-language) ((book :notebook) (cell-id :integer) (new-language :keyword))
    (let ((cont-fact (first (lookup book :a cell-id :b :contents)))
  	(val-fact (first (lookup book :a cell-id :b :result)))
  	(cell-type (caddar (lookup book :a cell-id :b :cell-type)))
  	(lang-fact (first (lookup book :a cell-id :b :cell-language))))
      (unless (eq (third lang-fact) new-language)
  