anchor.diff:  
   (defgeneric read-bytes (transport))
   
  -(defgeneric write-bytes (transport))
  +(defgeneric write-bytes (transport bytes &key start end))
   
   (defmethod read-bytes ((c tcp-transport))
     (with-accessors ((rb read-buffer-of)
  
positive.code:       (on-connection-ready proto))
      (multiple-value-bind (buf byte-num)
          (handler-case
              (socket-receive temp-buf sock
                              :start (start-of rb)
                              :end (size-of rb))
            ;; either a spurious event, or the socket has
            ;; just connected and there is no data to receive
            (nix:ewouldblock ()
              (return-from read-bytes))
            (socket-error (err)
              (on-connection-lost proto err)))
        (cond
  
negative.code:          (on-connection-end proto))
          ;; good data
          ((plusp byte-num)
           ;; increment the end pointer of the buffer
           (incf (end-of rb) byte-num)
           ;; FIXME: we're both buffering the data *and* calling
           ;; ON-MESSAGE-RECEIVED with an array displaced to
           ;; the data just received. perhaps we should separate the two
           (on-message-received
            proto
            (make-array byte-num :element-type '(unsigned-byte 8)
  