     [ [ name>> ] [ password>> ] bi /JOIN ]
     [ [ [ drop irc> join-messages>> ]
         [ timeout>> ]
-        [ name>> [ swap trailing>> = ] curry ]
+        [ name>> '[ trailing>> , = ] ]
         tri mailbox-get-timeout? trailing>> ] keep set+run-listener
     ] bi ;
 
 M: irc-nick-listener (add-listener) ( irc-nick-listener -- )
-   [ name>> ] keep set+run-listener ;
+    [ name>> ] keep set+run-listener ;
+
+M: irc-server-listener (add-listener) ( irc-server-listener -- )
+    f swap set+run-listener ;
 
 : (connect-irc) ( irc-client -- )
     [ profile>> [ server>> ] keep port>> /CONNECT ] keep

! ======================================

: set+run-listener ( name irc-listener -- )
    [ [ listener-loop ] 2curry "listener" spawn-irc-loop ]
    [ swap irc> listeners>> set-at ]
    2bi ;


    name>> "_" append /NICK ;

M: privmsg handle-incoming-irc ( privmsg -- )
    dup irc-message-origin irc> listeners>> [ at ] keep
    '[ f , at ] unless* [ in-messages>> mailbox-put ] [ drop ] if* ;

M: join handle-incoming-irc ( join -- )
    irc> join-messages>> mailbox-put ;
