diff --git a/SharpQuark/ApiResult/BaseApiResult.cs b/SharpQuark/ApiResult/BaseApiResult.cs
index 1b889feb9f2f5ffe4778dcfaf87a3efb5beb520a..c8dda1b5fbcf861d7375e8f3db989ca7929dc1f6 100644
--- a/SharpQuark/ApiResult/BaseApiResult.cs
+++ b/SharpQuark/ApiResult/BaseApiResult.cs
@@ -1,29 +1,27 @@
 using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
 
 namespace SharpQuark.ApiResult;
 
 public class BaseApiResult
 {
     [JsonProperty("request")]
-    public Request Request;
+    public required Request Request;
     [JsonProperty("response")]
-    public Response Response;
+    public Response? Response;
 }
 
 public class Request
 {
     [JsonProperty("status_code")]
-    public int StatusCode;
+    public required int StatusCode;
     [JsonProperty("success")]
-    public bool Success;
+    public required bool Success;
     [JsonProperty("cat")]
-    public string Cat;
+    public required string Cat;
 }
 
 public class Response
 {
     [JsonProperty("message")]
-    public string Message;
-    public JObject RawData;
+    public required string Message;
 }
\ No newline at end of file
diff --git a/SharpQuark/Methods/Auth.cs b/SharpQuark/Methods/Auth.cs
index 389c667c0d5b8cba0e7d959cccf53584d379fcfa..b6b71272c62f3df9d876ae8620590831c9cf8fdc 100644
--- a/SharpQuark/Methods/Auth.cs
+++ b/SharpQuark/Methods/Auth.cs
@@ -1,5 +1,4 @@
 using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
 using SharpQuark.ApiResult;
 
 namespace SharpQuark;
diff --git a/SharpQuark/SharpQuark.csproj b/SharpQuark/SharpQuark.csproj
index 68086add6e4bc29c44c5a0604632e89f5a0543f3..8f54db0a7bb07803bce91edc9f077a4ac87025d3 100644
--- a/SharpQuark/SharpQuark.csproj
+++ b/SharpQuark/SharpQuark.csproj
@@ -4,8 +4,8 @@
         <TargetFramework>net8.0</TargetFramework>
         <ImplicitUsings>enable</ImplicitUsings>
         <Nullable>enable</Nullable>
-        <AssemblyVersion>2024.2.11.0</AssemblyVersion>
-        <Version>2024.2.11.0-beta</Version>
+        <AssemblyVersion>2024.2.11.1</AssemblyVersion>
+        <Version>2024.2.11.1-beta</Version>
     </PropertyGroup>
 
     <ItemGroup>
diff --git a/SharpQuark/Token/Token.cs b/SharpQuark/Token/Token.cs
index d20c6fd8156aa2d0b99268101365e32fd18cfec8..0254244c6fe2b9381cf78ab123044698f293c2a6 100644
--- a/SharpQuark/Token/Token.cs
+++ b/SharpQuark/Token/Token.cs
@@ -14,16 +14,15 @@ public class TokenException(string? exception = null) : Exception(exception);
 
 public class Token
 {
-    private string? token;
-    private TokenType type;
-    private DateTime expiresAt;
-    private DateTime createdAt;
+    private string? _token;
+    private TokenType _type;
+    private DateTime _expiresAt;
     public bool Expired
     {
         get
         {
-            if (type == TokenType.Refresh) return false;
-            return DateTime.Now > expiresAt;
+            if (_type == TokenType.Refresh) return false;
+            return DateTime.Now > _expiresAt;
         }
     }
 
@@ -45,7 +44,7 @@ public class Token
         var prefixPart = tokenParts[0];
         var typePart = tokenParts[1];
         // randomPart can be ignored, it has no useful data
-        var creationTimePart = tokenParts[3];
+        // creationTimePart can also be ignored, turns out we don't care when the token was made
         var expirationTimePart = tokenParts[4];
 
         if (prefixPart != "LQ") throw new TokenException($"Wrong token prefix: expected 'LQ', got {prefixPart}");
@@ -56,14 +55,11 @@ public class Token
             _ => throw new TokenException($"Invalid token type: expected one of 'RE', 'AC', got {typePart}")
         };
 
-        DateTime creationDate;
         DateTime expiryDate;
         try
         {
-            var creationTime = Base36Converter.ConvertFrom(creationTimePart);
             var expiryTime = Base36Converter.ConvertFrom(expirationTimePart);
             var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
-            creationDate = origin.AddMilliseconds(creationTime);
             expiryDate = origin.AddMilliseconds(expiryTime);
         }
         catch (Exception e)
@@ -75,25 +71,23 @@ public class Token
         {
             return new AccessToken
             {
-                token = token,
-                type = tokenType,
-                expiresAt = expiryDate,
-                createdAt = creationDate
+                _token = token,
+                _type = tokenType,
+                _expiresAt = expiryDate
             };
         }
 
         return new RefreshToken
         {
-            token = token,
-            type = tokenType,
-            expiresAt = expiryDate,
-            createdAt = creationDate
+            _token = token,
+            _type = tokenType,
+            _expiresAt = expiryDate
         };
     }
 
     public override string? ToString()
     {
-        return token;
+        return _token;
     }
 }
 
diff --git a/SharpQuark/Token/TokenCredential.cs b/SharpQuark/Token/TokenCredential.cs
index eb960527da95d7ba370a24b4c48db332f0b98961..04c4a6c6ee87f697f9e61a5e65a71ca54aa04daf 100644
--- a/SharpQuark/Token/TokenCredential.cs
+++ b/SharpQuark/Token/TokenCredential.cs
@@ -1,11 +1,9 @@
-using System.Diagnostics;
+namespace SharpQuark.Token;
 
-namespace SharpQuark.Token;
-
-public class TokenCredential
+public class TokenCredential(AccessToken accessToken, RefreshToken refreshToken)
 {
-    public AccessToken AccessToken;
-    public readonly RefreshToken RefreshToken;
+    public AccessToken AccessToken = accessToken;
+    public readonly RefreshToken RefreshToken = refreshToken;
 
     public bool Expired => AccessToken.Expired;
     
@@ -23,16 +21,10 @@ public class TokenCredential
         }
     }
 
-    public TokenCredential(AccessToken accessToken, RefreshToken refreshToken)
-    {
-        AccessToken = accessToken;
-        RefreshToken = refreshToken;
-    }
-    
     public static async Task<TokenCredential> Login(string email, string password, NetworkInformation networkInformation)
     {
         // Create temporary Lightquark instance
-        var tempLq = new Lightquark(new TokenCredential(new AccessToken(), new RefreshToken()), networkInformation);
+        var tempLq = new Lightquark(new TokenCredential(new AccessToken(), new RefreshToken()), networkInformation, null, "v3", true);
         var res = await tempLq.AuthToken(email, password);
         var accessToken = (AccessToken)Token.From(res.Response.AccessToken);
         var refreshToken = (RefreshToken)Token.From(res.Response.RefreshToken);