 
   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

      @printReport()
      @reset()

    @on "webtermDown", (channel) ->
      @emit "onlyChannelDown", "webterm"

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

    notifications =
      internetUp : "All systems go!"
      internetDown: "Your internet is down."
      brokerDown: "Broker is down."
      kitesDown: "Kites are down."
      bongoDown: "Bongo is down."
      undefined: "Sorry, something went wrong."

    msg = notifications[reason] or notifications["undefined"]
