diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs
index 46a004b6..ecc76acf 100644
--- a/Core/FormBrowser.cs
+++ b/Core/FormBrowser.cs
@@ -99,6 +99,7 @@ public FormBrowser(PluginManager pluginManager, UpdaterSettings updaterSettings)
 
             this.updates = new UpdateHandler(browser, this, updaterSettings);
             this.updates.UpdateAccepted += updates_UpdateAccepted;
+            this.updates.UpdateDismissed += updates_UpdateDismissed;
         }
 
         private void ShowChildForm(Form form){
@@ -246,6 +247,11 @@ private void updates_UpdateAccepted(object sender, UpdateAcceptedEventArgs e){
             }
         }
 
+        private void updates_UpdateDismissed(object sender, UpdateDismissedEventArgs e){
+            Config.DismissedUpdate = e.VersionTag;
+            Config.Save();
+        }
+
         protected override void WndProc(ref Message m){
             if (isLoaded && m.Msg == Program.WindowRestoreMessage){
                 trayIcon_ClickRestore(trayIcon, new EventArgs());
diff --git a/Core/Other/Settings/TabSettingsUpdates.cs b/Core/Other/Settings/TabSettingsUpdates.cs
index 39bea95b..d9ebc25e 100644
--- a/Core/Other/Settings/TabSettingsUpdates.cs
+++ b/Core/Other/Settings/TabSettingsUpdates.cs
@@ -28,12 +28,17 @@ private void checkUpdateNotifications_CheckedChanged(object sender, EventArgs e)
         private void btnCheckUpdates_Click(object sender, EventArgs e){
             if (!Ready)return;
 
-            Config.DismissedUpdate = string.Empty;
-            Config.Save();
-
             updateCheckEventId = updates.Check(true);
 
-            btnCheckUpdates.Enabled = false;
+            if (updateCheckEventId == -1){
+                MessageBox.Show("Sorry, your system is no longer supported.", "Unsupported System", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+            }
+            else{
+                btnCheckUpdates.Enabled = false;
+                
+                Config.DismissedUpdate = string.Empty;
+                Config.Save();
+            }
         }
 
         private void updates_CheckFinished(object sender, UpdateCheckEventArgs e){
diff --git a/Program.cs b/Program.cs
index d58df92a..738c2863 100644
--- a/Program.cs
+++ b/Program.cs
@@ -155,7 +155,8 @@ private static void Main(){
             plugins.Reload();
 
             FormBrowser mainForm = new FormBrowser(plugins, new UpdaterSettings{
-                AllowPreReleases = Args.HasFlag("-debugupdates")
+                AllowPreReleases = Args.HasFlag("-debugupdates"),
+                DismissedUpdate = UserConfig.DismissedUpdate
             });
 
             Application.Run(mainForm);
diff --git a/Resources/Scripts/update.js b/Resources/Scripts/update.js
index abbee842..e24cb14c 100644
--- a/Resources/Scripts/update.js
+++ b/Resources/Scripts/update.js
@@ -7,25 +7,25 @@
   //
   // Constant: Update exe file name.
   //
-  const updateFileName = $TDU.brandName+".Update.exe";
+  const updateFileName = "TweetDuck.Update.exe";
   
   //
   // Constant: Url that returns JSON data about latest version.
   //
-  const updateCheckUrlLatest = "https://api.github.com/repos/chylex/"+$TDU.brandName+"/releases/latest";
+  const updateCheckUrlLatest = "https://api.github.com/repos/chylex/TweetDuck/releases/latest";
   
   //
   // Constant: Url that returns JSON data about all versions, including prereleases.
   //
-  const updateCheckUrlAll = "https://api.github.com/repos/chylex/"+$TDU.brandName+"/releases";
+  const updateCheckUrlAll = "https://api.github.com/repos/chylex/TweetDuck/releases";
   
   //
   // Function: Creates the update notification element. Removes the old one if already exists.
   //
-  var createUpdateNotificationElement = function(version, download){
+  var displayNotification = function(version, download){
     var outdated = version === "unsupported";
     
-    var ele = $("#tweetdck-update");
+    var ele = $("#tweetduck-update");
     var existed = ele.length > 0;
     
     if (existed > 0){
@@ -33,7 +33,7 @@
     }
     
     var html = outdated ? [
-      "<div id='tweetdck-update'>",
+      "<div id='tweetduck-update'>",
       "<p class='tdu-title'>Unsupported System</p>",
       "<p class='tdu-info'>You will not receive updates.</p>",
       "<div class='tdu-buttons'>",
@@ -42,8 +42,8 @@
       "</div>",
       "</div>"
     ] : [
-      "<div id='tweetdck-update'>",
-      "<p class='tdu-title'>"+$TDU.brandName+" Update</p>",
+      "<div id='tweetduck-update'>",
+      "<p class='tdu-title'>TweetDuck Update</p>",
       "<p class='tdu-info'>Version "+version+" is now available.</p>",
       "<div class='tdu-buttons'>",
       "<button class='btn btn-positive tdu-btn-download'><span class='label'>Download</span></button>",
@@ -54,7 +54,7 @@
 
     $(document.body).append(html.join(""));
 
-    ele = $("#tweetdck-update");
+    ele = $("#tweetduck-update");
 
     var buttonDiv = ele.children("div.tdu-buttons").first();
 
@@ -128,33 +128,19 @@
   //
   // Function: Runs an update check and updates all DOM elements appropriately.
   //
-  var runUpdateCheck = function(force, eventID){
-    if (!$TDU.isSystemSupported){
-      if ($TDU.dismissedVersionTag !== "unsupported"){
-        createUpdateNotificationElement("unsupported");
-      }
-      
-      return;
-    }
-    
+  var runUpdateCheck = function(eventID, versionTag, dismissedVersionTag, allowPre){
     clearTimeout(updateCheckTimeoutID);
-    updateCheckTimeoutID = setTimeout(runUpdateCheck, 1000*60*60); // 1 hour
-    
-    if (!$TDU.updateCheckEnabled && !force){
-      return;
-    }
-    
-    var allowPre = $TDU.allowPreReleases;
+    updateCheckTimeoutID = setTimeout($TDU.triggerUpdateCheck, 1000*60*60); // 1 hour
     
     $.getJSON(allowPre ? updateCheckUrlAll : updateCheckUrlLatest, function(response){
       var release = allowPre ? response[0] : response;
       
       var tagName = release.tag_name;
-      var hasUpdate = tagName !== $TDU.versionTag && tagName !== $TDU.dismissedVersionTag && release.assets.length > 0;
+      var hasUpdate = tagName !== versionTag && tagName !== dismissedVersionTag && release.assets.length > 0;
       
       if (hasUpdate){
         var obj = release.assets.find(asset => asset.name === updateFileName) || release.assets[0];
-        createUpdateNotificationElement(tagName, obj.browser_download_url);
+        displayNotification(tagName, obj.browser_download_url);
       }
       
       if (eventID){ // ignore undefined and 0
@@ -166,6 +152,6 @@
   //
   // Block: Setup global functions.
   //
+  window.TDUF_displayNotification = displayNotification;
   window.TDUF_runUpdateCheck = runUpdateCheck;
-  runUpdateCheck();
 })($, $TDU);
diff --git a/TweetDck.csproj b/TweetDck.csproj
index 5f813c0d..877cb079 100644
--- a/TweetDck.csproj
+++ b/TweetDck.csproj
@@ -222,6 +222,7 @@
     <Compile Include="Plugins\PluginManager.cs" />
     <Compile Include="Plugins\PluginScriptGenerator.cs" />
     <Compile Include="Reporter.cs" />
+    <Compile Include="Updates\Events\UpdateDismissedEventArgs.cs" />
     <Compile Include="Updates\FormUpdateDownload.cs">
       <SubType>Form</SubType>
     </Compile>
diff --git a/Updates/Events/UpdateDismissedEventArgs.cs b/Updates/Events/UpdateDismissedEventArgs.cs
new file mode 100644
index 00000000..8b5a4331
--- /dev/null
+++ b/Updates/Events/UpdateDismissedEventArgs.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace TweetDck.Updates.Events{
+    class UpdateDismissedEventArgs : EventArgs{
+        public readonly string VersionTag;
+
+        public UpdateDismissedEventArgs(string versionTag){
+            this.VersionTag = versionTag;
+        }
+    }
+}
diff --git a/Updates/UpdateHandler.cs b/Updates/UpdateHandler.cs
index bbec1516..8d307c61 100644
--- a/Updates/UpdateHandler.cs
+++ b/Updates/UpdateHandler.cs
@@ -9,11 +9,18 @@
 
 namespace TweetDck.Updates{
     class UpdateHandler{
+        private static bool IsSystemSupported{
+            get{
+                return true; // Environment.OSVersion.Version >= new Version("6.1"); // 6.1 NT version = Windows 7
+            }
+        }
+
         private readonly ChromiumWebBrowser browser;
         private readonly FormBrowser form;
         private readonly UpdaterSettings settings;
 
         public event EventHandler<UpdateAcceptedEventArgs> UpdateAccepted;
+        public event EventHandler<UpdateDismissedEventArgs> UpdateDismissed;
         public event EventHandler<UpdateCheckEventArgs> CheckFinished;
 
         private int lastEventId;
@@ -24,18 +31,34 @@ public UpdateHandler(ChromiumWebBrowser browser, FormBrowser form, UpdaterSettin
             this.settings = settings;
 
             browser.FrameLoadEnd += browser_FrameLoadEnd;
-            browser.RegisterJsObject("$TDU", new Bridge(this));
+            browser.RegisterAsyncJsObject("$TDU", new Bridge(this));
         }
 
         private void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){
             if (e.Frame.IsMain && BrowserUtils.IsTweetDeckWebsite(e.Frame)){
                 ScriptLoader.ExecuteFile(e.Frame, "update.js");
+                Check(false);
             }
         }
 
         public int Check(bool force){
-            browser.ExecuteScriptAsync("TDUF_runUpdateCheck", force, ++lastEventId);
-            return lastEventId;
+            if (IsSystemSupported){
+                if (Program.UserConfig.EnableUpdateCheck || force){
+                    if (force){
+                        settings.DismissedUpdate = null;
+                    }
+
+                    browser.ExecuteScriptAsync("TDUF_runUpdateCheck", ++lastEventId, Program.VersionTag, settings.DismissedUpdate ?? string.Empty, settings.AllowPreReleases);
+                    return lastEventId;
+                }
+
+                return 0;
+            }
+            else if (settings.DismissedUpdate != "unsupported"){
+                browser.ExecuteScriptAsync("TDUF_displayNotification", "unsupported");
+            }
+            
+            return -1;
         }
 
         private void TriggerUpdateAcceptedEvent(UpdateAcceptedEventArgs args){
@@ -44,6 +67,16 @@ private void TriggerUpdateAcceptedEvent(UpdateAcceptedEventArgs args){
             }
         }
 
+        private void TriggerUpdateDismissedEvent(UpdateDismissedEventArgs args){
+            form.InvokeSafe(() => {
+                settings.DismissedUpdate = args.VersionTag;
+                
+                if (UpdateDismissed != null){
+                    UpdateDismissed(this, args);
+                }
+            });
+        }
+
         private void TriggerCheckFinishedEvent(UpdateCheckEventArgs args){
             if (CheckFinished != null){
                 form.InvokeSafe(() => CheckFinished(this, args));
@@ -51,48 +84,16 @@ private void TriggerCheckFinishedEvent(UpdateCheckEventArgs args){
         }
 
         public class Bridge{
-            public string BrandName{
-                get{
-                    return Program.BrandName;
-                }
-            }
-
-            public string VersionTag{
-                get{
-                    return Program.VersionTag;
-                }
-            }
-
-            public bool UpdateCheckEnabled{
-                get{
-                    return Program.UserConfig.EnableUpdateCheck;
-                }
-            }
-
-            public string DismissedVersionTag{
-                get{
-                    return Program.UserConfig.DismissedUpdate ?? string.Empty;
-                }
-            }
-
-            public bool AllowPreReleases{
-                get{
-                    return owner.settings.AllowPreReleases;
-                }
-            }
-
-            public bool IsSystemSupported{
-                get{
-                    return true; // Environment.OSVersion.Version >= new Version("6.1"); // 6.1 NT version = Windows 7
-                }
-            }
-
             private readonly UpdateHandler owner;
 
             public Bridge(UpdateHandler owner){
                 this.owner = owner;
             }
 
+            public void TriggerUpdateCheck(){
+                owner.Check(false);
+            }
+
             public void OnUpdateCheckFinished(int eventId, bool isUpdateAvailable, string latestVersion){
                 owner.TriggerCheckFinishedEvent(new UpdateCheckEventArgs(eventId, isUpdateAvailable, latestVersion));
             }
@@ -102,10 +103,7 @@ public void OnUpdateAccepted(string versionTag, string downloadUrl){
             }
 
             public void OnUpdateDismissed(string versionTag){
-                owner.form.InvokeSafe(() => {
-                    Program.UserConfig.DismissedUpdate = versionTag;
-                    Program.UserConfig.Save();
-                });
+                owner.TriggerUpdateDismissedEvent(new UpdateDismissedEventArgs(versionTag));
             }
 
             public void OpenBrowser(string url){
diff --git a/Updates/UpdaterSettings.cs b/Updates/UpdaterSettings.cs
index 4fe7ea06..b972ce10 100644
--- a/Updates/UpdaterSettings.cs
+++ b/Updates/UpdaterSettings.cs
@@ -1,5 +1,6 @@
 namespace TweetDck.Updates{
     class UpdaterSettings{
         public bool AllowPreReleases { get; set; }
+        public string DismissedUpdate { get; set; }
     }
 }