anchor.diff:    ;; declare some useful local functions
     (labels (
   
  -	   (make-header (line)
  -	     (map 'list #'string-strip (string-split line :delim ":" :limit 1)))
  -
  -	   ;; frame name is first line
  -	   (find-name (source)
  -	     (first source))
  -
  -	   ;; frame headers are second lines through to empty line
  -	   (find-headers (source)
  -	     (let ((lines (rest source)))
  -	       (loop
  -		  :for line :in lines
  -		  :while (> (length line) 0)
  -		  :collect (make-header line))))
  -
  -	   ;; frame body is all lines after the empty line
  -	   (find-body (source)
  -	     (let* ((lines (reverse source))
  -		    (result (loop
  -			       :for line :in lines
  -			       :while (> (length line) 0)
  -			       :collect line)))
  -	       (string-join (nreverse result)))))
  +           (make-header (line)
  +             (map 'list #'string-strip (string-split line :delim ":" :limit 1)))
  +
  +           ;; frame name is first line
  +           (find-name (source)
  +             (first source))
  +
  +           ;; frame headers are second lines through to empty line
  +           (find-headers (source)
  +             (let ((lines (rest source)))
  +               (loop
  +                  :for line :in lines
  +                  :while (> (length line) 0)
  +                  :collect (make-header line))))
  +
  +           ;; frame body is all lines after the empty line
  +           (find-body (source)
  +             (let* ((lines (reverse source))
  +                    (result (loop
  +                               :for line :in lines
  +                               :while (> (length line) 0)
  +                               :collect line)))
  +               (string-join (nreverse result)))))
   
       (let ((lines (string-lines string)))
         (let ((name (find-name lines))
  -	    (headers (find-headers lines))
  -	    (body (find-body lines)))
  -	(make-instance 'frame :name name :headers headers :body body)))))
  +            (headers (find-headers lines))
  +            (body (find-body lines)))
  +        (make-instance 'frame :name name :headers headers :body body)))))
   
   (defmethod print-object ((self frame) stream)
     (with-slots (name headers body) self
  
positive.code:   (with-slots (callbacks) self
      (let ((destination (get-destination frame)))
        (loop 
  	 :for (dest func) :in callbacks
  	 :do (if (string= dest destination)
  		 (funcall func frame))))))
    
  (defmethod receive ((self stomp-connection))
    "Called whenever there's activity on the file descriptor."
    (with-slots (socket fd handler callbacks) self
      (let ((str (sb-sys:make-fd-stream fd :input t :element-type '(unsigned-byte 8)
  				      :buffering :full)))
        (let ((buffer (loop 
  		       :for b = (read-byte str nil 'eof)
  		       :while (listen str)
  		       :collect b)))
  
  	(if (> (length buffer) 0)
  
  	    ;; if we got something, send it to all the
  	    ;; registered callbacks
  
  	    (let ((frame (make-frame (string-from-bytes buffer))))
  	      (apply-callbacks self frame))
  
  	    ;; otherwise, it means the other end has terminated,
  	    ;; so close things down (eventually go into a sleep/wait
  	    ;; loop in case of reconnection
  
  	    (handler-case
  		(progn
  		  (log-debug "nothing to read from socket~%")
  		  (disconnect self)
  		  (sb-sys:remove-fd-handler handler)
   		  (sk-close socket))
  	      (condition (c)
  		(log-debug "close: ~a" c))))))))
  
  (defmethod register ((self stomp-connection) callback destination)
    (with-slots (callbacks) self
  
negative.code:   (let ((result ()))
      (with-input-from-string (stream string)
        (loop 
           :for line = (read-line stream nil 'eof)
           :while (not (eql line 'eof))
           :do (setf result (pushnew line result))))
      (nreverse result)))
  
  (defun string-contains (string str-or-char-list)
  