     }
     
     public static func hasAuthToken() -> Bool {
-        return storage.object(forKey: authTokenStorageKey) != nil
+        return storage.object(forKey: Keys.AUTH_TOKEN.rawValue) != nil
+    }
+    
+    public static func createSession(username: String, callback: Callback) {
+        let command: String = "\(Command.CREATE_SESSION.rawValue)\(username)"
+        let createSessionCallback: Callback = CreateSessionCallback(username: username, callback: callback)
+    }
+    
+    public static func hasSession() -> Bool {
+        return storage.object(forKey: Keys.SESSION_ID.rawValue) != nil
+    }
+    
+    public static func isSessionAdmin() -> Bool {
+        let hasModtoken: Bool = storage.object(forKey: Keys.SESSION_MOD_TOKEN.rawValue) != nil
+        let hasPlayToken: Bool = storage.object(forKey: Keys.SESSION_PLAY_TOKEN.rawValue) != nil
+        return hasSession() && hasModtoken && hasPlayToken
     }
     
     private class AuthTokenCallback: Callback {

    }
    
    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 headers: HTTPHeaders = [
            "Authorization": "\(ID)\(token)"
        ]
        
        Alamofire.request("\(HOST_ADDRESS)\(command)", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON { response in

    
    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) {
