 
   KD.troubleshoot = (showNotifications=true)->
     monitorItems = KD.getSingleton("monitorItems").items
+
+    if monitorItems.length == 1
+      log "no services connected; possible auth/social worker down"
+      return
+
     monitor = new MonitorStatus monitorItems
     monitor.showNotifications = showNotifications
     monitor.run()
 
-  window.jsonp = ->
-    KD.externalPong()
-
-  brokerInterval  = null
-  failureCallback = null
-  lastPong        = null
+  window.jsonp =-> KD.externalPong()
+
+  brokerInterval       = null
+  failureCallback      = null
+  lastPong             = null
+  timesTroubleshootRan = 0
 
   # use broker ping to determine internet connection
+  # TODO: refactor this ugliness
   pingBrokerOnInterval = ->
     brokerInterval = setInterval ->
       clearTimeout failureCallback

        lastPong = Date.now()

      failureCallback = setTimeout ->
        log 'broker ping failed, running troubleshoot', failureCallback
        KD.troubleshoot(false)
      , 3000

      KD.remote.mq.ping -> brokerPong()

    , 5000

  KD.remote.on 'connected', ->
    pingBrokerOnInterval()
    log 'connected, starting broker ping', brokerInterval

  KD.remote.on 'disconnected', ->
    return unless brokerInterval?

    log 'disconnected, stopping broker ping'

    clearInterval brokerInterval
    clearTimeout failureCallback
    brokerInterval  = null

      @printReport()
      @reset()

    @on "internetDown", ->
      status = KD.getSingleton "status"
      status.internetDown()
