diff --git a/Launcher-Core/Launcher.cs b/Launcher-Core/Launcher.cs
index 3a36263..fcf7170 100644
--- a/Launcher-Core/Launcher.cs
+++ b/Launcher-Core/Launcher.cs
@@ -17,17 +17,15 @@ namespace Plombir;
 public class Launcher
 {
     private readonly string _version;
-    private readonly string _nickname;
     static private MinecraftPath? _mcPath;
     static private MinecraftLauncher? _mcLauncher;
 
     public int DownloadProgress;
     public string? DownloadStatus;
 
-    public Launcher(string userName, string version, string? location = null)
+    public Launcher(string version, string? location = null)
     {
         _version = version;
-        _nickname = userName;
         _mcPath = new($"{location}/{version}/minecraft");
         _mcLauncher = new(_mcPath);
     }
@@ -51,15 +49,29 @@ public class Launcher
         return;
     }
 
-    async public Task RunLauncher()
+    public MSession CreateOfflineSession(string nickname)
+    {
+        var s = MSession.CreateOfflineSession(nickname);
+        if (s is null) throw new NullReferenceException("Tried creating offline session, but it's resulted in null!");
+        return s;
+    }
+
+    public MSession CreateLicensedSession(string uuid, string accsessToken, string nickname)
+    {
+        var s = new MSession(nickname, accsessToken, uuid);
+        if (s is null) throw new NullReferenceException("Tried creating licensed session, but it's resulted in null!");
+        return s;
+    }
+
+    async public Task RunLauncher(MSession session)
     {
         if (_mcLauncher is null)
             throw new NullReferenceException("Failed to run launcher! Launcher is null!");
 
         var process = await _mcLauncher.BuildProcessAsync(_version, new MLaunchOption
         {
-
-            Session = MSession.CreateOfflineSession(_nickname),
+            // Passing session, to support offline and licensed login methods.
+            Session = session,
             MaximumRamMb = 4096,
 
         }) ?? throw new Exception("Failed to start minecraft process!");
diff --git a/Launcher-UI/ConfigManager.cs b/Launcher-UI/ConfigManager.cs
index 4d17fad..8d07037 100644
--- a/Launcher-UI/ConfigManager.cs
+++ b/Launcher-UI/ConfigManager.cs
@@ -10,12 +10,11 @@ public class ConfigManager
     static private readonly string defaultVersion = "1.20.1";
     static private readonly string defaultNickname = "slugcat";
 
-    static private readonly string currentTweaksVersion = "1.2.0";
+    static private readonly string currentTweaksVersion = "1.2.1";
 
     static private readonly string defaultLoginType = "offline";
     static private readonly string defaultUuid = "offline";
     static private readonly string defaultAccsessToken = "offline";
-    static private readonly string defaultClientToken = "offline";
 
     public static void BuildDefault()
     {
@@ -40,7 +39,6 @@ public class ConfigManager
             ["login-method"] = defaultLoginType,
             ["uuid"] = defaultUuid,
             ["accsess-token"] = defaultAccsessToken,
-            ["client-token"] = defaultClientToken,
 
 
         };
@@ -87,7 +85,6 @@ public class ConfigManager
                 case "nickname": { WriteInConfig(key, defaultNickname); return defaultNickname; }
 
                 case "accsess-token": { WriteInConfig(key, defaultAccsessToken); return defaultAccsessToken; }
-                case "client-token": { WriteInConfig(key, defaultClientToken); return defaultClientToken; }
                 case "uuid": { WriteInConfig(key, defaultUuid); return defaultUuid; }
                 case "login-method": { WriteInConfig(key, defaultLoginType); return defaultLoginType; }
                 case "tweaks-version":
diff --git a/Launcher-UI/LauncherUtils.cs b/Launcher-UI/LauncherUtils.cs
index 0fb7874..90befe0 100644
--- a/Launcher-UI/LauncherUtils.cs
+++ b/Launcher-UI/LauncherUtils.cs
@@ -10,18 +10,23 @@ public class LauncherUtils
 {
     public async static Task CreateMinecraftInstance(MainWindowViewModel vm, Window windowCaller)
     {
+        var licenseStatus = ConfigManager.ReadConfig("login-method");
+
         if (vm.Usernick is null) throw new NullReferenceException("Failed to create minecraft instance! Nickname is null!");
         if (vm.SelectedVersion is null) throw new NullReferenceException("Failed to create minecraft instance! Selected version is null!");
 
         System.Console.WriteLine($"Creating minecraft instance for {vm.Usernick}, {vm.SelectedVersion} in {vm.RuntimeLocation}");
-        LoadingWindow loading = new(vm.Usernick, vm.SelectedVersion, vm.RuntimeLocation);
-        ConfigManager.WriteInConfig("last-version-launched", vm.SelectedVersion);
-        ConfigManager.WriteInConfig("nickname", vm.Usernick);
+        LoadingWindow loading = new(vm);
+
+        SaveCurrentVariablesToConfig(vm);
 
         loading.Show();
         await loading.InitLoading();
         loading.Close();
-        await loading.RunMinecraft();
+
+        if (licenseStatus == "microsoft") await loading.RunMinecraft(true);
+        else                              await loading.RunMinecraft(false);
+        
         return;
     }
 
@@ -29,4 +34,9 @@ public class LauncherUtils
     {
 
     }
+
+    private static void SaveCurrentVariablesToConfig(MainWindowViewModel vm)
+    {
+        ConfigManager.WriteInConfig("last-version-launched", vm.SelectedVersion);
+    }
 }
diff --git a/Launcher-UI/ViewModels/MainWindowViewModel.cs b/Launcher-UI/ViewModels/MainWindowViewModel.cs
index bcde692..f700160 100644
--- a/Launcher-UI/ViewModels/MainWindowViewModel.cs
+++ b/Launcher-UI/ViewModels/MainWindowViewModel.cs
@@ -23,9 +23,6 @@ public partial class MainWindowViewModel : ViewModelBase
     private string? _accsessToken = ConfigManager.ReadConfig("accsess-token");
     public string? AccsesToken { get => _accsessToken; set { _accsessToken = value; OnPropertyChanged(nameof(AccsesToken)); } }
 
-    private string? _clientToken = ConfigManager.ReadConfig("client-token");
-    public string? ClientToken { get => _clientToken; set { _clientToken = value; OnPropertyChanged(nameof(ClientToken)); } }
-
     private string? _uuid = ConfigManager.ReadConfig("uuid");
     public string? UUID { get => _uuid; set { _uuid = value; OnPropertyChanged(nameof(UUID)); } }
 
diff --git a/Launcher-UI/Views/LoadingWindow.axaml.cs b/Launcher-UI/Views/LoadingWindow.axaml.cs
index 1f9aeac..53d317c 100644
--- a/Launcher-UI/Views/LoadingWindow.axaml.cs
+++ b/Launcher-UI/Views/LoadingWindow.axaml.cs
@@ -13,12 +13,14 @@ public partial class LoadingWindow : Window
 {
     private Launcher ln;
     private Task? _buildingTask;
+    private readonly MainWindowViewModel _mainWindowVM;
 
     // Tokens for controlling download task.
     CancellationTokenSource tokenSource = new CancellationTokenSource();
-    public LoadingWindow(string nickname, string? version = null, string? location = null)
+    public LoadingWindow(MainWindowViewModel mainWindowVM)
     {
-        ln = new Launcher(nickname, version ?? "1.20.1", location ?? "./runtime");
+        _mainWindowVM = mainWindowVM;
+        ln = new Launcher(_mainWindowVM.SelectedVersion ?? "1.20.1", _mainWindowVM.RuntimeLocation ?? "./runtime");
         InitializeComponent();
         DataContext = new LoadingWindowViewModel();
     }
@@ -52,9 +54,14 @@ public partial class LoadingWindow : Window
 
     }
 
-    public async Task RunMinecraft()
+    public async Task RunMinecraft(bool IsLicensed)
     {
-        await ln.RunLauncher();
+        var session = ln.CreateOfflineSession(_mainWindowVM.Usernick);
+        if (IsLicensed)
+        {
+            session = ln.CreateLicensedSession(_mainWindowVM.UUID, _mainWindowVM.AccsesToken, _mainWindowVM.Usernick);
+        }
+        await ln.RunLauncher(session);
     }
 
     private void onStopDownloadClick(object sender, RoutedEventArgs e)
diff --git a/Launcher-UI/Views/SessionManagmentWindow.axaml b/Launcher-UI/Views/SessionManagmentWindow.axaml
index 6682519..388e954 100644
--- a/Launcher-UI/Views/SessionManagmentWindow.axaml
+++ b/Launcher-UI/Views/SessionManagmentWindow.axaml
@@ -50,6 +50,14 @@
                     <TextBlock x:Name="loginMethod" />
                 </StackPanel>
 
+                <StackPanel Orientation="Horizontal">
+                    <TextBlock
+                        Text="Session uuid: "
+                        FontFamily="{StaticResource QuicksandFont}"
+                    />
+                    <TextBlock x:Name="currentUuid" />
+                </StackPanel>
+
             </StackPanel>
 
         </Border>
@@ -86,6 +94,13 @@
                     HorizontalAlignment="Left"
                 />
 
+                <Button
+                    FontFamily="{StaticResource QuicksandFont}"
+                    Content="Save"
+                    HorizontalAlignment="Center"
+                    Click="OnSaveButtonClick"
+                />
+
 
             </StackPanel>
         </Border>
@@ -132,13 +147,6 @@
 
         </Border>
 
-        <Button
-            FontFamily="{StaticResource QuicksandFont}"
-            Content="Save"
-            HorizontalAlignment="Center"
-            Click="OnSaveButtonClick"
-        />
-
     </StackPanel>
 
 </Window>
diff --git a/Launcher-UI/Views/SessionManagmentWindow.axaml.cs b/Launcher-UI/Views/SessionManagmentWindow.axaml.cs
index 77e1d75..75f0e28 100644
--- a/Launcher-UI/Views/SessionManagmentWindow.axaml.cs
+++ b/Launcher-UI/Views/SessionManagmentWindow.axaml.cs
@@ -13,9 +13,15 @@ public partial class SessionManagmentWindow : Window
     {
         InitializeComponent();
         _mainWindowVM = mainWindowVM;
+        PopulateInfo();
+    }
+
+    private void PopulateInfo()
+    {
         inputNickname.Text = _mainWindowVM.Usernick; // setting default nickname.
         currentNickname.Text = _mainWindowVM.Usernick;
         loginMethod.Text = _mainWindowVM.LoginMethod;
+        currentUuid.Text = _mainWindowVM.UUID;
     }
 
     private void OnSaveButtonClick(object sender, RoutedEventArgs e)
@@ -26,6 +32,8 @@ public partial class SessionManagmentWindow : Window
         Console.WriteLine($"Changing nickname to {inputNickname.Text}");
 
         button.Content = "Saved!";
+        SaveSessionInfo();
+        PopulateInfo();
     }
 
     async private void OnMicrosoftLoginClick(object sender, RoutedEventArgs e)
@@ -35,6 +43,15 @@ public partial class SessionManagmentWindow : Window
         _mainWindowVM.Usernick = session.Username;
         _mainWindowVM.UUID = session.UUID;
         _mainWindowVM.AccsesToken = session.AccessToken;
-        _mainWindowVM.ClientToken = session.ClientToken;
+        SaveSessionInfo();
+        PopulateInfo();
+    }
+
+    private void SaveSessionInfo()
+    {
+        ConfigManager.WriteInConfig("nickname", _mainWindowVM.Usernick);
+        ConfigManager.WriteInConfig("login-method", _mainWindowVM.LoginMethod);
+        ConfigManager.WriteInConfig("uuid", _mainWindowVM.UUID);
+        ConfigManager.WriteInConfig("accsess-token", _mainWindowVM.AccsesToken);
     }
 }