anchor.diff:    (:documentation
      "Sends an HTTP request to the CouchDB server represented by SERVER. Most of the keyword arguments
    for drakma:http-request are available as kwargs for this message.")
  -  (:method ((server server) uri &rest all-keys &key &allow-other-keys)
  +  (:method ((server server) uri &rest all-keys &key (content nil contentp) &allow-other-keys)
       (multiple-value-bind (response status-code)
           (apply #'http-request (strcat (server->url server) uri)
                  :content-type "application/json"
                  :external-format-out +utf-8+
                  :basic-authorization (with-slots (username password) server
                                         (when username (list username password)))
  +               :content (if contentp (data->json server content) "")
                  all-keys)
  -      (values response (or (cdr (assoc status-code +status-codes+ :test #'=))
  -                           ;; The code should never get here once we know all the
  -                           ;; status codes CouchDB might return.
  -                           (error "Unknown status code: ~A. HTTP Response: ~A"
  -                                  status-code response))))))
  -
  -(defmethod couch-request :around ((server json-server) uri &rest all-keys
  -                                  &key (content nil contentp) &allow-other-keys)
  -  "This special :around reply wraps the standard SERVER reply and encodes/decodes JSON where
  -appropriate, which makes for a nicer Lisp-side API."
  -  (multiple-value-bind (response status-code)
  -      (apply #'call-next-method server uri
  -             :content (if contentp
  -                          (with-output-to-string (s)
  -                            (json:encode content s))
  -                          "") all-keys)
  -    (values (json:parse response) status-code)))
  +      (values (json->data server response)
  +              (or (cdr (assoc status-code +status-codes+ :test #'=))
  +                  ;; The code should never get here once we know all the
  +                  ;; status codes CouchDB might return.
  +                  (error "Unknown status code: ~A. HTTP Response: ~A"
  +                         status-code response))))))
   
   (defun all-dbs (server)
     "Requests a list of all existing databases from SERVER."
  
positive.code:   (:documentation
     "A SERVER is an abstraction over a CouchDB server's host, port, and basic authentication."))
  
  (defclass json-server (server)
    ()
    (:documentation
     "JSON-SERVERs are used to dispatch couch-request in a way that will make it automatically handle
     encoding/decoding of JSON to and from alists."))
  
  (defun server->url (server)
    "Returns a string representation of the URL SERVER represents."
  
negative.code:     (when (db-info db) 
        db)))
  
  (defun db-create (name &key (db-class 'database) server (server-class 'hash-server))
    "Creates a new CouchDB database. Returns a database object that can be used to operate on it."
    (let ((db (make-instance db-class
                             :name name
  