anchor.diff:           (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)
  
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: 
  (defgeneric read-bytes (transport))
  
  (defgeneric write-bytes (transport bytes &key start end))
  
  (defmethod read-bytes ((c tcp-transport))
    (with-accessors ((rb read-buffer-of)
  