private async void updateBtn_Click(object sender, EventArgs e)
        {
            if (ProcessWatcher.IsGameRunning())
            {
                Notifications.PlayErrorSound();

                MaterialMessageBox.Show(null,
                                        "The game is active and running! Please close it if you wish to begin updating.", "CLOSE THE GAME",
                                        MessageBoxButtons.OK);

                return;
            }

            if (UpdateData.Version.Equals("1.3.0") && VRegistry.GetSubKeyValue("Version").Equals("1.2.0"))
            {
                Notifications.PlayNotificationSound2();

                var dialogResult = MaterialMessageBox.Show(null,
                                                           "Update 1.3.0 has a different file system organization and therefore previous update files must be removed.\n" +
                                                           "Would you like the client to delete a list of 1.2.0 files and begin installing 1.3.0?", "Important notice!", MessageBoxButtons.YesNo);

                if (dialogResult == DialogResult.Yes)
                {
                    Updater.RemoveOlderUpdate("1.2.0");
                }
                else
                {
                    CleanUpdateUi();
                    return;
                }
            }

            if (UpdateData.Version.Equals("1.4.0") && VRegistry.GetSubKeyValue("Version").Equals("1.3.0"))
            {
                Updater.RemoveOlderUpdate("1.3.0");
            }

            checkUpdatesBtn.Enabled = false;
            updateBtn.Enabled       = false;
            changePathBtn.Enabled   = false;

            if (File.Exists("data_" + UpdateData.Version + ".rar"))
            {
                Notifications.PlayNotificationSound2();
                var dialogResult = MaterialMessageBox.Show(null, "We've found already downloaded update package.\n\n" +
                                                           "The package might be corrupted / invalid." +
                                                           "Do you wish to install this package?",
                                                           "Package found", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);

                if (dialogResult == DialogResult.Yes)
                {
                    versionAvailableLbl.Text = "installing the cached update ...";

                    var installCached = Task.Run(() => Updater.InstallUpdate());
                    await Task.WhenAll(installCached);

                    if (installCached.Result)
                    {
                        DisplayFinishedInstallUi();
                    }
                    else
                    {
                        CleanUpdateUi();

                        Notifications.PlayErrorSound();
                        FlashWindow(this.Handle, true);

                        return;
                    }

                    CleanupUpdate();

                    Analytics.TrackEvent("Cached update has been installed", new Dictionary <string, string>
                    {
                        { "Version", UpdateData.Version }
                    });
                }
                else
                {
                    DownloadUpdate();
                }
            }

            else
            {
                DownloadUpdate();
            }
        }