diff --git a/x64/main.cpp b/x64/main.cpp
index 4061d7d..54875da 100644
--- a/x64/main.cpp
+++ b/x64/main.cpp
@@ -39,34 +39,21 @@ int main()
         exit(1);
     }
 
+    std::string username, password, key, TfaCode; // keep this before the auto-login with saved file.
+    // because if you don't and the user has 2FA on, then they won't be asked for 2FA code and can't login.
+
     if (std::filesystem::exists("test.json")) //change test.txt to the path of your file :smile:
     {
         if (!CheckIfJsonKeyExists("test.json", "username"))
         {
-            std::string key = ReadFromJson("test.json", "license");
+            key = ReadFromJson("test.json", "license");
             KeyAuthApp.license(key);
-            if (!KeyAuthApp.response.success)
-            {
-                std::remove("test.json");
-                std::cout << skCrypt("\n Status: ") << KeyAuthApp.response.message;
-                Sleep(1500);
-                exit(1);
-            }
-            std::cout << skCrypt("\n\n Successfully Automatically Logged In\n");
         }
         else
         {
-            std::string username = ReadFromJson("test.json", "username");
-            std::string password = ReadFromJson("test.json", "password");
+            username = ReadFromJson("test.json", "username");
+            password = ReadFromJson("test.json", "password");
             KeyAuthApp.login(username, password);
-            if (!KeyAuthApp.response.success)
-            {
-                std::remove("test.json");
-                std::cout << skCrypt("\n Status: ") << KeyAuthApp.response.message;
-                Sleep(1500);
-                exit(1);
-            }
-            std::cout << skCrypt("\n\n Successfully Automatically Logged In\n");
         }
     }
     else
@@ -74,7 +61,6 @@ int main()
         std::cout << skCrypt("\n\n [1] Login\n [2] Register\n [3] Upgrade\n [4] License key only\n\n Choose option: ");
 
         int option;
-        std::string username, password, key, TfaCode;
 
         std::cin >> option;
         switch (option)
@@ -84,9 +70,7 @@ int main()
             std::cin >> username;
             std::cout << skCrypt("\n Enter password: ");
             std::cin >> password;
-            std::cout << skCrypt("\n Enter 2fa code if applicable: ");
-            std::cin >> TfaCode;
-            KeyAuthApp.login(username, password, TfaCode);
+            KeyAuthApp.login(username, password, "");
             break;
         case 2:
             std::cout << skCrypt("\n\n Enter username: ");
@@ -107,34 +91,55 @@ int main()
         case 4:
             std::cout << skCrypt("\n Enter license: ");
             std::cin >> key;
-            std::cout << skCrypt("\n Enter 2fa code if applicable: ");
-            std::cin >> TfaCode;
-            KeyAuthApp.license(key, TfaCode);
+            KeyAuthApp.license(key, "");
             break;
         default:
             std::cout << skCrypt("\n\n Status: Failure: Invalid Selection");
             Sleep(3000);
             exit(1);
         }
+    }
 
-        if (KeyAuthApp.response.message.empty()) exit(11);
-        if (!KeyAuthApp.response.success)
-        {
+    if (KeyAuthApp.response.message.empty()) exit(11);
+    if (!KeyAuthApp.response.success)
+    {
+        if (KeyAuthApp.response.message == "2FA code required.") {
+            if (username.empty() || password.empty()) {
+                std::cout << skCrypt("\n Your account has 2FA enabled, please enter 6-digit code:");
+                std::cin >> TfaCode;
+                KeyAuthApp.license(key, TfaCode);
+            }
+            else {
+                std::cout << skCrypt("\n Your account has 2FA enabled, please enter 6-digit code:");
+                std::cin >> TfaCode;
+                KeyAuthApp.login(username, password, TfaCode);
+            }
+
+            if (KeyAuthApp.response.message.empty()) exit(11);
+            if (!KeyAuthApp.response.success) {
+                std::cout << skCrypt("\n Status: ") << KeyAuthApp.response.message;
+                std::remove("test.json");
+                Sleep(1500);
+                exit(1);
+            }
+        }
+        else {
             std::cout << skCrypt("\n Status: ") << KeyAuthApp.response.message;
+            std::remove("test.json");
             Sleep(1500);
             exit(1);
         }
+    }
 
-        if (username.empty() || password.empty())
-        {
-            WriteToJson("test.json", "license", key, false, "", "");
-            std::cout << skCrypt("Successfully Created File For Auto Login");
-        }
-        else
-        {
-            WriteToJson("test.json", "username", username, true, "password", password);
-            std::cout << skCrypt("Successfully Created File For Auto Login");
-        }
+    if (username.empty() || password.empty())
+    {
+        WriteToJson("test.json", "license", key, false, "", "");
+        std::cout << skCrypt("Successfully Created File For Auto Login");
+    }
+    else
+    {
+        WriteToJson("test.json", "username", username, true, "password", password);
+        std::cout << skCrypt("Successfully Created File For Auto Login");
     }
 
     /*