public static void LoadExistingMission(string fileName)
        {
            var loadingDialog = new LoadingDialog {
                Owner = MainWindow.Instance
            };

            loadingDialog.Loaded += (s, e) => Utils.InvokeInNewThread(delegate
            {
                var mission        = Mission.FromFile(fileName);
                loadingDialog.Text = "Scanning";
                using (var unitSync = new UnitSync(Settings.Default.SpringPath))
                {
                    unitSync.LoadingStatusChanged += (se, ea) => loadingDialog.Text = ea.Data;
                    loadingDialog.Text             = "Loading Map";
                    mission.Map        = LoadMap(unitSync, mission.MapName);
                    loadingDialog.Text = "Loading Mod";
                    mission.Mod        = LoadMod(unitSync, mission.ModName);
                }

                loadingDialog.Text = "Finalizing";
                mission.PostLoad();
                Settings.Default.MissionPath = fileName;
                Settings.Default.Save();
                loadingDialog.Invoke(delegate
                {
                    loadingDialog.Close();
                    MainWindow.Instance.SavePath = fileName;
                    MainWindow.Instance.Mission  = mission;
                });
            });
            loadingDialog.ShowDialog();
        }