anchor.diff:                                               1 (iolib:receive-from (tcp-client-socket client) :buffer buffer))))
                                         (when (zerop bytes-read)
                                           (error 'end-of-file))
  -                                      (on-data server client (subseq buffer 0 bytes-read)))
  +                                      (on-data driver client (subseq buffer 0 bytes-read)))
                                     ((or iolib:socket-connection-reset-error end-of-file) (e)
  -                                    (on-client-error server client e))))))
  +                                    (on-client-error driver client e))))))
   
  -(defun stop-reads (server event-base client)
  -  (declare (ignore server))
  +(defun stop-reads (driver event-base client)
  +  (declare (ignore driver))
     (iolib:remove-fd-handlers event-base (iolib:socket-os-fd (tcp-client-socket client)) :read t))
   
  -(defun start-writes (server event-base client &aux (buffer (tcp-client-write-buffer client)))
  +(defun start-writes (driver event-base client &aux (buffer (tcp-client-write-buffer client)))
     ;; TODO - this blows and doesn't work. Make it not blow.
     (iolib:set-io-handler event-base (iolib:socket-os-fd (tcp-client-socket client))
                           :write
  
positive.code:                           (declare (ignore ig))
                            (handler-case
                                (let ((bytes-written (iolib:send-to (tcp-client-socket client) buffer)))
                                  (print bytes-written)
                                  (when t ; (buffer-drained-p buffer)
                                    (on-drain server client)))
                              ((or iolib:socket-connection-reset-error isys:ewouldblock isys:epipe) (e)
                                (on-client-error server client e))))))
  
  ;; TCP server test
  (defclass echo () ())
  (defmethod on-connect ((server echo) client)
    (print "Client connected."))
  (defmethod on-data ((server echo) client data)
    (format t "~&Data time: ~S~%" (flex:octets-to-string data :external-format :utf8)))
  (defmethod on-disconnect ((server echo) client)
    (format t "~&Client disconnected: ~S~%" client))
  #+nil(start-listener (make-instance 'echo) :host "127.0.0.1" :port 1337)
  
negative.code:                                              (let ((client (make-client client-sock name port)))
                                                 (setf (gethash (cons name port) connections)
                                                       client)
                                                 (on-connect driver client)
                                                 (start-reads driver event-base client))))))
             (handler-case
                 (iolib:event-dispatch event-base)
               ((or iolib:socket-connection-reset-error iolib:hangup end-of-file) (e)
                 (on-error driver e)))
             (on-close driver))
        (maphash-values (lambda (client) (close (tcp-client-socket client)))
                        connections)
        (close event-base))))
  
  (defun start-reads (driver event-base client)
    (iolib:set-io-handler event-base (iolib:socket-os-fd (tcp-client-socket client))
                          :read (lambda (&rest ig)
                                  (declare (ignore ig))
  