     bongo.mq.ready =>
       {connection} = bongo.mq
       @monitorPresence connection
+
+      connection.exchange "#{@resourceName}All", AUTH_EXCHANGE_OPTIONS, (authAllExchange)=>
+        connection.queue '', {exclusive:yes}, (authAllQueue)=>
+          authAllQueue.bind authAllExchange, ''
+          authAllQueue.on 'queueBindOk', =>
+            authAllQueue.subscribe (message, headers, deliveryInfo)=>
+              {routingKey} = deliveryInfo
+              messageStr = "#{message.data}"
+              switch routingKey
+                when 'broker.clientConnected' then # ignore
+                when 'broker.clientDisconnected'
+                  @cleanUpAfterDisconnect messageStr
+
       connection.exchange @resourceName, AUTH_EXCHANGE_OPTIONS, (authExchange)=>
         connection.queue  @resourceName, (authQueue)=>
           authQueue.bind authExchange, ''

              exchange.close() # don't leak a channel
              @addClient socketId, exchange.name, routingKey


    joinClientGroupHelper =(messageData, routingKey, socketId)->
      {JAccount, JGroup} = @bongo.models
      fail = (err)=> @rejectClient routingKey; console.error err  if err
      @authenticate messageData, routingKey, (session)->
        unless session then fail()
        else
          selector = {'profile.nickname': session.username}
          JAccount.one selector, (err, account)->
            if err or not account then fail err
            else
              JGroup.one {slug: messageData.group}, (err, group)->
                if err or not group then fail err
                else 
                  group.fetchRolesByAccount account, (err, roles)->
                    if err or not roles then fail err
                    else

    joinClient =(messageData, socketId)->
      {channel, routingKey, serviceType} = messageData

            authQueue.subscribe (message, headers, deliveryInfo)=>
              {routingKey, correlationId} = deliveryInfo
              socketId = correlationId
              messageData = (try JSON.parse messageStr) or message
              switch routingKey
                when 'kite.join'
                  @addService messageData
                when 'kite.leave'
