anchor.diff:        (write-ln "Content-Length: " (write-to-string (length it))) (crlf stream)
         (write-ln it))
       (crlf stream)
  -    (force-output stream)
       (values)))
   
   (defmethod write! (msg (sock usocket))
     (write! msg (socket-stream sock)))
  +
  +;;;;; Defining Handlers
  +(defmacro define-handler (name &body body)
  +  (let ((uri (format nil "/~(~a~)" name)))
  +    `(progn
  +       (awhen (gethash ,uri *handlers*)
  +	 (warn ,(format nil "Redefining handler '~a'" uri)))
  +       (setf (gethash ,uri *handlers*)
  +	     (lambda (session get-params post-params)
  +	       (declare (ignorable session get-params post-params))
  +	       (make-instance 'response :body (progn ,@body)))))))
  +
  +(define-handler index.html
  +    "<html><head><title>Test Page</title></head><body><h1>Hello from House!</h1></body></html>")
   
   ;;;;; Session-related
   (let ((prng (ironclad:make-prng :fortuna)))
  
positive.code: 	(conns (make-hash-table))
          (buffers (make-hash-table)))
      (unwind-protect
  	 (loop (loop for ready in (wait-for-input (cons server (hash-keys conns)) :ready-only t)
  		  do (if (typep ready 'stream-server-usocket)
  			 (setf (gethash (socket-accept ready) conns) :on)
  			 (let ((buf (gethash ready buffers (make-instance 'buffer))))
  
negative.code:       (assert (string= http-version "HTTP/1.1"))
        (let ((req-t (intern (string-upcase req-type))))
  	(assert (member req-t (list 'get 'post)))
  	(let ((req (make-instance (intern (format nil "HTTP-~a" req-t)) :resource path)))
  	  (loop 
  	     for header in (rest lines) for (name value) = (split ": " header)
  	     for n = (deal::->keyword name)
  