anchor.diff:    (add-simple-alist-lookup *man-file* 'man "man" "Mac OS X Man Pages")
     (add-simple-alist-lookup *cltl2-file* 'cltl2 "cltl2" "Common Lisp, The Language (2nd Edition)")
     (add-simple-alist-lookup *cltl2-sections-file* 'cltl2-sections "cltl2-section" "Common Lisp, The Language (2nd Edition) Sections")
  -  (setf *nickname* nick)
  -  (setf *connection* (connect :nickname *nickname* :server server))
  -  (mapcar #'(lambda (channel) (join *connection* channel)) channels)
  -  (add-hook *connection* 'irc-privmsg-message 'msg-hook)
  -  (add-hook *connection* 'irc-ping-message 'ping-hook)
  -  (start-bot-loop *connection*))
  +  (bt:make-thread (lambda ()
  +                    (setup-connection nick server channels))
  +                  :name "specbot"))
   
   (defun shuffle-hooks ()
     (irc::remove-hooks *connection* 'irc::irc-privmsg-message)
  
positive.code:                             (network-stream connection))
                             :input #'select-handler)))
  
  (defun ping-hook (message)
    (setf *ping-sent* nil)
    (apply #'pong (connection message) (arguments message)))
  
  (defvar *ping-timeout* 30)
  
  (defun stop-specbot ()
    (sb-sys:remove-fd-handler *fd-handler*)
    (sb-ext:unschedule-timer *timer*)
    (setf *fd-handler* nil
          *timer* nil
          *ping-sent* nil
          *last-communication-time* nil)
    (usocket:socket-close (irc::socket *connection*)))
  
  (defun restart-specbot ()
    (stop-specbot)
  
negative.code: 
  (defvar *last-communication-time* nil)
  (defvar *ping-sent* nil)
  (defvar *thread* nil)
  
  (defun start-handler (connection)
    (flet ((select-handler (fd)
  