diff --git a/resources/lib/ClientInformation.py b/resources/lib/ClientInformation.py
index 280c059a..1357f8ca 100644
--- a/resources/lib/ClientInformation.py
+++ b/resources/lib/ClientInformation.py
@@ -1,12 +1,12 @@
-################################################################
+#######################################################################
 #       CLIENTINFORMATION: centralized client data
 #       -------------------------------
-#       addonId, addon version, clientId, platform
-################################################################
+#       addonId, addonName, addon version, clientId, platform       
+#######################################################################
 #       USER: centralized Userdata
 #       -------------------------------
-#       username, userId, token, server, Loglvl
-################################################################
+#       username, userId, token, server, http prefix, LogLevel
+#######################################################################
 
 import xbmc
 import xbmcaddon
@@ -20,11 +20,39 @@ class ClientInformation():
     def __init__(self):
         addonId = self.getAddonId()
         self.addon = xbmcaddon.Addon(id=addonId)
+        self.WINDOW = xbmcgui.Window( 10000 )
+
+        level = User().getLogLevel()     
+        self.logLevel = 0
+        
+        if (level != None and level != ""):
+            self.logLevel = int(level)
+        
+        if (self.logLevel == 2):
+            self.LogCalls = True
+
+    def logMsg(self, msg, level = 1):
+
+        addonName = self.getAddonName()
+        className = self.__class__.__name__
+        
+        if (self.logLevel >= level):
+            try:
+                xbmc.log("%s %s -> %s" % (addonName, className, str(msg)))
+            except UnicodeEncodeError:
+                try:
+                    xbmc.log("%s %s -> %s" % (addonName, className, str(msg.encode('utf-8'))))
+                except: pass
     
     def getAddonId(self):
         # To use when declaring xbmcaddon.Addon(id=addonId)
         addonId = "plugin.video.mb3sync"
         return addonId
+
+    def getAddonName(self):
+        # Useful for logging
+        addonName = self.addon.getAddonInfo('name').upper()
+        return addonName
     
     def getVersion(self):
         
@@ -33,7 +61,7 @@ class ClientInformation():
     
     def getMachineId(self):
     
-        WINDOW = xbmcgui.Window( 10000 )
+        WINDOW = self.WINDOW
         
         clientId = WINDOW.getProperty("client_id")
         if(clientId != None and clientId != ""):
@@ -58,13 +86,13 @@ class ClientInformation():
                 if(len(clientId) == 0):
                     uuid = uuid4()
                     clientId = str("%012X" % uuid)
-                    xbmc.log("CLIENT_ID - > Client ID saved to FILE : " + clientId)                    
+                    self.logMsg("ClientId saved to FILE : %s" % clientId)                    
                     os.write(fd, clientId)
                     os.fsync(fd)
                     
                 os.close(fd)
                 
-                xbmc.log("CLIENT_ID - > Client ID saved to WINDOW : " + clientId)
+                self.logMsg("ClientId saved to WINDOW : %s" % clientId)
                 WINDOW.setProperty("client_id", clientId)
                  
         finally: 
@@ -95,6 +123,29 @@ class User(ClientInformation):
     def __init__(self):
         addonId = self.getAddonId()
         self.addon = xbmcaddon.Addon(id=addonId)
+        self.WINDOW = xbmcgui.Window( 10000 )
+
+        level = self.getLogLevel()     
+        self.logLevel = 0
+        
+        if (level != None and level != ""):
+            self.logLevel = int(level)
+        
+        if (self.logLevel == 2):
+            self.LogCalls = True
+
+    def logMsg(self, msg, level = 1):
+
+        addonName = ClientInformation().getAddonName()
+        className = self.__class__.__name__
+        
+        if (self.logLevel >= level):
+            try:
+                xbmc.log("%s %s -> %s" % (addonName, className, str(msg)))
+            except UnicodeEncodeError:
+                try:
+                    xbmc.log("%s %s -> %s" % (addonName, className, str(msg.encode('utf-8'))))
+                except: pass
     
     def getUsername(self):
         
@@ -103,21 +154,56 @@ class User(ClientInformation):
     
     def getUserId(self):
         
-        userId = self.addon.getSetting('userId')
-        return userId
+        username = self.getUsername()
+        w_userId = self.WINDOW.getProperty('userId%s' % username)
+        s_userId = self.addon.getSetting('userId%s' % username)
+
+        # Verify if userId is saved to Window
+        if (w_userId != ""):
+            self.logMsg("Returning saved (WINDOW) UserId for user: %s UserId: %s" % (username, w_userId))
+            return w_userId
+        # Verify if userId is saved in settings
+        elif (s_userId != ""):
+            self.logMsg("Returning saved (SETTINGS) UserId for user: %s UserId: %s" % (username, s_userId))
+            self.WINDOW.setProperty('userId%s' % username, s_userId)
+            return s_userId
+        else:
+            return ""
     
     def getToken(self):
         
-        token = self.addon.getSetting('token')
-        return token
+        username = self.getUsername()
+        w_token = self.WINDOW.getProperty('AccessToken%s' % username)
+        s_token = self.addon.getSetting('AccessToken%s' % username)
+        
+        # Verify if token is saved to Window
+        if (w_token != ""):
+            self.logMsg("Returning saved (WINDOW) AccessToken for user: %s Token: %s" % (username, w_token))
+            return w_token
+        # Verify if token is saved in settings
+        elif (s_token != ""):
+            self.logMsg("Returning saved (SETTINGS) AccessToken for user: %s Token: %s" % (username, s_token))
+            self.WINDOW.setProperty('AccessToken%s' % username, s_token)
+            return s_token
+        else:
+            self.logMsg("User is not authenticated.")
+            return ""
     
     def getServer(self):
         
         host = self.addon.getSetting('ipaddress')
         port = self.addon.getSetting('port')
         return host + ":" + port
+
+    def getHTTPprefix(self):
+        # For https support
+        prefix = self.addon.getSetting('prefix')
+        if prefix:
+            return "https://" 
+        else:
+            return "http://"
     
-    def getLoglvl(self):
+    def getLogLevel(self):
         
-        level = self.addon.getSetting('loglevel')
+        level = self.addon.getSetting('logLevel')
         return level