Index: stable/HeuristicLab.Services.WebApp/3.3/Configs/BundleConfig.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.WebApp/3.3/Configs/BundleConfig.cs	(revision 12428)
+++ stable/HeuristicLab.Services.WebApp/3.3/Configs/BundleConfig.cs	(revision 12563)
@@ -1,10 +1,30 @@
-﻿using System.Collections.Generic;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Collections.Generic;
 using System.IO;
-using System.Linq;
-using System.Web;
 using System.Web.Optimization;
 
 namespace HeuristicLab.Services.WebApp.Configs {
   public class BundleConfig {
+
     public static void RegisterBundles(BundleCollection bundles) {
       bundles.IgnoreList.Clear();
@@ -21,5 +41,6 @@
         "~/WebApp/libs/bootstrap/css/bootstrap-theme.min.css",
         "~/WebApp/libs/font-aweseome/font-aweseome.min.css",
-        "~/WebApp/libs/angularjs/loading-bar/loading-bar.css"
+        "~/WebApp/libs/angularjs/loading-bar/loading-bar.css",
+        "~/WebApp/libs/angularjs/angular-tablesort/tablesort.css"
       ));
 
@@ -50,4 +71,5 @@
         "~/WebApp/libs/angularjs/angular-ui-router.min.js",
         "~/WebApp/libs/angularjs/angular-knob/angular-knob.js",
+        "~/WebApp/libs/angularjs/angular-tablesort/angular-tablesort.js",
         "~/WebApp/libs/angularjs/angular-ui/ui-bootstrap-tpls-0.13.0.min.js",
         "~/WebApp/libs/angularjs/loading-bar/loading-bar.js",
@@ -61,23 +83,30 @@
         "~/WebApp/app.css"
       ));
-      AddOrUpdateWebAppBundle();
+
+      bundles.Add(new ScriptBundle("~/Bundles/WebApp/Main").Include(
+        "~/WebApp/main.js"
+      ));
+
+      bundles.Add(new ScriptBundle("~/Bundles/WebApp/Shared")
+        .IncludeDirectory("~/WebApp/shared/services", "*.js", true)
+        .IncludeDirectory("~/WebApp/shared/directives", "*.js", true)
+        .IncludeDirectory("~/WebApp/shared/filter", "*.js", true)
+        .IncludeDirectory("~/WebApp/shared/menu", "*.js", true)
+      );
     }
 
-    public static void AddOrUpdateWebAppBundle() {
-      var jsBundle = BundleTable.Bundles.GetBundleFor("~/Bundles/WebApp/js");
-      if (jsBundle != null) {
-        BundleTable.Bundles.Remove(jsBundle);
+    public static IEnumerable<string> GetWebAppScripts() {
+      var jsFiles = new List<string> {
+        "WebApp/helper.js",
+        "WebApp/app.js"
+      };
+      PluginManager pluginManager = PluginManager.Instance;
+      foreach (var plugin in pluginManager.Plugins) {
+        if (File.Exists(string.Format(@"{0}\{1}\{1}.js", PluginManager.PluginsDirectory, plugin.Name))) {
+          jsFiles.Add(string.Format("WebApp/plugins/{0}/{0}.js", plugin.Name));
+        }
       }
-      var jsFiles = new List<string> {
-        "~/WebApp/helper.js",
-        "~/WebApp/app.js"
-      };
-      var directories = Directory.GetDirectories(string.Format(@"{0}WebApp\plugins", HttpRuntime.AppDomainAppPath));
-      jsFiles.AddRange(directories.Select(Path.GetFileName).Select(directory => string.Format("~/WebApp/plugins/{0}/{0}.js", directory)));
-      jsFiles.Add("~/WebApp/main.js");
-      jsBundle = new ScriptBundle("~/Bundles/WebApp/js");
-      jsBundle.Include(jsFiles.ToArray());
-      jsBundle.IncludeDirectory("~/WebApp/shared/", "*.js", true);
-      BundleTable.Bundles.Add(jsBundle);
+      jsFiles.Add("WebApp/main.js");
+      return jsFiles;
     }
   }
Index: stable/HeuristicLab.Services.WebApp/3.3/Configs/FilterConfig.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.WebApp/3.3/Configs/FilterConfig.cs	(revision 12428)
+++ stable/HeuristicLab.Services.WebApp/3.3/Configs/FilterConfig.cs	(revision 12563)
@@ -1,3 +1,24 @@
-﻿using System.Web.Mvc;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Web.Mvc;
 
 namespace HeuristicLab.Services.WebApp.Configs {
Index: stable/HeuristicLab.Services.WebApp/3.3/Configs/RouteConfig.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.WebApp/3.3/Configs/RouteConfig.cs	(revision 12428)
+++ stable/HeuristicLab.Services.WebApp/3.3/Configs/RouteConfig.cs	(revision 12563)
@@ -1,3 +1,24 @@
-﻿using System.Web.Mvc;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Web.Mvc;
 using System.Web.Routing;
 
Index: stable/HeuristicLab.Services.WebApp/3.3/Configs/WebApiConfig.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.WebApp/3.3/Configs/WebApiConfig.cs	(revision 12428)
+++ stable/HeuristicLab.Services.WebApp/3.3/Configs/WebApiConfig.cs	(revision 12563)
@@ -1,3 +1,23 @@
-﻿
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
 using System.Net.Http.Formatting;
 using System.Web.Http;
