anchor.diff:      :initarg :date
       :initform (get-universal-time)
       :accessor date
  -    :documentation "Message date in lisp universal date format")))
  +    :documentation "Message date in lisp universal date format")
  +   (nick
  +    :initarg :nick
  +    :initform nil
  +    :accessor nick
  +    :documentation "Sender nickname")
  +   (host
  +    :initarg :host
  +    :initform nil
  +    :accessor host
  +    :documentation "User and host name parts of nickmask")))
  +
  +(defmethod initialize-instance :after ((msg irc-message) &key)
  +  "Initialize base message, parse username and host."
  +  (with-accessors ((prefix prefix) (nick nick) (host host)) msg
  +    (let ((splitted (split-once prefix "!")))
  +      (if (= (length splitted) 1)
  +          (setf host (car splitted))
  +          (setf nick (car splitted)
  +                host (cadr splitted))))))
   
   ;; Pretty date formatting
   (defgeneric date-fmt (irc-message)
  
positive.code:                    (args args)
                     (message message)) msg
      (setf message (car args))))
  
  (defclass part-message (privmsg-message)
    ((channel
  
negative.code: (defmethod print-object ((msg privmsg-message) stream)
    "Print PRIVMSG object."
    (print-unreadable-object (msg stream :type t :identity t)
      (format stream "~a: NICK: '~a' HOST: '~a' CHANNEL: '~a' MSG: '~a'"
              (date-fmt msg)
              (nick msg)
              (host msg)
              (channel msg)
              (message msg))))
  
  