diff --git a/Plugins/Enums/PluginEnvironment.cs b/Plugins/Enums/PluginEnvironment.cs
index bd4fb2c0..60a28ffa 100644
--- a/Plugins/Enums/PluginEnvironment.cs
+++ b/Plugins/Enums/PluginEnvironment.cs
@@ -26,9 +26,8 @@ public static bool IncludesDisabledPlugins(this PluginEnvironment environment){
 
         public static string GetScriptIdentifier(this PluginEnvironment environment){
             switch(environment){
-                case PluginEnvironment.None: return "root:plugins";
-                case PluginEnvironment.Browser: return "root:plugins.browser";
-                case PluginEnvironment.Notification: return "root:plugins.notification";
+                case PluginEnvironment.Browser: return "root:plugins:browser";
+                case PluginEnvironment.Notification: return "root:plugins:notification";
                 default: return null;
             }
         }
diff --git a/Plugins/PluginManager.cs b/Plugins/PluginManager.cs
index 09cde772..bfcd903a 100644
--- a/Plugins/PluginManager.cs
+++ b/Plugins/PluginManager.cs
@@ -14,7 +14,7 @@ namespace TweetDuck.Plugins{
     sealed class PluginManager{
         private static IReadOnlyDictionary<PluginEnvironment, string> LoadSetupScripts(){
             return PluginEnvironmentExtensions.Map(
-                ScriptLoader.LoadResource("plugins.js"),
+                null,
                 ScriptLoader.LoadResource("plugins.browser.js"),
                 ScriptLoader.LoadResource("plugins.notification.js")
             );
@@ -158,7 +158,6 @@ private void ExecutePlugins(IFrame frame, PluginEnvironment environment){
             }
             
             ScriptLoader.ExecuteScript(frame, PluginSetupScripts[environment], environment.GetScriptIdentifier());
-            ScriptLoader.ExecuteScript(frame, PluginSetupScripts[PluginEnvironment.None], PluginEnvironment.None.GetScriptIdentifier());
             
             bool includeDisabled = environment.IncludesDisabledPlugins();
 
diff --git a/Resources/Scripts/plugins.js b/Resources/Scripts/components/plugins.base.js
similarity index 98%
rename from Resources/Scripts/plugins.js
rename to Resources/Scripts/components/plugins.base.js
index f7684832..2f61b6c1 100644
--- a/Resources/Scripts/plugins.js
+++ b/Resources/Scripts/components/plugins.base.js
@@ -5,23 +5,23 @@
   window.TDPF_loadConfigurationFile = function(pluginObject, fileNameUser, fileNameDefault, onSuccess, onFailure){
     var identifier = pluginObject.$id;
     var token = pluginObject.$token;
-
+    
     $TDP.checkFileExists(token, fileNameUser).then(exists => {
       var fileName = exists ? fileNameUser : fileNameDefault;
       
       (exists ? $TDP.readFile(token, fileName, true) : $TDP.readFileRoot(token, fileName)).then(contents => {
         var obj;
-
+        
         try{
           obj = eval("("+contents+")");
         }catch(err){
           if (!(onFailure && onFailure(err))){
             $TD.alert("warning", "Problem loading '"+fileName+"' file for '"+identifier+"' plugin, the JavaScript syntax is invalid: "+err.message);
           }
-
+          
           return;
         }
-
+        
         onSuccess && onSuccess(obj);
       }).catch(err => {
         if (!(onFailure && onFailure(err))){
diff --git a/Resources/Scripts/plugins.browser.js b/Resources/Scripts/plugins.browser.js
index 747a7661..12032ac6 100644
--- a/Resources/Scripts/plugins.browser.js
+++ b/Resources/Scripts/plugins.browser.js
@@ -122,4 +122,6 @@
   window.TDPF_reloadColumns = window.TDGF_reloadColumns;
   window.TDPF_prioritizeNewestEvent = window.TDGF_prioritizeNewestEvent;
   window.TDPF_injectMustache = window.TDGF_injectMustache;
+  
+  #import components/plugins.base.js
 })();
diff --git a/Resources/Scripts/plugins.notification.js b/Resources/Scripts/plugins.notification.js
index 2474b485..f22201a7 100644
--- a/Resources/Scripts/plugins.notification.js
+++ b/Resources/Scripts/plugins.notification.js
@@ -14,3 +14,5 @@ window.TD_PLUGINS = {
     plugin.obj.run();
   }
 };
+
+#import components/plugins.base.js