       @usersRef.child(username).child("status").on "value", (snapshot) =>
         status = snapshot.val()
         if status is "online"
+          @activeUsers[username] = @users[username]  if @users[username]
           @emit "SomeoneJoinedToTheSession", username
+          @setPresenceHandler()  unless @presenceInterval
           if @amIHost()
             message = "#{username} joined the session"
             @addToHistory { message, by: KD.nick() }
         else if status is "offline"
+          delete @activeUsers[username]
+          @killPresenceTimer()  if Object.keys(@activeUsers).length is 0
           @emit "SomeoneHasLeftTheSession", username
           if @amIHost()
             message = "#{username} has left the session"


    @userRef.child("status").onDisconnect().set "offline"

  fetchUsers: ->
    @workspaceRef.once "value", (snapshot) =>
      val = snapshot.val()

    @nickname    = KD.nick()
    @sessionData = []
    @users       = {}
    @activeUsers = {}
    @createRemoteInstance()
    @createLoader()
    @fetchUsers()
