anchor.diff:        (post/json "/notebook/eval-to-cell" (create :book (notebook-name *notebook*) :cell-id cell-id :contents contents)
   		 #'notebook!))
   
  -    (defun cell-selector (cell &rest children)
  -      (+ "#cell-" (@ cell id)
  -	 (if children 
  -	     (+ " " (join children " "))
  -	     "")))
  +    (defun new-cell (&optional (cell-type :code))
  +      (post/json "/notebook/new-cell" (create :book (notebook-name *notebook*) :cell-type cell-type)
  +		 #'notebook!))
       
  +    (defun kill-cell (cell-id)
  +      (post/json "/notebook/kill-cell" (create :book (notebook-name *notebook*) :cell-id cell-id)
  +		 #'notebook!))
  +
  +    ;; CodeMirror utilities    
       (defun show-editor (cell-id)
         (console.log "SHOW-EDITOR" cell-id)
         (setf (@ (by-selector (+ "#cell-" cell-id " .CodeMirror")) hidden) nil))
  
positive.code: 	  (:ul :class "cells"
  	       (join (map (lambda (cell) (cell-template cell))
  			  (notebook-cells notebook))))))
      
      (defun server/eval (thing target-elem)
        (post/json "/eval" (create :thing thing)
  	    (lambda (res) (dom-set target-elem (result-template res)))))
  
negative.code: 		 (by-selector (+ "#cell-" cell-id " .cell-contents"))
  		 options)))
  	mirror))
  
      ;; Notebook-related
      (defvar *notebook*)
  
      (defun notebook-condense (notebook)
  