     }
     
     public static func request(command: String, parameters: Parameters, callback: Callback) {
-        let object = storage.object(forKey: authTokenStorageKey)
-        let token: String = (object != nil) ? ":\(object as! String)" : ""
+        let objToken = storage.object(forKey: Keys.AUTH_TOKEN.rawValue)
+        let token: String = (objToken != nil) ? ":\(objToken as! String)" : ""
+        
+        
+        let objPlayer = storage.object(forKey: Keys.SESSION_PLAYER_ID.rawValue)
+        let player: String = (objPlayer != nil) ? ":\(objPlayer as! String)" : ""
         
         let headers: HTTPHeaders = [
-            "Authorization": "\(ID)\(token)"
+            "Authorization": "\(ID)\(token)\(player)"
         ]
         
         Alamofire.request("\(HOST_ADDRESS)\(command)", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON { response in

        
        public func onResponse(responseCode: Int, response: NSDictionary) {
            if(responseCode == 200) {
                storage.set(response["token"], forKey: authTokenStorageKey)
            }
            callback.onResponse(responseCode: responseCode, response: response)
        }
    }
}

    
    private static var ID: String = UIDevice.current.identifierForVendor!.uuidString
    
    private enum Keys: String {
        case AUTH_TOKEN = "AUTH_TOKEN"
        case SESSION_ID = "SESSION_ID"
        case SESSION_PLAYER_ID = "SESSION_PLAYER_ID"
        case SESSION_USERNAME = "SESSION_USERNAME"
        case SESSION_MOD_TOKEN = "SESSION_MOD_TOKEN"
        case SESSION_PLAY_TOKEN = "SESSION_PLAY_TOKEN"
    }
    
    private enum Command: String {
        case REQUEST_AUTH_TOKEN = "/token"
        case CREATE_SESSION = "/session/username/"
    }
    
    public static func setHostAddress(address: String, port: Int = 4567) {
