       return KD.showError err  if err
 
       @socialChannel.emit 'RemovedFromChannel', account
+
+
+  listenPings: ->
+
+    pingInterval = 1000 * 5
+    pongInterval = 1000 * 15
+    diffInterval = 1000 * 32
+
+    if @amIHost
+      KD.utils.repeat pingInterval, => @pingTime.setText Date.now().toString()
+    else
+      KD.utils.repeat pongInterval, =>
+        lastPing = @pingTime.getText()
+
+        if Date.now() - lastPing > diffInterval
+          log 'falling behind'

      @participants      = @rtm.getFromModel 'participants'
      @changes           = @rtm.getFromModel 'changes'
      @broadcastMessages = @rtm.getFromModel 'broadcastMessages'
      @myWatchMap        = @rtm.getFromModel myWatchMapName
      @mySnapshot        = @rtm.getFromModel mySnapshotName

      @participants      or= @rtm.create 'list', 'participants', []
      @changes           or= @rtm.create 'list', 'changes', []
      @broadcastMessages or= @rtm.create 'list', 'broadcastMessages', []
      @myWatchMap        or= @rtm.create 'map',  myWatchMapName, {}
      @mySnapshot        or= @rtm.create 'map',  mySnapshotName, @createWorkspaceSnapshot()

      if @amIHost
        @getView().setClass 'host'


      @registerParticipantSessionId()
      @bindRealtimeEvents()
      # @listenPings()
      @rtm.isReady = yes
      @emit 'RTMIsReady'
      @resurrectSnapshot()
