Index: /branches/PluginInfrastructure Refactoring/ALGLIB/AlglibPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/ALGLIB/AlglibPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/ALGLIB/AlglibPlugin.cs	(revision 2587)
@@ -27,7 +27,7 @@
 
 namespace ALGLIB {
-  [ClassInfo(Name = "ALGLIB")]
-  [PluginFile(Filename = "ALGLIB.dll", Filetype = PluginFileType.Assembly)]
-  [PluginFile(Filename = "ALGLIB License.txt", Filetype = PluginFileType.License)]
+  [Plugin("ALGLIB")]
+  [PluginFile("ALGLIB.dll", PluginFileType.Assembly)]
+  [PluginFile("ALGLIB License.txt", PluginFileType.License)]
   public class AlgLibPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/AvailableOperatorsForm.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/AvailableOperatorsForm.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/AvailableOperatorsForm.cs	(revision 2587)
@@ -63,13 +63,10 @@
       builtinOperatorsTreeView.TreeViewNodeSorter = nodeSorter;
 
-      DiscoveryService discoveryService = new DiscoveryService();
-      PluginInfo[] plugins = discoveryService.Plugins;
-      foreach(PluginInfo plugin in plugins) {
+      foreach(IPluginDescription plugin in ApplicationManager.Manager.Plugins) {
         TreeNode pluginItem = new TreeNode();
         pluginItem.Text = plugin.Name;
         pluginItem.Tag = plugin;
 
-        Type[] operators = discoveryService.GetTypes(typeof(IOperator), plugin);
-        foreach(Type type in operators) {
+        foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IOperator), plugin)) {
           if(!type.IsAbstract) {
             TreeNode operatorItem = new TreeNode();
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendApplication.cs	(revision 2587)
@@ -30,5 +30,5 @@
   /// The HeuristicLab Advanced Optimization Frontend Application.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab 3.2 (dockable)", Description="Next generation heuristic optimization environment.")]
+  [Application("HeuristicLab 3.2 (dockable)", "Next generation heuristic optimization environment.")]
   class HeuristicLabAdvancedOptimizationFrontendApplication : ApplicationBase {
     /// <summary>
@@ -37,5 +37,5 @@
     public override void Run() {
       Form mainForm = new MainForm();
-      PluginManager.ControlManager = (IControlManager)mainForm;
+      ControlManager.RegisterManager((IControlManager)mainForm);
       Application.Run(mainForm);
     }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendPlugin.cs	(revision 2587)
@@ -30,8 +30,8 @@
   /// Plugin class for HeuristicLab.AdvancedOptimizationFrontend plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.AdvancedOptimizationFrontend-3.2")]
-  [PluginFile(Filename = "HeuristicLab.AdvancedOptimizationFrontend-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.MainForm.WindowsForms-3.2")]
+  [Plugin("HeuristicLab.AdvancedOptimizationFrontend-3.2")]
+  [PluginFile("HeuristicLab.AdvancedOptimizationFrontend-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms-3.2")]
   public class HeuristicLabAdvancedOptimizationFrontendPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/MainForm.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/MainForm.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/MainForm.cs	(revision 2587)
@@ -26,4 +26,5 @@
 using System.Drawing;
 using System.Text;
+using System.Linq;
 using System.Threading;
 using System.Windows.Forms;
@@ -68,12 +69,8 @@
       form.Show(dockPanel);
 
-      DiscoveryService discoveryService = new DiscoveryService();
-
       // discover creatable items
-      Type[] creatables = discoveryService.GetTypes(typeof(IEditable));
-      string[] names = new string[creatables.Length];
-      for (int i = 0; i < creatables.Length; i++)
-        names[i] = creatables[i].Name;
-      Array.Sort(names, creatables);
+      var creatables = from x in ApplicationManager.Manager.GetTypes(typeof(IEditable))
+                       orderby x.Name
+                       select x;      
       foreach (Type type in creatables) {
         if (!type.IsAbstract) {
@@ -100,6 +97,6 @@
     /// is neither a view nor an editor.</exception>
     /// <param name="control">The control to display.</param>
-    public void ShowControl(IControl control) {
-      if (InvokeRequired) Invoke((Action<IControl>)ShowControl,control);
+    public void ShowControl(object control) {
+      if (InvokeRequired) Invoke((Action<object>)ShowControl, control);
       else {
         DockContent content;
@@ -132,5 +129,5 @@
         saveAllToolStripButton.Enabled = true;
         EditorForm form = ActiveMdiChild as EditorForm;
-        if (form != null){
+        if (form != null) {
           if (((Control)form.Editor).Enabled) {
             saveToolStripMenuItem.Enabled = true;
@@ -158,9 +155,11 @@
       try {
         task.storable = PersistenceManager.Load(task.filename);
-      } catch(FileNotFoundException fileNotFoundEx) {
+      }
+      catch (FileNotFoundException fileNotFoundEx) {
         MessageBox.Show("Sorry couldn't open file \"" + task.filename + "\".\nThe file or plugin \"" + fileNotFoundEx.FileName + "\" is not available.\nPlease make sure you have all necessary plugins installed.",
           "Reader Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
-      } catch(TypeLoadException typeLoadEx) {
-        MessageBox.Show("Sorry couldn't open file \"" + task.filename + "\".\nThe type \"" + typeLoadEx.TypeName+ "\" is not available.\nPlease make sure that you have the correct version the plugin installed.",
+      }
+      catch (TypeLoadException typeLoadEx) {
+        MessageBox.Show("Sorry couldn't open file \"" + task.filename + "\".\nThe type \"" + typeLoadEx.TypeName + "\" is not available.\nPlease make sure that you have the correct version the plugin installed.",
           "Reader Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
       }
@@ -183,5 +182,5 @@
           editor.Filename = task.filename;
           editor.SaveFinished += new EventHandler(SaveFinished);
-          PluginManager.ControlManager.ShowControl(editor);
+          ControlManager.Manager.ShowControl(editor);
         }
         lock (locker) {
@@ -239,5 +238,5 @@
         } else {
           editor.SaveFinished += new EventHandler(SaveFinished);
-          PluginManager.ControlManager.ShowControl(editor);
+          ControlManager.Manager.ShowControl(editor);
           EnableDisableItems();
         }
@@ -298,5 +297,5 @@
       for (int i = 0; i < MdiChildren.Length; i++) {
         EditorForm form = MdiChildren[i] as EditorForm;
-        if (form!=null && ((Control)form.Editor).Enabled) Save(form);
+        if (form != null && ((Control)form.Editor).Enabled) Save(form);
       }
     }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.ArtificialNeuralNetworks/3.2/HeuristicLabArtificialNeuralNetworksPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.ArtificialNeuralNetworks/3.2/HeuristicLabArtificialNeuralNetworksPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.ArtificialNeuralNetworks/3.2/HeuristicLabArtificialNeuralNetworksPlugin.cs	(revision 2587)
@@ -25,16 +25,16 @@
 
 namespace HeuristicLab.ArtificialNeuralNetworks {
-  [ClassInfo(Name = "HeuristicLab.ArtificialNeuralNetworks-3.2")]
-  [PluginFile(Filename = "HeuristicLab.ArtificialNeuralNetworks-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "ALGLIB")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators.Programmable-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
+  [Plugin("HeuristicLab.ArtificialNeuralNetworks-3.2")]
+  [PluginFile("HeuristicLab.ArtificialNeuralNetworks-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("ALGLIB")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Operators.Programmable-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
   public class HeuristicLabArtificialNeuralNetworks : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Assignment.QAP/3.2/QAPPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Assignment.QAP/3.2/QAPPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Assignment.QAP/3.2/QAPPlugin.cs	(revision 2587)
@@ -26,11 +26,11 @@
 
 namespace HeuristicLab.Assignment.QAP {
-  [ClassInfo(Name = "HeuristicLab.Assignment.QAP-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Assignment.QAP-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Charting-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Permutation-3.2")]
+  [Plugin("HeuristicLab.Assignment.QAP-3.2")]
+  [PluginFile("HeuristicLab.Assignment.QAP-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Charting-3.2")]
+  [PluginDependency("HeuristicLab.Permutation-3.2")]
   public class QAPPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.BackgroundProcessing/3.2/HeuristicLabBackgroundProcessingPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.BackgroundProcessing/3.2/HeuristicLabBackgroundProcessingPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.BackgroundProcessing/3.2/HeuristicLabBackgroundProcessingPlugin.cs	(revision 2587)
@@ -2,6 +2,6 @@
 
 namespace HeuristicLab.BackgroundProcessing {
-  [ClassInfo(Name = "HeuristicLab.BackgroundProcessing-3.2")]
-  [PluginFile(Filename = "HeuristicLab.BackgroundProcessing-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Plugin("HeuristicLab.BackgroundProcessing-3.2")]
+  [PluginFile("HeuristicLab.BackgroundProcessing-3.2.dll", PluginFileType.Assembly)]
   public class HeuristicLabBackgroundProcessingPlugin : PluginBase { }
 }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.BitVector/3.2/HeuristicLabBitVectorPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.BitVector/3.2/HeuristicLabBitVectorPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.BitVector/3.2/HeuristicLabBitVectorPlugin.cs	(revision 2587)
@@ -29,9 +29,9 @@
   /// Plugin class for HeuristicLab.BitVector plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.BitVector-3.2")]
-  [PluginFile(Filename = "HeuristicLab.BitVector-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
+  [Plugin("HeuristicLab.BitVector-3.2")]
+  [PluginFile("HeuristicLab.BitVector-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
   public class HeuristicLabBitVectorPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.CEDMA.Server/3.3/HeuristicLabCedmaServerPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.CEDMA.Server/3.3/HeuristicLabCedmaServerPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.CEDMA.Server/3.3/HeuristicLabCedmaServerPlugin.cs	(revision 2587)
@@ -26,15 +26,15 @@
 
 namespace HeuristicLab.CEDMA.Server {
-  [ClassInfo(Name = "HeuristicLab.CEDMA.Server-3.3")]
-  [PluginFile(Filename = "HeuristicLab.CEDMA.Server-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Grid-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Grid.HiveBridge-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling.Database-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling.Database.SQLServerCompact-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Tracing-3.2")]
+  [Plugin("HeuristicLab.CEDMA.Server-3.3")]
+  [PluginFile("HeuristicLab.CEDMA.Server-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Grid-3.2")]
+  [PluginDependency("HeuristicLab.Grid.HiveBridge-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
+  [PluginDependency("HeuristicLab.Modeling.Database-3.2")]
+  [PluginDependency("HeuristicLab.Modeling.Database.SQLServerCompact-3.2")]
+  [PluginDependency("HeuristicLab.Tracing-3.2")]
   public class HeuristicLabCedmaServerPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.CEDMA.Server/3.3/ServerApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.CEDMA.Server/3.3/ServerApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.CEDMA.Server/3.3/ServerApplication.cs	(revision 2587)
@@ -27,5 +27,5 @@
 
 namespace HeuristicLab.CEDMA.Server {
-  [ClassInfo(Name = "CEDMA", Description = "Cooperative Evolutionary Data Mining.", AutoRestart = true)]
+  [Application("CEDMA", "Cooperative Evolutionary Data Mining.", true)]
   class ServerApplication : ApplicationBase {
     public override void Run() {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.CEDMA.Server/3.3/SimpleDispatcher.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.CEDMA.Server/3.3/SimpleDispatcher.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.CEDMA.Server/3.3/SimpleDispatcher.cs	(revision 2587)
@@ -117,6 +117,6 @@
       finishedAndDispatchedRuns = new Dictionary<string, List<AlgorithmConfiguration>>();
 
-      DiscoveryService ds = new DiscoveryService();
-      defaultAlgorithms = ds.GetInstances<HeuristicLab.Modeling.IAlgorithm>();
+      
+      defaultAlgorithms = ApplicationManager.Manager.GetInstances<HeuristicLab.Modeling.IAlgorithm>().ToArray();
 
       // PopulateFinishedRuns();
@@ -208,6 +208,5 @@
 
     private IOperator SelectRandomFunctionLibrary() {
-      DiscoveryService ds = new DiscoveryService();
-      var injectors = from injector in ds.GetInstances<FunctionLibraryInjectorBase>()
+      var injectors = from injector in ApplicationManager.Manager.GetInstances<FunctionLibraryInjectorBase>()
                       where injector.GetType().GetCustomAttributes(typeof(SymbolicRegressionFunctionLibraryInjectorAttribute), true).Count() > 0
                       select injector;
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Charting.Data/3.2/HeuristicLabChartingDataPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Charting.Data/3.2/HeuristicLabChartingDataPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Charting.Data/3.2/HeuristicLabChartingDataPlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.Charting.Data {
-  [ClassInfo(Name = "HeuristicLab.Charting.Data-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Charting.Data-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Charting-3.2")]
+  [Plugin("HeuristicLab.Charting.Data-3.2")]
+  [PluginFile("HeuristicLab.Charting.Data-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Charting-3.2")]
   public class HeuristicLabChartingDataPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Charting/3.2/HeuristicLabChartingPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Charting/3.2/HeuristicLabChartingPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Charting/3.2/HeuristicLabChartingPlugin.cs	(revision 2587)
@@ -26,6 +26,6 @@
 
 namespace HeuristicLab.Charting {
-  [ClassInfo(Name = "HeuristicLab.Charting-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Charting-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Plugin("HeuristicLab.Charting-3.2")]
+  [PluginFile("HeuristicLab.Charting-3.2.dll", PluginFileType.Assembly)]
   public class HeuristicLabChartingPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Common.Resources/3.2/HeuristicLabCommonResourcesPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Common.Resources/3.2/HeuristicLabCommonResourcesPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Common.Resources/3.2/HeuristicLabCommonResourcesPlugin.cs	(revision 2587)
@@ -26,6 +26,6 @@
 
 namespace HeuristicLab.Communication.Data {
-  [ClassInfo(Name = "HeuristicLab.Common.Resources-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Common.Resources-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Plugin("HeuristicLab.Common.Resources-3.2")]
+  [PluginFile("HeuristicLab.Common.Resources-3.2.dll", PluginFileType.Assembly)]
   public class HeuristicLabCommonResourcesPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Common/3.2/HeuristicLabCommonPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Common/3.2/HeuristicLabCommonPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Common/3.2/HeuristicLabCommonPlugin.cs	(revision 2587)
@@ -29,6 +29,6 @@
   /// Plugin class for HeuristicLab.Common plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Common-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Common-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Plugin("HeuristicLab.Common-3.2")]
+  [PluginFile("HeuristicLab.Common-3.2.dll", PluginFileType.Assembly)]
   public class HeuristicLabCommonPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Communication.Data/3.2/HeuristicLabCommunicationDataPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Communication.Data/3.2/HeuristicLabCommunicationDataPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Communication.Data/3.2/HeuristicLabCommunicationDataPlugin.cs	(revision 2587)
@@ -26,11 +26,11 @@
 
 namespace HeuristicLab.Communication.Data {
-  [ClassInfo(Name = "HeuristicLab.Communication.Data-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Communication.Data-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators.Programmable-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Constraints-3.2")]
+  [Plugin("HeuristicLab.Communication.Data-3.2")]
+  [PluginFile("HeuristicLab.Communication.Data-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators.Programmable-3.2")]
+  [PluginDependency("HeuristicLab.Constraints-3.2")]
   public class HeuristicLabCommunicationDataPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Communication.Operators/3.2/HeuristicLab.Communication.Operators-3.2.csproj
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Communication.Operators/3.2/HeuristicLab.Communication.Operators-3.2.csproj	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Communication.Operators/3.2/HeuristicLab.Communication.Operators-3.2.csproj	(revision 2587)
@@ -108,4 +108,5 @@
   <ItemGroup>
     <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
   </ItemGroup>
   <ItemGroup>
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Communication.Operators/3.2/HeuristicLabCommunicationOperatorsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Communication.Operators/3.2/HeuristicLabCommunicationOperatorsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Communication.Operators/3.2/HeuristicLabCommunicationOperatorsPlugin.cs	(revision 2587)
@@ -26,13 +26,13 @@
 
 namespace HeuristicLab.Communication.Operators {
-  [ClassInfo(Name = "HeuristicLab.Communication.Operators-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Communication.Operators-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators.Programmable-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Communication.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Constraints-3.2")]
+  [Plugin("HeuristicLab.Communication.Operators-3.2")]
+  [PluginFile("HeuristicLab.Communication.Operators-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Operators.Programmable-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Communication.Data-3.2")]
+  [PluginDependency("HeuristicLab.Constraints-3.2")]
   public class HeuristicLabCommunicationOperatorsPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Constraints/3.2/HeuristicLabConstraintsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Constraints/3.2/HeuristicLabConstraintsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Constraints/3.2/HeuristicLabConstraintsPlugin.cs	(revision 2587)
@@ -29,8 +29,8 @@
   /// Plugin class for HeuristicLab.Constraints plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Constraints-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Constraints-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
+  [Plugin("HeuristicLab.Constraints-3.2")]
+  [PluginFile("HeuristicLab.Constraints-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
   public class HeuristicLabConstraintsPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Constraints/3.2/NotConstraintView.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Constraints/3.2/NotConstraintView.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Constraints/3.2/NotConstraintView.cs	(revision 2587)
@@ -58,8 +58,6 @@
     public NotConstraintView() {
       InitializeComponent();
-      DiscoveryService discoveryService = new DiscoveryService();
-      itemTypes = discoveryService.GetTypes(typeof(ConstraintBase));
-      for (int i = 0; i < itemTypes.Length; i++) {
-        subConstraintComboBox.Items.Add(itemTypes[i].Name);
+      foreach (Type itemType in ApplicationManager.Manager.GetTypes(typeof(ConstraintBase))) {
+        subConstraintComboBox.Items.Add(itemType.Name);
       }
       subConstraintComboBox.SelectedIndex = 0;
@@ -130,5 +128,6 @@
         try {
           NotConstraint.SubConstraint = (ConstraintBase)Activator.CreateInstance(itemTypes[subConstraintComboBox.SelectedIndex]);
-        } catch (Exception) {
+        }
+        catch (Exception) {
           NotConstraint.SubConstraint = null;
         }
@@ -144,5 +143,5 @@
     private void UpdateSubConstraintComboBox() {
       subConstraintComboBox.SelectedIndexChanged -= new EventHandler(subConstraintComboBox_SelectedIndexChanged);
-      for (int i = 0 ; i < itemTypes.Length ; i++)
+      for (int i = 0; i < itemTypes.Length; i++)
         if (itemTypes[i].Name.Equals(NotConstraint.SubConstraint.GetType().Name))
           subConstraintComboBox.SelectedIndex = i;
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ChooseItemDialog.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ChooseItemDialog.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ChooseItemDialog.cs	(revision 2587)
@@ -89,11 +89,9 @@
       }
 
-      DiscoveryService discoveryService = new DiscoveryService();
-      foreach (PluginInfo plugin in discoveryService.Plugins) {
+      foreach (IPluginDescription plugin in ApplicationManager.Manager.Plugins) {
         TreeNode pluginNode = new TreeNode(plugin.Name);
         pluginNode.Tag = null;
 
-        Type[] types = discoveryService.GetTypes(itemType, plugin);
-        foreach (Type type in types) {
+        foreach (Type type in ApplicationManager.Manager.GetTypes(itemType, plugin)) {
           if (!type.IsAbstract) {
             TreeNode itemNode = new TreeNode();
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ChooseOperatorDialog.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ChooseOperatorDialog.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ChooseOperatorDialog.cs	(revision 2587)
@@ -70,14 +70,12 @@
       builtinOperatorsTreeView.TreeViewNodeSorter = nodeSorter;
 
-      DiscoveryService discoveryService = new DiscoveryService();
-      PluginInfo[] plugins = discoveryService.Plugins;
-      foreach(PluginInfo plugin in plugins) {
+      foreach (IPluginDescription plugin in ApplicationManager.Manager.Plugins) {
         TreeNode pluginItem = new TreeNode();
         pluginItem.Text = plugin.Name;
         pluginItem.Tag = plugin;
 
-        Type[] operators = discoveryService.GetTypes(typeof(IOperator), plugin);
-        foreach(Type type in operators) {
-          if(!type.IsAbstract) {
+        IEnumerable<Type> operators = ApplicationManager.Manager.GetTypes(typeof(IOperator), plugin);
+        foreach (Type type in operators) {
+          if (!type.IsAbstract) {
             TreeNode operatorItem = new TreeNode();
             operatorItem.Text = type.Name;
@@ -87,5 +85,5 @@
         }
         // add plugin node only if it contains operators
-        if(pluginItem.Nodes.Count > 0) {
+        if (pluginItem.Nodes.Count > 0) {
           builtinOperatorsTreeView.Nodes.Add(pluginItem);
         }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ChooseTypeDialog.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ChooseTypeDialog.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ChooseTypeDialog.cs	(revision 2587)
@@ -90,11 +90,9 @@
       }
 
-      DiscoveryService discoveryService = new DiscoveryService();
-      foreach (PluginInfo plugin in discoveryService.Plugins) {
+      foreach (IPluginDescription plugin in ApplicationManager.Manager.Plugins) {
         TreeNode pluginNode = new TreeNode(plugin.Name);
         pluginNode.Tag = null;
 
-        Type[] types = discoveryService.GetTypes(baseType, plugin);
-        foreach (Type type in types) {
+        foreach (Type type in ApplicationManager.Manager.GetTypes(baseType, plugin)) {
           TreeNode itemNode = new TreeNode();
           itemNode.Text = type.Name;
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/HeuristicLabCorePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/HeuristicLabCorePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/HeuristicLabCorePlugin.cs	(revision 2587)
@@ -30,7 +30,7 @@
   /// Plugin class for HeuristicLab.Core plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Core-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Core-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
+  [Plugin("HeuristicLab.Core-3.2")]
+  [PluginFile("HeuristicLab.Core-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
   public class HeuristicLabCorePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/Interfaces/IView.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/Interfaces/IView.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/Interfaces/IView.cs	(revision 2587)
@@ -29,5 +29,5 @@
   /// An interface for all kinds visual representations of items (objects, operators...).
   /// </summary>
-  public interface IView : IControl {
+  public interface IView {
     /// <summary>
     /// Gets the current item instance.
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/OperatorGraphView.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/OperatorGraphView.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/OperatorGraphView.cs	(revision 2587)
@@ -184,5 +184,5 @@
         IView view = op.CreateView();
         if (view != null)
-          PluginManager.ControlManager.ShowControl(view);
+          ControlManager.Manager.ShowControl(view);
       }
     }
@@ -411,5 +411,5 @@
     private void viewToolStripMenuItem_Click(object sender, EventArgs e) {
       IView view = (IView)((ToolStripMenuItem)sender).Tag;
-      PluginManager.ControlManager.ShowControl(view);
+      ControlManager.Manager.ShowControl(view);
     }
     private void initialOperatorToolStripMenuItem_Click(object sender, EventArgs e) {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/OperatorLibraryEditor.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/OperatorLibraryEditor.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/OperatorLibraryEditor.cs	(revision 2587)
@@ -204,5 +204,5 @@
           IView view = op.CreateView();
           if (view != null)
-            PluginManager.ControlManager.ShowControl(view);
+            ControlManager.Manager.ShowControl(view);
         }
       }
@@ -287,5 +287,5 @@
     private void viewToolStripMenuItem_Click(object sender, EventArgs e) {
       IView view = (IView)viewToolStripMenuItem.Tag;
-      PluginManager.ControlManager.ShowControl(view);
+      ControlManager.Manager.ShowControl(view);
     }
     #endregion
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ScopeView.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ScopeView.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Core/3.2/ScopeView.cs	(revision 2587)
@@ -131,5 +131,5 @@
       if(scopesTreeView.SelectedNode != null && scopesTreeView.SelectedNode.Tag != null) {
         IScope scope = (IScope)scopesTreeView.SelectedNode.Tag;
-        PluginManager.ControlManager.ShowControl(new VariablesScopeView(scope));
+        ControlManager.Manager.ShowControl(new VariablesScopeView(scope));
       }
     }
@@ -199,9 +199,9 @@
     private void variablesToolStripMenuItem_Click(object sender, EventArgs e) {
       IScope scope = (IScope)scopesTreeView.SelectedNode.Tag;
-      PluginManager.ControlManager.ShowControl(new VariablesScopeView(scope));
+      ControlManager.Manager.ShowControl(new VariablesScopeView(scope));
     }
     private void showViewToolStripMenuItem_Click(object sender, EventArgs e) {
       IItem item = (IItem)((ToolStripMenuItem)sender).Tag;
-      PluginManager.ControlManager.ShowControl(item.CreateView());
+      ControlManager.Manager.ShowControl(item.CreateView());
     }
     #endregion
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Data/3.2/HeuristicLabDataPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Data/3.2/HeuristicLabDataPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Data/3.2/HeuristicLabDataPlugin.cs	(revision 2587)
@@ -29,8 +29,8 @@
   /// Plugin class for HeuristicLab.Data plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Data-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Data-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Data-3.2")]
+  [PluginFile("HeuristicLab.Data-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class HeuristicLabDataPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAccess.ADOHelper/3.2/DataAccessADOHelperPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAccess.ADOHelper/3.2/DataAccessADOHelperPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAccess.ADOHelper/3.2/DataAccessADOHelperPlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.DataAccess.ADOHelper {
-  [ClassInfo(Name = "HeuristicLab.DataAccess.ADOHelper-3.2")]
-  [PluginFile(Filename = "HeuristicLab.DataAccess.ADOHelper-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.DataAccess.ADOHelper-3.2")]
+  [PluginFile("HeuristicLab.DataAccess.ADOHelper-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class DataAccessADOHelperPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAccess.ADOHelper/3.2/Session.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAccess.ADOHelper/3.2/Session.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAccess.ADOHelper/3.2/Session.cs	(revision 2587)
@@ -31,7 +31,4 @@
 namespace HeuristicLab.DataAccess.ADOHelper {
   public class Session: ISession {
-    private static DiscoveryService discoveryService =
-      new DiscoveryService();
-
     private SessionFactory factory;
 
@@ -115,5 +112,5 @@
       if (!adapters.ContainsKey(adapterId)) {
         IDataAdapter<ObjT> adapter =
-          discoveryService.GetInstances<IDataAdapter<ObjT>>()[0];
+          ApplicationManager.Manager.GetInstances<IDataAdapter<ObjT>>().First();
 
         adapter.Session = this;
@@ -135,5 +132,5 @@
       if (!adapters.ContainsKey(adapterId)) {
         T adapter =
-          discoveryService.GetInstances<T>()[0];
+          ApplicationManager.Manager.GetInstances<T>().First();
 
         adapter.Session = this;
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAccess/3.2/DataAccessPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAccess/3.2/DataAccessPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAccess/3.2/DataAccessPlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.DataAccess {
-  [ClassInfo(Name = "HeuristicLab.DataAccess-3.2")]
-  [PluginFile(Filename = "HeuristicLab.DataAccess-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.DataAccess-3.2")]
+  [PluginFile("HeuristicLab.DataAccess-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class DataAccessPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAnalysis/3.2/DatasetView.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAnalysis/3.2/DatasetView.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAnalysis/3.2/DatasetView.cs	(revision 2587)
@@ -49,8 +49,6 @@
       : this() {
       this.Dataset = dataset;
-      DiscoveryService discovery = new DiscoveryService();
-      IDatasetManipulator[] manipuators = discovery.GetInstances<IDatasetManipulator>();
       contextMenuStrip.Items.Add(new ToolStripSeparator());
-      foreach (IDatasetManipulator manipulator in manipuators) {
+      foreach (IDatasetManipulator manipulator in ApplicationManager.Manager.GetInstances<IDatasetManipulator>()) {
         contextMenuStrip.Items.Add(new ToolStripButton(manipulator.Action, null, delegate(object source, EventArgs args) {
           manipulator.Execute(Dataset);
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAnalysis/3.2/HeuristicLabDataAnalysisPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAnalysis/3.2/HeuristicLabDataAnalysisPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.DataAnalysis/3.2/HeuristicLabDataAnalysisPlugin.cs	(revision 2587)
@@ -26,9 +26,9 @@
 
 namespace HeuristicLab.DataAnalysis {
-  [ClassInfo(Name = "HeuristicLab.DataAnalysis-3.2")]
-  [PluginFile(Filename = "HeuristicLab.DataAnalysis-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
+  [Plugin("HeuristicLab.DataAnalysis-3.2")]
+  [PluginFile("HeuristicLab.DataAnalysis-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
   public class HeuristicLabDataAnalysisPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.DistributedEngine/3.2/HeuristicLabDistributedEnginePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.DistributedEngine/3.2/HeuristicLabDistributedEnginePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.DistributedEngine/3.2/HeuristicLabDistributedEnginePlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.DistributedEngine {
-  [ClassInfo(Name = "HeuristicLab.DistributedEngine-3.2")]
-  [PluginFile(Filename = "HeuristicLab.DistributedEngine-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Grid-3.2")]
+  [Plugin("HeuristicLab.DistributedEngine-3.2")]
+  [PluginFile("HeuristicLab.DistributedEngine-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Grid-3.2")]
   public class HeuristicLabDistributedEnginePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.ES/3.2/ESEditor.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.ES/3.2/ESEditor.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.ES/3.2/ESEditor.cs	(revision 2587)
@@ -199,25 +199,25 @@
       IView view = ES.ProblemInjector.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewSolutionGenerationButton_Click(object sender, EventArgs e) {
       IView view = ES.SolutionGenerator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewMutationButton_Click(object sender, EventArgs e) {
       IView view = ES.Mutator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewEvaluationButton_Click(object sender, EventArgs e) {
       IView view = ES.Evaluator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewRecombinationButton_Click(object sender, EventArgs e) {
       IView view = ES.Recombinator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void setProblemInitializationButton_Click(object sender, EventArgs e) {
@@ -238,5 +238,5 @@
       IEngine clone = (IEngine)ES.Engine.Clone();
       IEditor editor = ((IEditable)clone).CreateEditor();
-      PluginManager.ControlManager.ShowControl(editor);
+      ControlManager.Manager.ShowControl(editor);
     }
     #endregion
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.ES/3.2/HeuristicLabESPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.ES/3.2/HeuristicLabESPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.ES/3.2/HeuristicLabESPlugin.cs	(revision 2587)
@@ -29,15 +29,15 @@
   /// Plugin class for HeuristicLab.ES plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.ES-3.2")]
-  [PluginFile(Filename = "HeuristicLab.ES-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Logging-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
-  [Dependency(Dependency = "HeuristicLab.RealVector-3.2")]
+  [Plugin("HeuristicLab.ES-3.2")]
+  [PluginFile("HeuristicLab.ES-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
+  [PluginDependency("HeuristicLab.RealVector-3.2")]
   public class HeuristicLabESPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Evolutionary/3.2/HeuristicLabEvolutionaryPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Evolutionary/3.2/HeuristicLabEvolutionaryPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Evolutionary/3.2/HeuristicLabEvolutionaryPlugin.cs	(revision 2587)
@@ -29,9 +29,9 @@
   /// Plugin class for HeuristicLab.Evolutionary plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Evolutionary-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Evolutionary-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Plugin("HeuristicLab.Evolutionary-3.2")]
+  [PluginFile("HeuristicLab.Evolutionary-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
   public class HeuristicLabEvolutionaryPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.FixedOperators/3.2/HeuristicLabFixedOperatorsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.FixedOperators/3.2/HeuristicLabFixedOperatorsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.FixedOperators/3.2/HeuristicLabFixedOperatorsPlugin.cs	(revision 2587)
@@ -29,14 +29,14 @@
   /// Plugin class for HeuristicLab.FixedOperators plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.FixedOperators-3.2")]
-  [PluginFile(Filename = "HeuristicLab.FixedOperators-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Logging-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
+  [Plugin("HeuristicLab.FixedOperators-3.2")]
+  [PluginFile("HeuristicLab.FixedOperators-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
   public class HeuristicLabFixedOperatorsPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Algorithms/3.2/HeuristicLabGpAlgorithmsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Algorithms/3.2/HeuristicLabGpAlgorithmsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Algorithms/3.2/HeuristicLabGpAlgorithmsPlugin.cs	(revision 2587)
@@ -26,19 +26,19 @@
 
 namespace HeuristicLab.GP.Algorithms {
-  [ClassInfo(Name = "HeuristicLab.GP.Algorithms-3.2")]
-  [PluginFile(Filename = "HeuristicLab.GP.Algorithms-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Operators-3.3")]
-  [Dependency(Dependency = "HeuristicLab.Logging-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection.OffspringSelection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
+  [Plugin("HeuristicLab.GP.Algorithms-3.2")]
+  [PluginFile("HeuristicLab.GP.Algorithms-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
+  [PluginDependency("HeuristicLab.GP-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.GP.Operators-3.3")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.Selection.OffspringSelection-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
   public class HeuristicLabGpAlgorithmsPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Algorithms/3.2/OffSpringSelectionGpEditor.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Algorithms/3.2/OffSpringSelectionGpEditor.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Algorithms/3.2/OffSpringSelectionGpEditor.cs	(revision 2587)
@@ -82,5 +82,5 @@
       IView view = OffspringSelectionGP.ProblemInjector.CreateView();
       if(view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
 
@@ -107,5 +107,5 @@
       IEngine clone = (IEngine)OffspringSelectionGP.Engine.Clone();
       IEditor editor = ((IEditable)clone).CreateEditor();
-      PluginManager.ControlManager.ShowControl(editor);
+      ControlManager.Manager.ShowControl(editor);
     }
     #endregion
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Algorithms/3.2/StandardGpEditor.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Algorithms/3.2/StandardGpEditor.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Algorithms/3.2/StandardGpEditor.cs	(revision 2587)
@@ -80,5 +80,5 @@
       IView view = StandardGP.ProblemInjector.CreateView();
       if(view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
 
@@ -105,5 +105,5 @@
       IEngine clone = (IEngine)StandardGP.Engine.Clone();
       IEditor editor = ((IEditable)clone).CreateEditor();
-      PluginManager.ControlManager.ShowControl(editor);
+      ControlManager.Manager.ShowControl(editor);
     }
     #endregion
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Boolean/3.3/HeuristicLabGPBooleanPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Boolean/3.3/HeuristicLabGPBooleanPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Boolean/3.3/HeuristicLabGPBooleanPlugin.cs	(revision 2587)
@@ -26,14 +26,14 @@
 
 namespace HeuristicLab.GP.Boolean {
-  [ClassInfo(Name = "HeuristicLab.GP.Boolean-3.3")]
-  [PluginFile(Filename = "HeuristicLab.GP.Boolean-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
+  [Plugin("HeuristicLab.GP.Boolean-3.3")]
+  [PluginFile("HeuristicLab.GP.Boolean-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.GP-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
   public class HeuristicLabGPBooleanPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Interfaces/3.3/HeuristicLabGPInterfacesPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Interfaces/3.3/HeuristicLabGPInterfacesPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Interfaces/3.3/HeuristicLabGPInterfacesPlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.GP.Interfaces {
-  [ClassInfo(Name = "HeuristicLab.GP.Interfaces-3.3")]
-  [PluginFile(Filename = "HeuristicLab.GP.Interfaces-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginFile("HeuristicLab.GP.Interfaces-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class HeuristicLabGPInterfacesPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Operators/3.3/HeuristicLabGPOperatorsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Operators/3.3/HeuristicLabGPOperatorsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.Operators/3.3/HeuristicLabGPOperatorsPlugin.cs	(revision 2587)
@@ -26,14 +26,14 @@
 
 namespace HeuristicLab.GP.Operators {
-  [ClassInfo(Name = "HeuristicLab.GP.Operators-3.3")]
-  [PluginFile(Filename = "HeuristicLab.GP.Operators-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
+  [Plugin("HeuristicLab.GP.Operators-3.3")]
+  [PluginFile("HeuristicLab.GP.Operators-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
+  [PluginDependency("HeuristicLab.GP-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
   public class HeuristicLabGPOperatorsPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.SantaFe/3.3/HeuristicLabGPSantaFePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.SantaFe/3.3/HeuristicLabGPSantaFePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.SantaFe/3.3/HeuristicLabGPSantaFePlugin.cs	(revision 2587)
@@ -26,12 +26,12 @@
 
 namespace HeuristicLab.GP.SantaFe {
-  [ClassInfo(Name = "HeuristicLab.GP.SantaFe-3.3")]
-  [PluginFile(Filename = "HeuristicLab.GP.SantaFe-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
+  [Plugin("HeuristicLab.GP.SantaFe-3.3")]
+  [PluginFile("HeuristicLab.GP.SantaFe-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.GP-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
   public class HeuristicLabGPSantaFePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification.Classification/3.3/HeuristicLabGPClassificationPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification.Classification/3.3/HeuristicLabGPClassificationPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification.Classification/3.3/HeuristicLabGPClassificationPlugin.cs	(revision 2587)
@@ -26,16 +26,16 @@
 
 namespace HeuristicLab.GP.StructureIdentification.Classification {
-  [ClassInfo(Name = "HeuristicLab.GP.StructureIdentification.Classification-3.3")]
-  [PluginFile(Filename = "HeuristicLab.GP.StructureIdentification.Classification-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification-3.3")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
+  [Plugin("HeuristicLab.GP.StructureIdentification.Classification-3.3")]
+  [PluginFile("HeuristicLab.GP.StructureIdentification.Classification-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.GP-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.GP.StructureIdentification-3.3")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
   public class HeuristicLabGPClassificationPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification.ConditionalEvaluation/3.3/HeuristicLabGPConditionalEvaluationPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification.ConditionalEvaluation/3.3/HeuristicLabGPConditionalEvaluationPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification.ConditionalEvaluation/3.3/HeuristicLabGPConditionalEvaluationPlugin.cs	(revision 2587)
@@ -26,13 +26,13 @@
 
 namespace HeuristicLab.GP.StructureIdentification.ConditionalEvaluation {
-  [ClassInfo(Name = "HeuristicLab.GP.StructureIdentification.ConditionalEvaluation-3.3")]
-  [PluginFile(Filename = "HeuristicLab.GP.StructureIdentification.ConditionalEvaluation-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification-3.3")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
+  [Plugin("HeuristicLab.GP.StructureIdentification.ConditionalEvaluation-3.3")]
+  [PluginFile("HeuristicLab.GP.StructureIdentification.ConditionalEvaluation-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.GP-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.GP.StructureIdentification-3.3")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
   public class HeuristicLabGPConditionalEvaluationPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/HeuristicLabGPTimeSeriesPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/HeuristicLabGPTimeSeriesPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/HeuristicLabGPTimeSeriesPlugin.cs	(revision 2587)
@@ -26,16 +26,16 @@
 
 namespace HeuristicLab.GP.StructureIdentification.TimeSeries {
-  [ClassInfo(Name = "HeuristicLab.GP.StructureIdentification.TimeSeries-3.3")]
-  [PluginFile(Filename = "HeuristicLab.GP.StructureIdentification.TimeSeries-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Constraints-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification-3.3")]
-  [Dependency(Dependency = "HeuristicLab.Logging-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Plugin("HeuristicLab.GP.StructureIdentification.TimeSeries-3.3")]
+  [PluginFile("HeuristicLab.GP.StructureIdentification.TimeSeries-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Constraints-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.GP-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.GP.StructureIdentification-3.3")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
   public class HeuristicLabGPTimeSeriesPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLabGPStructureIdentificationPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLabGPStructureIdentificationPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLabGPStructureIdentificationPlugin.cs	(revision 2587)
@@ -23,22 +23,22 @@
 
 namespace HeuristicLab.GP.StructureIdentification {
-  [ClassInfo(Name = "HeuristicLab.GP.StructureIdentification-3.3")]
-  [PluginFile(Filename = "HeuristicLab.GP.StructureIdentification-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Operators-3.3")]
-  [Dependency(Dependency = "HeuristicLab.Logging-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators.Programmable-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection.OffspringSelection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
+  [Plugin("HeuristicLab.GP.StructureIdentification-3.3")]
+  [PluginFile("HeuristicLab.GP.StructureIdentification-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
+  [PluginDependency("HeuristicLab.GP-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.GP.Operators-3.3")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Operators.Programmable-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.Selection.OffspringSelection-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
   public class HeuristicLabGPStructureIdentificationPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP/3.3/FunctionTreeView.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP/3.3/FunctionTreeView.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP/3.3/FunctionTreeView.cs	(revision 2587)
@@ -47,7 +47,5 @@
       rootNode.Tag = functionTree;
       treeNodeContextMenu.MenuItems.Clear();
-      DiscoveryService discoveryService = new DiscoveryService();
-      IFunctionTreeSerializer[] exporters = discoveryService.GetInstances<IFunctionTreeSerializer>();
-      foreach (IFunctionTreeSerializer exporter in exporters) {
+      foreach (IFunctionTreeSerializer exporter in ApplicationManager.Manager.GetInstances<IFunctionTreeSerializer>()) {
         string result;
         // register a menu item for the exporter
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.GP/3.3/HeuristicLabGPPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.GP/3.3/HeuristicLabGPPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.GP/3.3/HeuristicLabGPPlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.GP {
-  [ClassInfo(Name = "HeuristicLab.GP-3.3")]
-  [PluginFile(Filename = "HeuristicLab.GP-3.3.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
+  [Plugin("HeuristicLab.GP-3.3")]
+  [PluginFile("HeuristicLab.GP-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
   public class HeuristicLabGPPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid.HiveBridge/3.2/HeuristicLabGridHiveBridgePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid.HiveBridge/3.2/HeuristicLabGridHiveBridgePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid.HiveBridge/3.2/HeuristicLabGridHiveBridgePlugin.cs	(revision 2587)
@@ -26,12 +26,12 @@
 
 namespace HeuristicLab.Grid.HiveBridge {
-  [ClassInfo(Name = "HeuristicLab.Grid.HiveBridge-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Grid.HiveBridge-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Grid-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.JobBase-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Engine-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Tracing-3.2")]
+  [Plugin("HeuristicLab.Grid.HiveBridge-3.2")]
+  [PluginFile("HeuristicLab.Grid.HiveBridge-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Grid-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Hive.JobBase-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Engine-3.2")]
+  [PluginDependency("HeuristicLab.Tracing-3.2")]
   public class HeuristicLabGridPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid.HiveBridge/3.2/HiveGridServerWrapper.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid.HiveBridge/3.2/HiveGridServerWrapper.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid.HiveBridge/3.2/HiveGridServerWrapper.cs	(revision 2587)
@@ -131,9 +131,8 @@
       stream.Close();
 
-      DiscoveryService service = new DiscoveryService();
-      List<PluginInfo> plugins = new List<PluginInfo>();
+      List<IPluginDescription> plugins = new List<IPluginDescription>();
 
       foreach (IStorable storeable in dictionary.Values) {
-        PluginInfo pluginInfo = service.GetDeclaringPlugin(storeable.GetType());
+        IPluginDescription pluginInfo = ApplicationManager.Manager.GetDeclaringPlugin(storeable.GetType());
         if (!plugins.Contains(pluginInfo)) {
           plugins.Add(pluginInfo);
@@ -144,5 +143,5 @@
       }
 
-      foreach (PluginInfo uniquePlugin in plugins) {
+      foreach (IPluginDescription uniquePlugin in plugins) {
         HivePluginInfo pluginInfo =
           new HivePluginInfo();
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/GridClient.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/GridClient.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/GridClient.cs	(revision 2587)
@@ -134,5 +134,5 @@
         if(gotEngine && !stopped) {
           executing = true;
-          AppDomain engineDomain = PluginManager.Manager.CreateAndInitAppDomain("Engine domain");
+          AppDomain engineDomain = HeuristicLab.PluginInfrastructure.Sandboxing.SandboxManager.CreateAndInitSandbox("Engine domain");
           Type engineRunnerType = typeof(EngineRunner);
           
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/GridClientApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/GridClientApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/GridClientApplication.cs	(revision 2587)
@@ -27,5 +27,5 @@
 
 namespace HeuristicLab.Grid {
-  [ClassInfo(Name = "Grid Client", Description="Client application for the distributed engine grid.", AutoRestart = true)]
+  [Application("Grid Client", "Client application for the distributed engine grid.", true)]
   class GridClientApplication : ApplicationBase {
     public override void Run() {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/GridServerApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/GridServerApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/GridServerApplication.cs	(revision 2587)
@@ -27,5 +27,5 @@
 
 namespace HeuristicLab.Grid {
-  [ClassInfo(Name = "Grid Server", Description = "Server application for the distributed engine grid.", AutoRestart=true)]
+  [Application("Grid Server", "Server application for the distributed engine grid.", true)]
   class GridServerApplication : ApplicationBase {
     public override void Run() {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/HeuristicLabGridPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/HeuristicLabGridPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Grid/3.2/HeuristicLabGridPlugin.cs	(revision 2587)
@@ -27,8 +27,8 @@
 
 namespace HeuristicLab.Grid {
-  [ClassInfo(Name = "HeuristicLab.Grid-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Grid-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Tracing-3.2")]
+  [Plugin("HeuristicLab.Grid-3.2")]
+  [PluginFile("HeuristicLab.Grid-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Tracing-3.2")]
   public class HeuristicLabGridPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Common/3.2/CommonPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Common/3.2/CommonPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Common/3.2/CommonPlugin.cs	(revision 2587)
@@ -27,9 +27,9 @@
 
 namespace HeuristicLab.Hive.Client.Common {
-  [ClassInfo(Name = "HeuristicLab.Hive.Client.Common-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Client.Common-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Tracing-3.2")]
+  [Plugin("HeuristicLab.Hive.Client.Common-3.2")]
+  [PluginFile("HeuristicLab.Hive.Client.Common-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Tracing-3.2")]
   public class CommonPlugin: PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Communication/3.2/CommunicationsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Communication/3.2/CommunicationsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Communication/3.2/CommunicationsPlugin.cs	(revision 2587)
@@ -29,10 +29,10 @@
 namespace HeuristicLab.Hive.Client.Communication {
   
-  [ClassInfo(Name = "HeuristicLab.Hive.Client.Communication-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Client.Communication-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAccess-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Client.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
+  [Plugin("HeuristicLab.Hive.Client.Communication-3.2")]
+  [PluginFile("HeuristicLab.Hive.Client.Communication-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.DataAccess-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Client.Common-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
   public class CommunicationsPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsoleApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsoleApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsoleApplication.cs	(revision 2587)
@@ -27,5 +27,5 @@
 
 namespace HeuristicLab.Hive.Client.Console {
-  [ClassInfo(Name = "Hive Client Console", Description = "Console Application for the Hive Client.", AutoRestart = false)]
+  [Application("Hive Client Console", "Console Application for the Hive Client.", false)]
   class HiveClientConsoleApplication : ApplicationBase {
     public override void Run() {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsolePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsolePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsolePlugin.cs	(revision 2587)
@@ -27,8 +27,8 @@
 
 namespace HeuristicLab.Grid {
-  [ClassInfo(Name = "HeuristicLab.Hive.Client.Console-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Client.Console-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
+  [Plugin("HeuristicLab.Hive.Client.Console-3.2")]
+  [PluginFile("HeuristicLab.Hive.Client.Console-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
   public class HeuristicLabHiveClientConsolePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/ClientConsoleService/ClientConsoleServer.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/ClientConsoleService/ClientConsoleServer.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/ClientConsoleService/ClientConsoleServer.cs	(revision 2587)
@@ -12,6 +12,4 @@
   public class ClientConsoleServer {
 
-    DiscoveryService discService = new DiscoveryService();
-   
     private bool AddMexEndpoint(ServiceHost serviceHost) {
       if (serviceHost != null) {
@@ -29,10 +27,10 @@
     
     public ServiceHost StartClientConsoleServer(Uri uriTcp) {
-      IClientConsoleCommunicator[] clientConsoleServerInstances =
-        discService.GetInstances<IClientConsoleCommunicator>();
+      IEnumerable<IClientConsoleCommunicator> clientConsoleServerInstances =
+        ApplicationManager.Manager.GetInstances<IClientConsoleCommunicator>();
 
-      if (clientConsoleServerInstances.Length > 0) {
+      if (clientConsoleServerInstances.Count() > 0) {
         ServiceHost serviceHost =
-                new ServiceHost(clientConsoleServerInstances[0].GetType(),
+                new ServiceHost(clientConsoleServerInstances.First().GetType(),
                   uriTcp);
 
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/Core.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/Core.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/Core.cs	(revision 2587)
@@ -49,5 +49,5 @@
   /// The core component of the Hive Client
   /// </summary>
-  public class Core: MarshalByRefObject {       
+  public class Core : MarshalByRefObject {
     public static bool abortRequested { get; set; }
     private bool currentlyFetching = false;
@@ -59,11 +59,10 @@
     private WcfService wcfService;
     private Heartbeat beat;
-    
+
     /// <summary>
     /// Main Method for the client
     /// </summary>
-    public void Start() {      
+    public void Start() {
       abortRequested = false;
-      PluginManager.Manager.Initialize();
       Logging.Instance.Info(this.ToString(), "Hive Client started");
       ClientConsoleServer server = new ClientConsoleServer();
@@ -74,5 +73,5 @@
 
 
-      
+
       //Register all Wcf Service references
       wcfService = WcfService.Instance;
@@ -85,5 +84,5 @@
       wcfService.Connected += new EventHandler(wcfService_Connected);
       //Recover Server IP and Port from the Settings Framework
-      ConnectionContainer cc = ConfigManager.Instance.GetServerIPAndPort();     
+      ConnectionContainer cc = ConfigManager.Instance.GetServerIPAndPort();
       if (cc.IPAdress != String.Empty && cc.Port != 0)
         wcfService.SetIPAndPort(cc.IPAdress, cc.Port);
@@ -91,11 +90,11 @@
       if (UptimeManager.Instance.isOnline())
         wcfService.Connect();
-         
+
       //Initialize the heartbeat
       beat = new Heartbeat { Interval = 10000 };
-      beat.StartHeartbeat();     
+      beat.StartHeartbeat();
 
       MessageQueue queue = MessageQueue.GetInstance();
-      
+
       //Main processing loop     
       //Todo: own thread for message handling
@@ -108,5 +107,5 @@
       }
       Console.WriteLine("ended!");
-    }    
+    }
 
     /// <summary>
@@ -114,9 +113,9 @@
     /// </summary>
     /// <param name="container">The Container, containing the message</param>
-    private void DetermineAction(MessageContainer container) {           
+    private void DetermineAction(MessageContainer container) {
       switch (container.Message) {
         //Server requests to abort a job
         case MessageContainer.MessageType.AbortJob:
-          if(engines.ContainsKey(container.JobId))
+          if (engines.ContainsKey(container.JobId))
             engines[container.JobId].Abort();
           else
@@ -126,10 +125,10 @@
 
 
-        case MessageContainer.MessageType.JobAborted:          
-        //todo: thread this
+        case MessageContainer.MessageType.JobAborted:
+          //todo: thread this
           Debug.WriteLine("Job aborted, he's dead");
-          lock (engines) {            
+          lock (engines) {
             Guid jobId = new Guid(container.JobId.ToString());
-            if(engines.ContainsKey(jobId)) {
+            if (engines.ContainsKey(jobId)) {
               appDomains[jobId].UnhandledException -= new UnhandledExceptionEventHandler(appDomain_UnhandledException);
               AppDomain.Unload(appDomains[jobId]);
@@ -142,21 +141,21 @@
           }
           break;
-        
-        
+
+
         //Request a Snapshot from the Execution Engine
         case MessageContainer.MessageType.RequestSnapshot:
-          if (engines.ContainsKey(container.JobId)) 
+          if (engines.ContainsKey(container.JobId))
             engines[container.JobId].RequestSnapshot();
           else
             Logging.Instance.Error(this.ToString(), "RequestSnapshot: Engine doesn't exist");
           break;
-        
-        
+
+
         //Snapshot is ready and can be sent back to the Server
         case MessageContainer.MessageType.SnapshotReady:
-          ThreadPool.QueueUserWorkItem(new WaitCallback(GetSnapshot), container.JobId);          
-          break;
-        
-        
+          ThreadPool.QueueUserWorkItem(new WaitCallback(GetSnapshot), container.JobId);
+          break;
+
+
         //Pull a Job from the Server
         case MessageContainer.MessageType.FetchJob:
@@ -164,13 +163,13 @@
             wcfService.SendJobAsync(ConfigManager.Instance.GetClientInfo().Id);
             currentlyFetching = true;
-          }          
-          break;          
-        
-        
+          }
+          break;
+
+
         //A Job has finished and can be sent back to the server
         case MessageContainer.MessageType.FinishedJob:
-          ThreadPool.QueueUserWorkItem(new WaitCallback(GetFinishedJob), container.JobId);          
-          break;     
-        
+          ThreadPool.QueueUserWorkItem(new WaitCallback(GetFinishedJob), container.JobId);
+          break;
+
 
         //When the timeslice is up
@@ -186,5 +185,5 @@
               kvp.Value.RequestSnapshot();
             }
-            
+
           } else {
             //Disconnect afterwards
@@ -192,6 +191,6 @@
           }
           break;
-        
-        
+
+
         //Hard shutdown of the client
         case MessageContainer.MessageType.Shutdown:
@@ -211,5 +210,5 @@
     //Asynchronous Threads for interaction with the Execution Engine
     #region Async Threads for the EE
-    
+
     /// <summary>
     /// serializes the finished job and submits it to the server. If, at the time, a network connection is unavailable, the Job gets stored on the disk. 
@@ -218,5 +217,5 @@
     /// <param name="jobId"></param>
     private void GetFinishedJob(object jobId) {
-      Guid jId = (Guid)jobId;      
+      Guid jId = (Guid)jobId;
       try {
         if (!engines.ContainsKey(jId)) {
@@ -224,5 +223,5 @@
           return;
         }
-        
+
         byte[] sJob = engines[jId].GetFinishedJob();
 
@@ -261,9 +260,9 @@
       //Uptime Limit reached, now is a good time to destroy this jobs.
       if (!UptimeManager.Instance.isOnline()) {
-        KillAppDomain(jId);        
+        KillAppDomain(jId);
         //Still anything running?
         if (engines.Count == 0)
           WcfService.Instance.Disconnect();
-      
+
       } else {
         engines[jId].StartOnlyJob();
@@ -283,8 +282,8 @@
       if (e.Result.Success) {
         currentlyFetching = false;
-        Logging.Instance.Info(this.ToString(), "Login completed to Hive Server @ " + DateTime.Now);        
+        Logging.Instance.Info(this.ToString(), "Login completed to Hive Server @ " + DateTime.Now);
       } else
         Logging.Instance.Error(this.ToString(), e.Result.StatusMessage);
-    }    
+    }
 
     /// <summary>
@@ -294,11 +293,10 @@
     /// <param name="e"></param>
     void wcfService_SendJobCompleted(object sender, SendJobCompletedEventArgs e) {
-      if (e.Result.StatusMessage != ApplicationConstants.RESPONSE_COMMUNICATOR_NO_JOBS_LEFT) {        
-        bool sandboxed = false;
+      if (e.Result.StatusMessage != ApplicationConstants.RESPONSE_COMMUNICATOR_NO_JOBS_LEFT) {
         List<byte[]> files = new List<byte[]>();
         foreach (CachedHivePluginInfo plugininfo in PluginCache.Instance.GetPlugins(e.Result.Job.PluginsNeeded))
           files.AddRange(plugininfo.PluginFiles);
 
-        AppDomain appDomain = PluginManager.Manager.CreateAndInitAppDomainWithSandbox(e.Result.Job.Id.ToString(), sandboxed, null, files);
+        AppDomain appDomain = HeuristicLab.PluginInfrastructure.Sandboxing.SandboxManager.CreateAndInitSandbox(e.Result.Job.Id.ToString(), files);
         appDomain.UnhandledException += new UnhandledExceptionEventHandler(appDomain_UnhandledException);
         lock (engines) {
@@ -309,5 +307,5 @@
             Executor engine = (Executor)appDomain.CreateInstanceAndUnwrap(typeof(Executor).Assembly.GetName().Name, typeof(Executor).FullName);
             engine.JobId = e.Result.Job.Id;
-            engine.Queue = MessageQueue.GetInstance();            
+            engine.Queue = MessageQueue.GetInstance();
             engine.Start(e.Data);
             engines.Add(e.Result.Job.Id, engine);
@@ -317,5 +315,5 @@
             Debug.WriteLine("Increment FetchedJobs to:" + ClientStatusInfo.JobsFetched);
           }
-        }        
+        }
       }
       currentlyFetching = false;
@@ -329,8 +327,8 @@
     void wcfService_StoreFinishedJobResultCompleted(object sender, StoreFinishedJobResultCompletedEventArgs e) {
       KillAppDomain(e.Result.JobId);
-      if (e.Result.Success) {            
+      if (e.Result.Success) {
         ClientStatusInfo.JobsProcessed++;
-        Debug.WriteLine("ProcessedJobs to:" + ClientStatusInfo.JobsProcessed);                
-      } else {        
+        Debug.WriteLine("ProcessedJobs to:" + ClientStatusInfo.JobsProcessed);
+      } else {
         Logging.Instance.Error(this.ToString(), "Sending of job " + e.Result.JobId + " failed, job has been wasted. Message: " + e.Result.StatusMessage);
       }
@@ -371,5 +369,5 @@
     /// <param name="e"></param>
     void wcfService_Connected(object sender, EventArgs e) {
-      wcfService.LoginSync(ConfigManager.Instance.GetClientInfo());      
+      wcfService.LoginSync(ConfigManager.Instance.GetClientInfo());
       JobStorageManager.CheckAndSubmitJobsFromDisc();
       currentlyFetching = false;
@@ -378,5 +376,5 @@
     //this is a little bit tricky - 
     void wcfService_ConnectionRestored(object sender, EventArgs e) {
-      Logging.Instance.Info(this.ToString(), "Reconnected to old server - checking currently running appdomains");                 
+      Logging.Instance.Info(this.ToString(), "Reconnected to old server - checking currently running appdomains");
 
       foreach (KeyValuePair<Guid, Executor> execKVP in engines) {
@@ -396,8 +394,8 @@
 
     void appDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
-      Logging.Instance.Error(this.ToString(), "Exception in AppDomain: " + e.ExceptionObject.ToString());      
-    }
-
-    internal Dictionary<Guid, Job> GetJobs() {           
+      Logging.Instance.Error(this.ToString(), "Exception in AppDomain: " + e.ExceptionObject.ToString());
+    }
+
+    internal Dictionary<Guid, Job> GetJobs() {
       return jobs;
     }
@@ -415,5 +413,5 @@
           engines.Remove(id);
           jobs.Remove(id);
-        }        
+        }
         catch (Exception ex) {
           Logging.Instance.Error(this.ToString(), "Exception when unloading the appdomain: ", ex);
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/CoreApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/CoreApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/CoreApplication.cs	(revision 2587)
@@ -31,6 +31,6 @@
 
 namespace HeuristicLab.Hive.Client.Core {
-  [ClassInfo(Name = "Hive Client", Description = "Hive Client Core baseclass", AutoRestart = false)]
-  public class CoreApplication: ApplicationBase {
+  [Application("Hive Client", "Hive Client Core baseclass", false)]
+  public class CoreApplication : ApplicationBase {
     public override void Run() {
       Core core = new Core();
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/CorePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/CorePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.Core/3.2/CorePlugin.cs	(revision 2587)
@@ -27,13 +27,13 @@
 
 namespace HeuristicLab.Hive.Client.Core {
-  [ClassInfo(Name = "HeuristicLab.Hive.Client.Core-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Client.Core-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAccess-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Client.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Client.Communication-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Client.ExecutionEngine-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.JobBase-3.2")]
+  [Plugin("HeuristicLab.Hive.Client.Core-3.2")]
+  [PluginFile("HeuristicLab.Hive.Client.Core-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.DataAccess-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Client.Common-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Client.Communication-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Client.ExecutionEngine-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Hive.JobBase-3.2")]
   public class CorePlugin: PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.ExecutionEngine/3.2/ExecutionEnginePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.ExecutionEngine/3.2/ExecutionEnginePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Client.ExecutionEngine/3.2/ExecutionEnginePlugin.cs	(revision 2587)
@@ -27,11 +27,11 @@
 
 namespace HeuristicLab.Hive.Client.ExecutionEngine {
-  [ClassInfo(Name = "HeuristicLab.Hive.Client.ExecutionEngine-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Client.ExecutionEngine-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Client.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Client.Communication-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.JobBase-3.2")] 
+  [Plugin("HeuristicLab.Hive.Client.ExecutionEngine-3.2")]
+  [PluginFile("HeuristicLab.Hive.Client.ExecutionEngine-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Client.Common-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Client.Communication-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Hive.JobBase-3.2")] 
   public class ExecutionEnginePlugin: PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Contracts/3.2/HiveContractPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Contracts/3.2/HiveContractPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Contracts/3.2/HiveContractPlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.Hive.Server {
-  [ClassInfo(Name = "HeuristicLab.Hive.Contracts-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Contracts-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAccess-3.2")]
+  [Plugin("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginFile("HeuristicLab.Hive.Contracts-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.DataAccess-3.2")]
   public class HiveServerContracts : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Engine/3.2/HeuristicLabHiveEnginePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Engine/3.2/HeuristicLabHiveEnginePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Engine/3.2/HeuristicLabHiveEnginePlugin.cs	(revision 2587)
@@ -29,14 +29,14 @@
   /// Plugin class for HeuristicLab.Hive.Engine plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Hive.Engine-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Engine-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAccess-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.JobBase-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Tracing-3.2")]
+  [Plugin("HeuristicLab.Hive.Engine-3.2")]
+  [PluginFile("HeuristicLab.Hive.Engine-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAccess-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
+  [PluginDependency("HeuristicLab.Hive.JobBase-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
+  [PluginDependency("HeuristicLab.Tracing-3.2")]
   public class HeuristicLabHiveEnginePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Engine/3.2/HiveEngine.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Engine/3.2/HiveEngine.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Engine/3.2/HiveEngine.cs	(revision 2587)
@@ -125,5 +125,5 @@
 
         job = restoredJob;
-        PluginManager.ControlManager.ShowControl(job.Engine.CreateView());
+        ControlManager.Manager.ShowControl(job.Engine.CreateView());
         OnChanged();
         OnFinished();
@@ -168,5 +168,5 @@
         HiveLogger.Debug("HiveEngine: Results-polling - Got result!");
         job = (Job)PersistenceManager.RestoreFromGZip(jobResult.SerializedJobResultData);
-        PluginManager.ControlManager.ShowControl(job.Engine.CreateView());
+        ControlManager.Manager.ShowControl(job.Engine.CreateView());
       }
       //HiveLogger.Debug("HiveEngine: Results-polling - Exception!");
@@ -218,9 +218,8 @@
       executableJobObj.SerializedJobData = memStream.ToArray();
 
-      DiscoveryService service = new DiscoveryService();
-      List<PluginInfo> plugins = new List<PluginInfo>();
+      List<IPluginDescription> plugins = new List<IPluginDescription>();
 
       foreach (IStorable storeable in dictionary.Values) {
-        PluginInfo pluginInfo = service.GetDeclaringPlugin(storeable.GetType());
+        IPluginDescription pluginInfo = ApplicationManager.Manager.GetDeclaringPlugin(storeable.GetType());
         if (!plugins.Contains(pluginInfo)) {
           plugins.Add(pluginInfo);
@@ -233,5 +232,5 @@
       List<HivePluginInfo> pluginsNeeded =
         new List<HivePluginInfo>();
-      foreach (PluginInfo uniquePlugin in plugins) {
+      foreach (IPluginDescription uniquePlugin in plugins) {
         HivePluginInfo pluginInfo =
           new HivePluginInfo();
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.JobBase/3.2/JobPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.JobBase/3.2/JobPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.JobBase/3.2/JobPlugin.cs	(revision 2587)
@@ -6,7 +6,7 @@
 
 namespace HeuristicLab.Hive.JobBase {
-  [ClassInfo(Name = "HeuristicLab.Hive.JobBase-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.JobBase-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Hive.JobBase-3.2")]
+  [PluginFile("HeuristicLab.Hive.JobBase-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class JobBasePlugin: PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.ADODataAccess/3.2/HiveServerADODataAccessPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.ADODataAccess/3.2/HiveServerADODataAccessPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.ADODataAccess/3.2/HiveServerADODataAccessPlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.Hive.Server.ADODataAccess {
-  [ClassInfo(Name = "HeuristicLab.Hive.Server.ADODataAccess-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Server.ADODataAccess-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Server.Core-3.2")]
+  [Plugin("HeuristicLab.Hive.Server.ADODataAccess-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server.ADODataAccess-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Server.Core-3.2")]
   public class HiveServerADODataAccessPlugin : PluginBase {
 
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Console/3.2/HiveServerConsoleApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Console/3.2/HiveServerConsoleApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Console/3.2/HiveServerConsoleApplication.cs	(revision 2587)
@@ -27,5 +27,5 @@
 
 namespace HeuristicLab.Hive.Server.ServerConsole {
-  [ClassInfo(Name = "Hive Server Console", Description = "Console Application for the Hive Server.", AutoRestart = true)]
+  [Application("Hive Server Console", "Console Application for the Hive Server.", true)]
   class HiveServerConsoleApplication : ApplicationBase {
     public override void Run() {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Console/3.2/HiveServerConsolePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Console/3.2/HiveServerConsolePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Console/3.2/HiveServerConsolePlugin.cs	(revision 2587)
@@ -27,7 +27,7 @@
 
 namespace HeuristicLab.Grid {
-  [ClassInfo(Name = "HeuristicLab.Hive.Server.Console-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Server.Console-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Hive.Server.Console-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server.Console-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class HeuristicLabHiveClientConsolePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/ClientCommunicator.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/ClientCommunicator.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/ClientCommunicator.cs	(revision 2587)
@@ -43,8 +43,8 @@
   /// The ClientCommunicator manages the whole communication with the client
   /// </summary>
-  public class ClientCommunicator: IClientCommunicator, 
-    IInternalClientCommunicator{
-    private static Dictionary<Guid, DateTime> lastHeartbeats = 
-      new Dictionary<Guid,DateTime>();
+  public class ClientCommunicator : IClientCommunicator,
+    IInternalClientCommunicator {
+    private static Dictionary<Guid, DateTime> lastHeartbeats =
+      new Dictionary<Guid, DateTime>();
     private static Dictionary<Guid, int> newAssignedJobs =
       new Dictionary<Guid, int>();
@@ -69,11 +69,11 @@
     public ClientCommunicator() {
       factory = ServiceLocator.GetSessionFactory();
-      
+
       lifecycleManager = ServiceLocator.GetLifecycleManager();
-      jobManager = ServiceLocator.GetJobManager() as 
+      jobManager = ServiceLocator.GetJobManager() as
         IInternalJobManager;
       scheduler = ServiceLocator.GetScheduler();
 
-      lifecycleManager.RegisterHeartbeat( 
+      lifecycleManager.RegisterHeartbeat(
         new EventHandler(lifecycleManager_OnServerHeartbeat));
     }
@@ -150,5 +150,5 @@
       }
       catch (Exception ex) {
-        if (tx != null) 
+        if (tx != null)
           tx.Rollback();
         throw ex;
@@ -172,5 +172,5 @@
               pendingJobs[currJob.Id]--;
             }
-          } 
+          }
         }
       }
@@ -365,5 +365,5 @@
       }
     }
-   
+
     /// <summary>
     /// if the client was told to pull a job he calls this method
@@ -489,5 +489,5 @@
           result.ClientId,
           result.JobId,
-          new byte[] {},
+          new byte[] { },
           result.Percentage,
           result.Exception,
@@ -570,5 +570,5 @@
             jobAdapter.GetById(jobId);
         }
-        
+
         if (job == null && job.JobInfo != null) {
           response.Success = false;
@@ -608,5 +608,5 @@
           job.JobInfo.State = State.calculating;
         }
-        if (job.JobInfo.State != State.calculating && 
+        if (job.JobInfo.State != State.calculating &&
           job.JobInfo.State != State.pending) {
           response.Success = false;
@@ -619,5 +619,5 @@
 
         if (finished) {
-          job.JobInfo.State = State.finished; 
+          job.JobInfo.State = State.finished;
         }
 
@@ -676,7 +676,7 @@
     /// <param name="finished"></param>
     /// <returns></returns>
-    public ResponseResultReceived StoreFinishedJobResult(Guid clientId, 
-      Guid jobId, 
-      byte[] result, 
+    public ResponseResultReceived StoreFinishedJobResult(Guid clientId,
+      Guid jobId,
+      byte[] result,
       double percentage,
       Exception exception) {
@@ -802,19 +802,17 @@
     public ResponsePlugin SendPlugins(List<HivePluginInfo> pluginList) {
       ResponsePlugin response = new ResponsePlugin();
-      PluginManager.Manager.Initialize();
-      ICollection<PluginInfo> allActivePlugins = PluginManager.Manager.ActivePlugins;
-
       foreach (HivePluginInfo pluginInfo in pluginList) {
         // TODO: BuildDate deleted, not needed???
         // TODO: Split version to major, minor and revision number
-        foreach (PluginInfo currPlugin in allActivePlugins) {
+        foreach (IPluginDescription currPlugin in ApplicationManager.Manager.Plugins) {
           if (currPlugin.Name == pluginInfo.Name) {
 
-            CachedHivePluginInfo currCachedPlugin = new CachedHivePluginInfo { 
-                Name = currPlugin.Name,
-                Version = currPlugin.Version.ToString(),
-                BuildDate = currPlugin.BuildDate };
-
-            foreach (String assemblyPath in currPlugin.Assemblies) {
+            CachedHivePluginInfo currCachedPlugin = new CachedHivePluginInfo {
+              Name = currPlugin.Name,
+              Version = currPlugin.Version.ToString(),
+              BuildDate = currPlugin.BuildDate
+            };
+
+            foreach (String assemblyPath in currPlugin.Files) {
               currCachedPlugin.PluginFiles.Add(File.ReadAllBytes(assemblyPath));
             }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/DbTestApp.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/DbTestApp.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/DbTestApp.cs	(revision 2587)
@@ -36,7 +36,5 @@
 
 namespace HeuristicLab.Hive.Server {
-  [ClassInfo(Name = "Hive DB Test App",
-      Description = "Test Application for the Hive DataAccess Layer",
-      AutoRestart = true)]
+  [Application("Hive DB Test App", "Test Application for the Hive DataAccess Layer", true)]
   class HiveDbTestApplication : ApplicationBase {
     /*  private void TestClientAdapter() {
@@ -311,6 +309,5 @@
 
       byte[] buffer = new byte[1024];
-      while((length = s.Read(buffer, 0, buffer.Length)) > 0)
-      {
+      while ((length = s.Read(buffer, 0, buffer.Length)) > 0) {
         fs.Write(buffer, 0, length);
       }
@@ -355,10 +352,10 @@
         new ExecutionEngineFacade();
 
-     ResponseObject<SerializedJobResult> response =
-       executionEngineFacade.GetLastSerializedResult(
-       new Guid("56ce20bc-067b-424d-a7df-67aaace7c850"), false);
-
-       IStorable restoredJob =
-         PersistenceManager.RestoreFromGZip(response.Obj.SerializedJobResultData);
+      ResponseObject<SerializedJobResult> response =
+        executionEngineFacade.GetLastSerializedResult(
+        new Guid("56ce20bc-067b-424d-a7df-67aaace7c850"), false);
+
+      IStorable restoredJob =
+        PersistenceManager.RestoreFromGZip(response.Obj.SerializedJobResultData);
     }
 
@@ -369,5 +366,5 @@
       //TestJobResultStreaming();
       TestJobResultDeserialization();
-    }      
+    }
   }
 }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/HiveServerCorePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/HiveServerCorePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/HiveServerCorePlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.Hive.Server {
-  [ClassInfo(Name = "HeuristicLab.Hive.Server.Core-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Server.Core-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
+  [Plugin("HeuristicLab.Hive.Server.Core-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server.Core-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
   public class HiveServerCorePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/ServiceLocator.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/ServiceLocator.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Core/3.2/ServiceLocator.cs	(revision 2587)
@@ -20,4 +20,5 @@
 #endregion
 
+using System.Linq;
 using HeuristicLab.Hive.Server.DataAccess;
 using HeuristicLab.PluginInfrastructure;
@@ -34,7 +35,4 @@
 /// </summary>
 public class ServiceLocator {
-  private static DiscoveryService discoveryService =
-    new DiscoveryService();
-
   private static IClientManager clientManager = null;
 
@@ -109,5 +107,5 @@
     if (sessionFactory == null) {
       sessionFactory = 
-        discoveryService.GetInstances<ISessionFactory>()[0];
+        ApplicationManager.Manager.GetInstances<ISessionFactory>().First();
 
       sessionFactory.DbConnectionType =
@@ -128,5 +126,5 @@
   public static IScheduler GetScheduler() {
     if (scheduler == null) {
-      scheduler = discoveryService.GetInstances<IScheduler>()[0];
+      scheduler = ApplicationManager.Manager.GetInstances<IScheduler>().First();
     }
 
@@ -141,5 +139,5 @@
   public static IPermissionManager GetPermissionManager() {
     if (permManager == null)
-      permManager = discoveryService.GetInstances<IPermissionManager>()[0];
+      permManager = ApplicationManager.Manager.GetInstances<IPermissionManager>().First();
     return permManager;
     
@@ -153,5 +151,5 @@
   public static IHivePermissionManager GetHivePermissionManager() {
     if (hivePermManager == null)
-      hivePermManager = discoveryService.GetInstances<IHivePermissionManager>()[0];
+      hivePermManager = ApplicationManager.Manager.GetInstances<IHivePermissionManager>().First();
     return hivePermManager;
 
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.DataAccess/3.2/HiveServerDataAccessPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.DataAccess/3.2/HiveServerDataAccessPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.DataAccess/3.2/HiveServerDataAccessPlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.Hive.DataAccess {
-  [ClassInfo(Name = "HeuristicLab.Hive.Server.DataAccess-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Server.DataAccess-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
+  [Plugin("HeuristicLab.Hive.Server.DataAccess-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server.DataAccess-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
   public class HiveServerDataAccessPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Scheduler/3.2/HiveServerSchedulerPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Scheduler/3.2/HiveServerSchedulerPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server.Scheduler/3.2/HiveServerSchedulerPlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.Hive.Server {
-  [ClassInfo(Name = "HeuristicLab.Hive.Server.Scheduler-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Server.Scheduler-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Server-3.2")]
+  [Plugin("HeuristicLab.Hive.Server.Scheduler-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server.Scheduler-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Server-3.2")]
   public class HiveServerSchedulerPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server/3.2/HiveServerApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server/3.2/HiveServerApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server/3.2/HiveServerApplication.cs	(revision 2587)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Text;
+using System.Linq;
 using System.Windows.Forms;
 using HeuristicLab.PluginInfrastructure;
@@ -33,7 +34,5 @@
 
 namespace HeuristicLab.Hive.Server {
-  [ClassInfo(Name = "Hive Server",
-      Description = "Server application for the distributed hive engine.",
-      AutoRestart = true)]
+  [Application("Hive Server", "Server application for the distributed hive engine.", true)]
   public class HiveServerApplication : ApplicationBase {
     public const string STR_ClientCommunicator = "ClientCommunicator";
@@ -41,5 +40,4 @@
     public const string STR_ExecutionEngineFacade = "ExecutionEngineFacade";
 
-    private DiscoveryService discService = new DiscoveryService();
     private Dictionary<string, ServiceHost> runningServices = new Dictionary<string, ServiceHost>();
     private NetTcpBinding binding = (NetTcpBinding)WcfSettings.GetBinding();
@@ -52,5 +50,5 @@
       All
     }
-    
+
     private bool AddMexEndpoint(ServiceHost serviceHost) {
       if (serviceHost != null) {
@@ -69,13 +67,13 @@
       string curServiceHost = "";
       Uri uriTcp;
-      IClientFacade[] clientCommunicatorInstances = discService.GetInstances<IClientFacade>();
-      IServerConsoleFacade[] serverConsoleInstances = discService.GetInstances<IServerConsoleFacade>();
-      IExecutionEngineFacade[] executionEngineInstances = discService.GetInstances<IExecutionEngineFacade>();
+      IEnumerable<IClientFacade> clientCommunicatorInstances = ApplicationManager.Manager.GetInstances<IClientFacade>();
+      IEnumerable<IServerConsoleFacade> serverConsoleInstances = ApplicationManager.Manager.GetInstances<IServerConsoleFacade>();
+      IEnumerable<IExecutionEngineFacade> executionEngineInstances = ApplicationManager.Manager.GetInstances<IExecutionEngineFacade>();
       ServiceHost serviceHost = null;
       switch (svc) {
         case Services.ClientCommunicator:
-          if (clientCommunicatorInstances.Length > 0) {
-            uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/HiveServer/"); 
-            serviceHost = new ServiceHost(clientCommunicatorInstances[0].GetType(), uriTcp);
+          if (clientCommunicatorInstances.Count() > 0) {
+            uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/HiveServer/");
+            serviceHost = new ServiceHost(clientCommunicatorInstances.First().GetType(), uriTcp);
             serviceHost.AddServiceEndpoint(typeof(IClientFacade), streamedBinding, STR_ClientCommunicator);
             curServiceHost = STR_ClientCommunicator;
@@ -83,7 +81,7 @@
           break;
         case Services.ServerConsoleFacade:
-          if (serverConsoleInstances.Length > 0) {
+          if (serverConsoleInstances.Count() > 0) {
             uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/HiveServerConsole/");
-            serviceHost = new ServiceHost(serverConsoleInstances[0].GetType(), uriTcp);
+            serviceHost = new ServiceHost(serverConsoleInstances.First().GetType(), uriTcp);
             serviceHost.AddServiceEndpoint(typeof(IServerConsoleFacade), binding, STR_ServerConsoleFacade);
             curServiceHost = STR_ServerConsoleFacade;
@@ -91,7 +89,7 @@
           break;
         case Services.ExecutionEngineFacade:
-          if (executionEngineInstances.Length > 0) {
+          if (executionEngineInstances.Count() > 0) {
             uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/ExecutionEngine/");
-            serviceHost = new ServiceHost(executionEngineInstances[0].GetType(), uriTcp);
+            serviceHost = new ServiceHost(executionEngineInstances.First().GetType(), uriTcp);
             serviceHost.AddServiceEndpoint(typeof(IExecutionEngineFacade), streamedBinding, STR_ExecutionEngineFacade);
             curServiceHost = STR_ExecutionEngineFacade;
@@ -143,5 +141,5 @@
             break;
       }
-      
+
       //Start services and record their base address
       Dictionary<string, Uri> baseAddrDict = new Dictionary<string, Uri>();
@@ -153,13 +151,13 @@
         StartService(Services.ExecutionEngineFacade, addresses[index], WcfSettings.DEFAULTPORT));
 
-      ILifecycleManager[] lifecycleManagers =  discService.GetInstances<ILifecycleManager>();
-      if (lifecycleManagers.Length > 0) {
+      IEnumerable<ILifecycleManager> lifecycleManagers = ApplicationManager.Manager.GetInstances<ILifecycleManager>();
+      if (lifecycleManagers.Count() > 0) {
         ILifecycleManager lifecycleManager =
-          lifecycleManagers[0];
+          lifecycleManagers.First();
 
         lifecycleManager.Init();
         Form mainForm = new MainForm(baseAddrDict);
         Application.Run(mainForm);
-        
+
         lifecycleManager.Shutdown();
       }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server/3.2/HiveServerPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server/3.2/HiveServerPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Hive.Server/3.2/HiveServerPlugin.cs	(revision 2587)
@@ -27,8 +27,8 @@
 
 namespace HeuristicLab.Hive.Server {
-  [ClassInfo(Name = "HeuristicLab.Hive.Server-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Hive.Server-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
+  [Plugin("HeuristicLab.Hive.Server-3.2")]
+  [PluginFile("HeuristicLab.Hive.Server-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Hive.Contracts-3.2")]
   public class HiveServerPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.IntVector/3.2/HeuristicLabIntVectorPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.IntVector/3.2/HeuristicLabIntVectorPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.IntVector/3.2/HeuristicLabIntVectorPlugin.cs	(revision 2587)
@@ -29,9 +29,9 @@
   /// Plugin class for HeuristicLab.IntVector plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.IntVector-3.2")]
-  [PluginFile(Filename = "HeuristicLab.IntVector-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
+  [Plugin("HeuristicLab.IntVector-3.2")]
+  [PluginFile("HeuristicLab.IntVector-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
   public class HeuristicLabIntVectorPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.LinearRegression/3.2/HeuristicLabLinearRegressionPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.LinearRegression/3.2/HeuristicLabLinearRegressionPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.LinearRegression/3.2/HeuristicLabLinearRegressionPlugin.cs	(revision 2587)
@@ -25,19 +25,19 @@
 
 namespace HeuristicLab.LinearRegression {
-  [ClassInfo(Name = "HeuristicLab.LinearRegression-3.2")]
-  [PluginFile(Filename = "HeuristicLab.LinearRegression-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "ALGLIB")]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.GP-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification.Classification-3.3")]
-  [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification.TimeSeries-3.3")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
+  [Plugin("HeuristicLab.LinearRegression-3.2")]
+  [PluginFile("HeuristicLab.LinearRegression-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("ALGLIB")]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.GP-3.3")]
+  [PluginDependency("HeuristicLab.GP.Interfaces-3.3")]
+  [PluginDependency("HeuristicLab.GP.StructureIdentification-3.3")]
+  [PluginDependency("HeuristicLab.GP.StructureIdentification.Classification-3.3")]
+  [PluginDependency("HeuristicLab.GP.StructureIdentification.TimeSeries-3.3")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
   public class HeuristicLabLinearRegression : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Logging/3.2/HeuristicLabLoggingPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Logging/3.2/HeuristicLabLoggingPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Logging/3.2/HeuristicLabLoggingPlugin.cs	(revision 2587)
@@ -29,12 +29,12 @@
   /// Plugin class for HeuristicLab.Logging plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Logging-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Logging-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Charting-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Charting.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Plugin("HeuristicLab.Logging-3.2")]
+  [PluginFile("HeuristicLab.Logging-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Charting-3.2")]
+  [PluginDependency("HeuristicLab.Charting.Data-3.2")]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
   public class HeuristicLabLoggingPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabDockingMainFormTestApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabDockingMainFormTestApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabDockingMainFormTestApplication.cs	(revision 2587)
@@ -28,5 +28,5 @@
 
 namespace HeuristicLab.MainForm.Test {
-  [ClassInfo(Name = "DockingMainForm  Test", Description = "Test application for new mainform development.")]
+  [Application("DockingMainForm  Test", "Test application for new mainform development.")]
   public class HeuristicLabDockingMainFormTestApplication : ApplicationBase {
     public override void Run() {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMainFormTestPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMainFormTestPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMainFormTestPlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.MainForm.Test {
-  [ClassInfo(Name = "HeuristicLab.MainForm.Test-3.2")]
-  [PluginFile(Filename = "HeuristicLab.MainForm.Test-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.MainForm.WindowsForms-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Common.Resources-3.2")]
+  [Plugin("HeuristicLab.MainForm.Test-3.2")]
+  [PluginFile("HeuristicLab.MainForm.Test-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms-3.2")]
+  [PluginDependency("HeuristicLab.Common.Resources-3.2")]
   public class HeuristicLabMainFormTestPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMultipleDocumentMainFormTestApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMultipleDocumentMainFormTestApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMultipleDocumentMainFormTestApplication.cs	(revision 2587)
@@ -28,5 +28,5 @@
 
 namespace HeuristicLab.MainForm.Test {
-  [ClassInfo(Name = "MultipleDocumentMainForm Test", Description="Test application for new mainform development.")]
+  [Application("MultipleDocumentMainForm Test", "Test application for new mainform development.")]
   public class HeuristicLabMultipleDocumentMainFormTestApplication : ApplicationBase {
     public override void Run() {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabSingleDocumentMainFormTestApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabSingleDocumentMainFormTestApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabSingleDocumentMainFormTestApplication.cs	(revision 2587)
@@ -28,5 +28,5 @@
 
 namespace HeuristicLab.MainForm.Test {
-  [ClassInfo(Name = "SingleDocumentMainForm Test", Description="Test application for new mainform development.")]
+  [Application("SingleDocumentMainForm Test", "Test application for new mainform development.")]
   public class HeuristicLabSingleDocumentMainFormTestApplication : ApplicationBase {
     public override void Run() {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.WindowsForms/3.2/HeuristicLabMainFormWindowsFormsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.WindowsForms/3.2/HeuristicLabMainFormWindowsFormsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.WindowsForms/3.2/HeuristicLabMainFormWindowsFormsPlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.MainForm.WindowsForms {
-  [ClassInfo(Name = "HeuristicLab.MainForm.WindowsForms-3.2")]
-  [PluginFile(Filename = "HeuristicLab.MainForm.WindowsForms-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [PluginFile(Filename = "WeifenLuo.WinFormsUI.Docking.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.MainForm-3.2")]
+  [Plugin("HeuristicLab.MainForm.WindowsForms-3.2")]
+  [PluginFile("HeuristicLab.MainForm.WindowsForms-3.2.dll", PluginFileType.Assembly)]
+  [PluginFile("WeifenLuo.WinFormsUI.Docking.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.MainForm-3.2")]
   public class HeuristicLabMainFormTestPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.cs	(revision 2587)
@@ -269,10 +269,8 @@
 
     #region create menu and toolbar
-    protected virtual void CreateGUI() {
-      DiscoveryService ds = new DiscoveryService();
-
-      object[] items = ds.GetInstances(userInterfaceItemType);
+    protected virtual void CreateGUI() {      
+
       IEnumerable<IMenuItem> toolStripMenuItems =
-        from mi in items
+        from mi in ApplicationManager.Manager.GetInstances(userInterfaceItemType)
         where mi is IMenuItem
         orderby ((IMenuItem)mi).Position
@@ -281,7 +279,6 @@
         AddToolStripMenuItem(menuItem);
 
-      items = ds.GetInstances(userInterfaceItemType);
       IEnumerable<IToolBarItem> toolStripButtonItems =
-        from bi in items
+        from bi in ApplicationManager.Manager.GetInstances(userInterfaceItemType)
         where bi is IToolBarItem
         orderby ((IToolBarItem)bi).Position
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm/3.2/HeuristicLabMainFormPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm/3.2/HeuristicLabMainFormPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm/3.2/HeuristicLabMainFormPlugin.cs	(revision 2587)
@@ -26,6 +26,6 @@
 
 namespace HeuristicLab.Modeling.Database {
-  [ClassInfo(Name = "HeuristicLab.MainForm-3.2")]
-  [PluginFile(Filename = "HeuristicLab.MainForm-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Plugin("HeuristicLab.MainForm-3.2")]
+  [PluginFile("HeuristicLab.MainForm-3.2.dll", PluginFileType.Assembly)]
   public class HeuristicLabMainFormPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm/3.2/MainFormManager.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm/3.2/MainFormManager.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.MainForm/3.2/MainFormManager.cs	(revision 2587)
@@ -43,7 +43,6 @@
           MainFormManager.mainform = mainform;
 
-          DiscoveryService ds = new DiscoveryService();
           IEnumerable<Type> types =
-            from t in ds.GetTypes(typeof(IView))
+            from t in ApplicationManager.Manager.GetTypes(typeof(IView))
             where !t.IsAbstract && !t.IsInterface && !t.IsGenericType && ContentAttribute.HasContentAttribute(t)
             select t;
@@ -123,5 +122,5 @@
       if (!typeof(IView).IsAssignableFrom(viewType))
         throw new ArgumentException("View can not be created becaues given type " + viewType.ToString() + " is not of type IView.");
-      return (IView)Activator.CreateInstance(viewType,objectToView);
+      return (IView)Activator.CreateInstance(viewType, objectToView);
     }
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Modeling.Database.SQLServerCompact/3.2/HeuristicLabModelingDatabaseSQLServerCompactPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Modeling.Database.SQLServerCompact/3.2/HeuristicLabModelingDatabaseSQLServerCompactPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Modeling.Database.SQLServerCompact/3.2/HeuristicLabModelingDatabaseSQLServerCompactPlugin.cs	(revision 2587)
@@ -26,12 +26,12 @@
 
 namespace HeuristicLab.Modeling.Database.SQLServerCompact {
-  [ClassInfo(Name = "HeuristicLab.Modeling.Database.SQLServerCompact-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Modeling.Database.SQLServerCompact-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling.Database-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SQLServerCompact-3.2")]  
+  [Plugin("HeuristicLab.Modeling.Database.SQLServerCompact-3.2")]
+  [PluginFile("HeuristicLab.Modeling.Database.SQLServerCompact-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
+  [PluginDependency("HeuristicLab.Modeling.Database-3.2")]
+  [PluginDependency("HeuristicLab.SQLServerCompact-3.2")]  
   public class HeuristicLabModelingDatabaseSQLServerCompactPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Modeling.Database/3.2/HeuristicLabModelingDatabasePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Modeling.Database/3.2/HeuristicLabModelingDatabasePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Modeling.Database/3.2/HeuristicLabModelingDatabasePlugin.cs	(revision 2587)
@@ -26,8 +26,8 @@
 
 namespace HeuristicLab.Modeling.Database {
-  [ClassInfo(Name = "HeuristicLab.Modeling.Database-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Modeling.Database-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
+  [Plugin("HeuristicLab.Modeling.Database-3.2")]
+  [PluginFile("HeuristicLab.Modeling.Database-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
   public class HeuristicLabModelingDatabasePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Modeling/3.2/HeuristicLabModelingPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Modeling/3.2/HeuristicLabModelingPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Modeling/3.2/HeuristicLabModelingPlugin.cs	(revision 2587)
@@ -26,11 +26,11 @@
 
 namespace HeuristicLab.Modeling {
-  [ClassInfo(Name = "HeuristicLab.Modeling-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Modeling-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "ALGLIB")]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
+  [Plugin("HeuristicLab.Modeling-3.2")]
+  [PluginFile("HeuristicLab.Modeling-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("ALGLIB")]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
   public class HeuristicLabModelingPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators.Metaprogramming/3.2/HeuristicLabOperatorsMetaprogrammingPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators.Metaprogramming/3.2/HeuristicLabOperatorsMetaprogrammingPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators.Metaprogramming/3.2/HeuristicLabOperatorsMetaprogrammingPlugin.cs	(revision 2587)
@@ -29,9 +29,9 @@
   /// Plugin class for HeuristicLab.Operators.Metaprogramming plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Operators.Metaprogramming-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Operators.Metaprogramming-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Plugin("HeuristicLab.Operators.Metaprogramming-3.2")]
+  [PluginFile("HeuristicLab.Operators.Metaprogramming-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
   public class HeuristicLabOperatorsMetaprogrammingPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators.Programmable/3.2/HeuristicLabOperatorsProgrammablePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators.Programmable/3.2/HeuristicLabOperatorsProgrammablePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators.Programmable/3.2/HeuristicLabOperatorsProgrammablePlugin.cs	(revision 2587)
@@ -26,9 +26,9 @@
 
 namespace HeuristicLab.Operators.Programmable {
-  [ClassInfo(Name = "HeuristicLab.Operators.Programmable-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Operators.Programmable-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Plugin("HeuristicLab.Operators.Programmable-3.2")]
+  [PluginFile("HeuristicLab.Operators.Programmable-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
   public class HeuristicLabOperatorsProgrammablePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators.Stopwatch/3.2/HeuristicLabOperatorsStopwatchPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators.Stopwatch/3.2/HeuristicLabOperatorsStopwatchPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators.Stopwatch/3.2/HeuristicLabOperatorsStopwatchPlugin.cs	(revision 2587)
@@ -26,9 +26,9 @@
 
 namespace HeuristicLab.Operators.Stopwatch {
-  [ClassInfo(Name = "HeuristicLab.Operators.Stopwatch-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Operators.Stopwatch-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Plugin("HeuristicLab.Operators.Stopwatch-3.2")]
+  [PluginFile("HeuristicLab.Operators.Stopwatch-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
   public class HeuristicLabOperatorsStopwatchPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators/3.2/HeuristicLabOperatorsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators/3.2/HeuristicLabOperatorsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Operators/3.2/HeuristicLabOperatorsPlugin.cs	(revision 2587)
@@ -29,9 +29,9 @@
   /// Plugin class for HeuristicLab.Operators plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Operators-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Operators-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Constraints-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
+  [Plugin("HeuristicLab.Operators-3.2")]
+  [PluginFile("HeuristicLab.Operators-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Constraints-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
   public class HeuristicLabOperatorsPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/AvailableOperatorsForm.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/AvailableOperatorsForm.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/AvailableOperatorsForm.cs	(revision 2587)
@@ -56,13 +56,10 @@
       builtinOperatorsTreeView.TreeViewNodeSorter = nodeSorter;
 
-      DiscoveryService discoveryService = new DiscoveryService();
-      PluginInfo[] plugins = discoveryService.Plugins;
-      foreach(PluginInfo plugin in plugins) {
+      foreach(IPluginDescription plugin in ApplicationManager.Manager.Plugins) {
         TreeNode pluginItem = new TreeNode();
         pluginItem.Text = plugin.Name;
         pluginItem.Tag = plugin;
 
-        Type[] operators = discoveryService.GetTypes(typeof(IOperator), plugin);
-        foreach(Type type in operators) {
+        foreach(Type type in ApplicationManager.Manager.GetTypes(typeof(IOperator), plugin)) {
           if(!type.IsAbstract) {
             TreeNode operatorItem = new TreeNode();
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/HeuristicLab.OptimizationFrontend-3.2.csproj
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/HeuristicLab.OptimizationFrontend-3.2.csproj	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/HeuristicLab.OptimizationFrontend-3.2.csproj	(revision 2587)
@@ -11,5 +11,5 @@
     <RootNamespace>HeuristicLab.OptimizationFrontend</RootNamespace>
     <AssemblyName>HeuristicLab.OptimizationFrontend-3.2</AssemblyName>
-    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <SignAssembly>true</SignAssembly>
@@ -70,4 +70,7 @@
   <ItemGroup>
     <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/HeuristicLabOptimizationFrontendApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/HeuristicLabOptimizationFrontendApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/HeuristicLabOptimizationFrontendApplication.cs	(revision 2587)
@@ -27,9 +27,9 @@
 
 namespace HeuristicLab.OptimizationFrontend {
-  [ClassInfo(Name = "HeuristicLab 3.2", Description="Next generation heuristic optimization environment.")]
+  [Application("HeuristicLab 3.2", "Next generation heuristic optimization environment.")]
   class HeuristicLabOptimizationFrontendApplication : ApplicationBase {
     public override void Run() {
       Form mainForm = new MainForm();
-      PluginManager.ControlManager = (IControlManager)mainForm;
+      ControlManager.RegisterManager((IControlManager)mainForm);
       Application.Run(mainForm);
     }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/HeuristicLabOptimizationFrontendPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/HeuristicLabOptimizationFrontendPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/HeuristicLabOptimizationFrontendPlugin.cs	(revision 2587)
@@ -27,7 +27,7 @@
 
 namespace HeuristicLab.OptimizationFrontend {
-  [ClassInfo(Name = "HeuristicLab.OptimizationFrontend-3.2")]
-  [PluginFile(Filename = "HeuristicLab.OptimizationFrontend-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.OptimizationFrontend-3.2")]
+  [PluginFile("HeuristicLab.OptimizationFrontend-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class HeuristicLabOptimizationFrontendPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/MainForm.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/MainForm.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.OptimizationFrontend/3.2/MainForm.cs	(revision 2587)
@@ -26,4 +26,5 @@
 using System.Drawing;
 using System.Text;
+using System.Linq;
 using System.Threading;
 using System.Windows.Forms;
@@ -58,12 +59,8 @@
       runningTasks = 0;
 
-      DiscoveryService discoveryService = new DiscoveryService();
-
       // discover creatable items
-      Type[] creatables = discoveryService.GetTypes(typeof(IEditable));
-      string[] names = new string[creatables.Length];
-      for (int i = 0; i < creatables.Length; i++)
-        names[i] = creatables[i].Name;
-      Array.Sort(names, creatables);
+      IEnumerable<Type> creatables = from x in ApplicationManager.Manager.GetTypes(typeof(IEditable))
+                                     orderby x.Name
+                                     select x;
       foreach (Type type in creatables) {
         if (!type.IsAbstract) {
@@ -84,6 +81,6 @@
 
     #region IControlManager Members
-    public void ShowControl(IControl control) {
-      if (InvokeRequired) Invoke((Action<IControl>)ShowControl, control);
+    public void ShowControl(object control) {
+      if (InvokeRequired) Invoke((Action<object>)ShowControl, control);
       else {
         if (control is IEditor) {
@@ -176,5 +173,5 @@
         else {
           editor.Filename = task.filename;
-          PluginManager.ControlManager.ShowControl(editor);
+          ControlManager.Manager.ShowControl(editor);
         }
         lock (locker) {
@@ -239,5 +236,5 @@
           MessageBox.Show("The selected item doesn't provide an editor.", "Editor Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         } else {
-          PluginManager.ControlManager.ShowControl(editor);
+          ControlManager.Manager.ShowControl(editor);
           EnableDisableItems();
         }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Permutation/3.2/HeuristicLabPermutationPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Permutation/3.2/HeuristicLabPermutationPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Permutation/3.2/HeuristicLabPermutationPlugin.cs	(revision 2587)
@@ -29,9 +29,9 @@
   /// Plugin class for HeuristicLab.Permutation plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Permutation-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Permutation-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
+  [Plugin("HeuristicLab.Permutation-3.2")]
+  [PluginFile("HeuristicLab.Permutation-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
   public class HeuristicLabRandomPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/ApplicationManager.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/ApplicationManager.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/ApplicationManager.cs	(revision 2587)
@@ -138,5 +138,5 @@
     /// </summary>
     /// <param name="plugins">bytearray of all assemblies that should be loaded</param>
-    public void LoadAssemblies(IEnumerable<byte[]> assemblies) {
+    internal void LoadAssemblies(IEnumerable<byte[]> assemblies) {
       foreach (byte[] asm in assemblies) {
         Assembly loadedAsm = Assembly.Load(asm);
@@ -156,5 +156,5 @@
     /// <typeparam name="T">Most general type.</typeparam>
     /// <returns>Enumerable of the created instances.</returns>
-    public static IEnumerable<T> GetInstances<T>(IPluginDescription plugin) where T : class {
+    internal static IEnumerable<T> GetInstances<T>(IPluginDescription plugin) where T : class {
       return from t in GetTypes(typeof(T), plugin)
              select (T)Activator.CreateInstance(t);
@@ -175,5 +175,5 @@
     /// <typeparam name="T">Most general type.</typeparam>
     /// <returns>Enumerable of the created instances.</returns>
-    public static IEnumerable<T> GetInstances<T>() where T : class {
+    internal static IEnumerable<T> GetInstances<T>() where T : class {
       return from i in GetInstances(typeof(T))
              select (T)i;
@@ -185,5 +185,5 @@
     /// <typeparam name="type">Most general type.</typeparam>
     /// <returns>Enumerable of the created instances.</returns>
-    public static IEnumerable<object> GetInstances(Type type) {
+    internal static IEnumerable<object> GetInstances(Type type) {
       return from t in GetTypes(type)
              select Activator.CreateInstance(t);
@@ -195,5 +195,5 @@
     /// <param name="type">Most general type for which to find matching types.</param>
     /// <returns>Enumerable of the discovered types.</returns>
-    public static IEnumerable<Type> GetTypes(Type type) {
+    internal static IEnumerable<Type> GetTypes(Type type) {
       return from asm in AppDomain.CurrentDomain.GetAssemblies()
              from t in GetTypes(type, asm)
@@ -208,5 +208,5 @@
     /// <param name="plugin">The plugin the subtypes must be part of.</param>
     /// <returns>Enumerable of the discovered types.</returns>
-    public static IEnumerable<Type> GetTypes(Type type, IPluginDescription pluginDescription) {
+    internal static IEnumerable<Type> GetTypes(Type type, IPluginDescription pluginDescription) {
       PluginDescription pluginDesc = (PluginDescription)pluginDescription;
       return from asm in AppDomain.CurrentDomain.GetAssemblies()
@@ -252,5 +252,4 @@
     #region IApplicationManager Members
 
-
     IEnumerable<T> IApplicationManager.GetInstances<T>(IPluginDescription plugin) {
       return GetInstances<T>(plugin);
@@ -261,4 +260,8 @@
     }
 
+    IEnumerable<object> IApplicationManager.GetInstances(Type type) {
+      return GetInstances(type);
+    }
+
     IEnumerable<Type> IApplicationManager.GetTypes(Type type) {
       return GetTypes(type);
@@ -269,4 +272,15 @@
     }
 
+    /// <summary>
+    /// Finds the plugin that declares the <paramref name="type">type</paramref>.
+    /// </summary>
+    /// <param name="type">The type of interest.</param>
+    /// <returns>The description of the plugin that declares the given type or null if the type has not been declared by a known plugin.</returns>
+    public IPluginDescription GetDeclaringPlugin(Type type) {
+      foreach (PluginDescription info in Plugins) {
+        if (info.Assemblies.Contains(Path.GetFullPath(type.Assembly.Location))) return info;
+      }
+      return null;
+    }
     #endregion
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/BaseClasses/PluginBase.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/BaseClasses/PluginBase.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/BaseClasses/PluginBase.cs	(revision 2587)
@@ -35,5 +35,5 @@
     /// Initializes a new instance of <see cref="PluginBase"/>.
     /// </summary>
-    protected PluginBase() { }
+    public PluginBase() { }
 
     private PluginAttribute PluginAttribute {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/HeuristicLab.PluginInfrastructure.csproj
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/HeuristicLab.PluginInfrastructure.csproj	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/HeuristicLab.PluginInfrastructure.csproj	(revision 2587)
@@ -149,4 +149,6 @@
       <DesignTimeSharedInput>True</DesignTimeSharedInput>
     </Compile>
+    <Compile Include="Sandboxing\ISandboxManager.cs" />
+    <Compile Include="Sandboxing\SandboxManager.cs" />
     <Compile Include="Service References\UpdateLocationReference\Reference.cs">
       <AutoGen>True</AutoGen>
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Interfaces/IApplicationManager.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Interfaces/IApplicationManager.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Interfaces/IApplicationManager.cs	(revision 2587)
@@ -41,10 +41,4 @@
 
     /// <summary>
-    /// Dynamically loads assemblies given in binary form.
-    /// </summary>
-    /// <param name="assemblies">Assemblies that should be loaded in binary form.</param>
-    void LoadAssemblies(IEnumerable<byte[]> assemblies);
-
-    /// <summary>
     /// Discovers and creates instances of <typeparamref name="T"/> and all types implementing or inheriting <typeparamref name="T"/> (directly and indirectly) declared in any assembly of <paramref name="plugin"/>.
     /// </summary>
@@ -61,4 +55,11 @@
 
     /// <summary>
+    /// Discovers and creates instances of <paramref name="type"/> and all types implementing or inheriting <paramref name="type"/> (directly and indirectly).
+    /// </summary>
+    /// <param name="type">The type or super-type to discover.</typeparam>
+    /// <returns>An enumerable of instances of the discovered types.</returns>
+    IEnumerable<object> GetInstances(Type type);
+
+    /// <summary>
     /// Discovers all types implementing or inheriting <paramref name="type"/> (directly and indirectly).
     /// </summary>
@@ -73,4 +74,10 @@
     /// <returns>An enumerable of discovered types.</returns>
     IEnumerable<Type> GetTypes(Type type, IPluginDescription plugin);
+    /// <summary>
+    /// Finds the plugin that declares the <paramref name="type">type</paramref>.
+    /// </summary>
+    /// <param name="type">The type of interest.</param>
+    /// <returns>The description of the plugin that declares the given type or null if the type has not been declared by a known plugin.</returns>
+    IPluginDescription GetDeclaringPlugin(Type type);
   }
 }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Interfaces/IPluginDescription.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Interfaces/IPluginDescription.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Interfaces/IPluginDescription.cs	(revision 2587)
@@ -32,4 +32,20 @@
     /// </summary>
     string Name { get; }
+    /// <summary>
+    /// Gets the version of the plugin.
+    /// </summary>
+    Version Version { get; }
+    /// <summary>
+    /// Gets the build date of the plugin.
+    /// </summary>
+    DateTime BuildDate { get; }
+    /// <summary>
+    /// Gets the dependencies of the plugin.
+    /// </summary>
+    IEnumerable<IPluginDescription> Dependencies { get; }
+    /// <summary>
+    /// Gets the file names of files that are part of the plugin.
+    /// </summary>
+    IEnumerable<string> Files { get; }
   }
 }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Manager/PluginDescription.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Manager/PluginDescription.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Manager/PluginDescription.cs	(revision 2587)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Text;
+using System.Linq;
 
 namespace HeuristicLab.PluginInfrastructure.Manager {
@@ -35,5 +36,5 @@
     private string name;
     /// <summary>
-    /// Gets or sets the name of the plugin.
+    /// Gets the name of the plugin.
     /// </summary>
     public string Name {
@@ -52,17 +53,17 @@
     private Version version;
     /// <summary>
-    /// Gets or sets the version of the plugin.
+    /// Gets the version of the plugin.
     /// </summary>
-    internal Version Version {
+    public Version Version {
       get { return version; }
-      set { version = value; }
+      internal set { version = value; }
     }
     private DateTime buildDate;
     /// <summary>
-    /// Gets or sets the build date of the plugin.
+    /// Gets the build date of the plugin.
     /// </summary>
-    internal DateTime BuildDate {
+    public DateTime BuildDate {
       get { return buildDate; }
-      set { buildDate = value; }
+      internal set { buildDate = value; }
     }
 
@@ -81,5 +82,5 @@
     /// These files are deleted when the plugin is removed or updated.
     /// </summary>
-    internal IEnumerable<string> Files {
+    public IEnumerable<string> Files {
       get { return files; }
     }
@@ -90,9 +91,12 @@
 
     private List<PluginDescription> dependencies = new List<PluginDescription>();
+    internal IEnumerable<PluginDescription> Dependencies {
+      get { return dependencies; }
+    }
     /// <summary>
     /// Gets all dependencies of the plugin.
     /// </summary>
-    internal IEnumerable<PluginDescription> Dependencies {
-      get { return dependencies; }
+    IEnumerable<IPluginDescription> IPluginDescription.Dependencies {
+      get { return dependencies.Cast<IPluginDescription>(); }
     }
 
@@ -100,5 +104,4 @@
       dependencies.Add(dependency);
     }
-
 
     private List<string> assemblies = new List<string>();
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Manager/PluginManager.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Manager/PluginManager.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Manager/PluginManager.cs	(revision 2587)
@@ -112,6 +112,6 @@
 
     /// <summary>
-    /// Starts and application in a separate AppDomain.
-    /// Loads all enabled plugins and starts the application via a PluginRunner instance activated in the new AppDomain.
+    /// Starts an application in a separate AppDomain.
+    /// Loads all enabled plugins and starts the application via an ApplicationManager instance activated in the new AppDomain.
     /// </summary>
     /// <param name="appInfo">application to run</param>
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Sandboxing/ISandboxManager.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Sandboxing/ISandboxManager.cs	(revision 2587)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Sandboxing/ISandboxManager.cs	(revision 2587)
@@ -0,0 +1,36 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using System.Reflection;
+
+namespace HeuristicLab.PluginInfrastructure.Sandboxing {
+  /// <summary>
+  /// Interface for sandbox managers.
+  /// </summary>
+  public interface ISandboxManager {
+    AppDomain CreateAndInitSandbox(string name);
+    AppDomain CreateAndInitSandbox(string name, IEnumerable<byte[]> files);
+  }
+}
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Sandboxing/SandboxManager.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Sandboxing/SandboxManager.cs	(revision 2587)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.PluginInfrastructure/Sandboxing/SandboxManager.cs	(revision 2587)
@@ -0,0 +1,82 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.PluginInfrastructure.Manager;
+using System.IO;
+using System.ComponentModel;
+using HeuristicLab.PluginInfrastructure.UpdateLocationReference;
+using System.Security;
+using System.Security.Permissions;
+using System.Security.Policy;
+using System.Reflection;
+using System.Diagnostics;
+
+namespace HeuristicLab.PluginInfrastructure.Sandboxing {
+  public class SandboxManager {
+
+    private static StrongName CreateStrongName(Assembly assembly) {
+      if (assembly == null)
+        throw new ArgumentNullException("assembly");
+
+      AssemblyName assemblyName = assembly.GetName();
+      Trace.Assert(assemblyName != null, "Could not get assembly name");
+
+      // get the public key blob
+      byte[] publicKey = assemblyName.GetPublicKey();
+      if (publicKey == null || publicKey.Length == 0)
+        throw new InvalidOperationException("Assembly is not strongly named");
+
+      StrongNamePublicKeyBlob keyBlob = new StrongNamePublicKeyBlob(publicKey);
+
+      // and create the StrongName
+      return new StrongName(keyBlob, assemblyName.Name, assemblyName.Version);
+    }
+
+    #region ISandboxManager Members
+
+    public static AppDomain CreateAndInitSandbox(string name) {
+      return CreateAndInitSandbox(name, Enumerable.Empty<byte[]>());
+    }
+
+
+    public static AppDomain CreateAndInitSandbox(string name, IEnumerable<byte[]> files) {
+      PermissionSet pset;
+
+      #region permission set for sandbox
+      // Uncomment code for sandboxed appdomain
+      //pset = new PermissionSet(PermissionState.None);
+      //pset.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
+      //pset.AddPermission(new ReflectionPermission(ReflectionPermissionFlag.MemberAccess));
+      //FileIOPermission fPerm = new FileIOPermission(PermissionState.None);
+
+      //foreach (IPluginDescription plugin in ApplicationManager.Manager.Plugins) {
+      //  fPerm.AddPathList(FileIOPermissionAccess.Read | FileIOPermissionAccess.PathDiscovery, plugin.Files.ToArray());
+      //}
+
+      //pset.AddPermission(fPerm);
+      #endregion
+
+      #region permission set of unrestricted appdomain
+      // unrestricted appdomain 
+      pset = new PermissionSet(PermissionState.Unrestricted);
+      #endregion 
+
+      AppDomainSetup setup = AppDomain.CurrentDomain.SetupInformation;
+      //setup.PrivateBinPath = pluginDir;
+      setup.ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
+      AppDomain applicationDomain = AppDomain.CreateDomain(name, AppDomain.CurrentDomain.Evidence, setup, pset, CreateStrongName(Assembly.GetExecutingAssembly()));
+      Type applicationManagerType = typeof(ApplicationManager);
+      ApplicationManager applicationManager =
+        (ApplicationManager)applicationDomain.CreateInstanceAndUnwrap(applicationManagerType.Assembly.FullName, applicationManagerType.FullName, true, BindingFlags.NonPublic | BindingFlags.Instance, null, null, null, null, null);
+      ApplicationDescription[] apps = ApplicationManager.Manager.Applications.Cast<ApplicationDescription>().ToArray();
+      PluginDescription[] plugins = ApplicationManager.Manager.Plugins.Cast<PluginDescription>().ToArray();
+      applicationManager.PrepareApplicationDomain(apps, plugins);
+      if (files != null && files.Count() > 0)
+        applicationManager.LoadAssemblies(files);
+      return applicationDomain;
+    }
+
+    #endregion
+  }
+}
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Random/3.2/HeuristicLabRandomPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Random/3.2/HeuristicLabRandomPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Random/3.2/HeuristicLabRandomPlugin.cs	(revision 2587)
@@ -29,10 +29,10 @@
   /// Plugin class for HeuristicLab.Random plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Random-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Random-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Constraints-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Plugin("HeuristicLab.Random-3.2")]
+  [PluginFile("HeuristicLab.Random-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Constraints-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
   public class HeuristicLabRandomPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.RealVector/3.2/HeuristicLabRealVectorPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.RealVector/3.2/HeuristicLabRealVectorPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.RealVector/3.2/HeuristicLabRealVectorPlugin.cs	(revision 2587)
@@ -29,10 +29,10 @@
   /// Plugin class for HeuristicLab.RealVector plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.RealVector-3.2")]
-  [PluginFile(Filename = "HeuristicLab.RealVector-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
+  [Plugin("HeuristicLab.RealVector-3.2")]
+  [PluginFile("HeuristicLab.RealVector-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
   public class HeuristicLabRealVectorPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Routing.TSP/3.2/HeuristicLabRoutingTSPPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Routing.TSP/3.2/HeuristicLabRoutingTSPPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Routing.TSP/3.2/HeuristicLabRoutingTSPPlugin.cs	(revision 2587)
@@ -29,11 +29,11 @@
   /// Plugin class for HeuristicLab.Routing.TSP plugin
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Routing.TSP-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Routing.TSP-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Permutation-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Charting-3.2")]
+  [Plugin("HeuristicLab.Routing.TSP-3.2")]
+  [PluginFile("HeuristicLab.Routing.TSP-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Permutation-3.2")]
+  [PluginDependency("HeuristicLab.Charting-3.2")]
   public class HeuristicLabRoutingTSPPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SA/3.2/HeuristicLabSAPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SA/3.2/HeuristicLabSAPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SA/3.2/HeuristicLabSAPlugin.cs	(revision 2587)
@@ -27,16 +27,16 @@
   /// Plugin class for HeuristicLab.SA plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.SA-3.2")]
-  [PluginFile(Filename = "HeuristicLab.SA-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Logging-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection.OffspringSelection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
+  [Plugin("HeuristicLab.SA-3.2")]
+  [PluginFile("HeuristicLab.SA-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
+  [PluginDependency("HeuristicLab.Selection.OffspringSelection-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
   public class HeuristicLabSAPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SA/3.2/SAEditor.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SA/3.2/SAEditor.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SA/3.2/SAEditor.cs	(revision 2587)
@@ -117,25 +117,25 @@
       IView view = SA.ProblemInjector.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewSolutionGenerationButton_Click(object sender, EventArgs e) {
       IView view = SA.SolutionGenerator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewAnnealingSchemeButton_Click(object sender, EventArgs e) {
       IView view = SA.AnnealingScheme.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewMutationButton_Click(object sender, EventArgs e) {
       IView view = SA.Mutator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewEvaluationButton_Click(object sender, EventArgs e) {
       IView view = SA.Evaluator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void setProblemInitializationButton_Click(object sender, EventArgs e) {
@@ -188,5 +188,5 @@
       IEngine clone = (IEngine)SA.Engine.Clone();
       IEditor editor = ((IEditable)clone).CreateEditor();
-      PluginManager.ControlManager.ShowControl(editor);
+      ControlManager.Manager.ShowControl(editor);
     }
     #endregion
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SGA/3.2/HeuristicLabSGAPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SGA/3.2/HeuristicLabSGAPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SGA/3.2/HeuristicLabSGAPlugin.cs	(revision 2587)
@@ -29,15 +29,15 @@
   /// Plugin class for HeuristicLab.SGA plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.SGA-3.2")]
-  [PluginFile(Filename = "HeuristicLab.SGA-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Common-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Logging-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
+  [Plugin("HeuristicLab.SGA-3.2")]
+  [PluginFile("HeuristicLab.SGA-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
   public class HeuristicLabSGAPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SGA/3.2/SGAEditor.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SGA/3.2/SGAEditor.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SGA/3.2/SGAEditor.cs	(revision 2587)
@@ -117,30 +117,30 @@
       IView view = SGA.ProblemInjector.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewSolutionGenerationButton_Click(object sender, EventArgs e) {
       IView view = SGA.SolutionGenerator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewSelectionButton_Click(object sender, EventArgs e) {
       IView view = SGA.Selector.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewCrossoverButton_Click(object sender, EventArgs e) {
       IView view = SGA.Crossover.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewMutationButton_Click(object sender, EventArgs e) {
       IView view = SGA.Mutator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void viewEvaluationButton_Click(object sender, EventArgs e) {
       IView view = SGA.Evaluator.CreateView();
       if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
+        ControlManager.Manager.ShowControl(view);
     }
     private void setProblemInitializationButton_Click(object sender, EventArgs e) {
@@ -200,5 +200,5 @@
       IEngine clone = (IEngine)SGA.Engine.Clone();
       IEditor editor = ((IEditable)clone).CreateEditor();
-      PluginManager.ControlManager.ShowControl(editor);
+      ControlManager.Manager.ShowControl(editor);
     }
     #endregion
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SQLServerCompact/3.2/HeuristicLabSQLServerCompactPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SQLServerCompact/3.2/HeuristicLabSQLServerCompactPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SQLServerCompact/3.2/HeuristicLabSQLServerCompactPlugin.cs	(revision 2587)
@@ -7,14 +7,14 @@
 
 namespace HeuristicLab.SQLServerCompact {
-  [ClassInfo(Name = "HeuristicLab.SQLServerCompact-3.2")]
-  [PluginFile(Filename = "HeuristicLab.SQLServerCompact-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [PluginFile(Filename = "System.Data.SqlServerCe.dll", Filetype = PluginFileType.Assembly)]
-  [PluginFile(Filename = "sqlceca35.dll", Filetype = PluginFileType.Data)]
-  [PluginFile(Filename = "sqlcecompact35.dll", Filetype = PluginFileType.Data)]
-  [PluginFile(Filename = "sqlceer35EN.dll", Filetype = PluginFileType.Data)]
-  [PluginFile(Filename = "sqlceme35.dll", Filetype = PluginFileType.Data)]
-  [PluginFile(Filename = "sqlceoledb35.dll", Filetype = PluginFileType.Data)]
-  [PluginFile(Filename = "sqlceqp35.dll", Filetype = PluginFileType.Data)]
-  [PluginFile(Filename = "sqlcese35.dll", Filetype = PluginFileType.Data)] 
+  [Plugin("HeuristicLab.SQLServerCompact-3.2")]
+  [PluginFile("HeuristicLab.SQLServerCompact-3.2.dll", PluginFileType.Assembly)]
+  [PluginFile("System.Data.SqlServerCe.dll", PluginFileType.Assembly)]
+  [PluginFile("sqlceca35.dll", PluginFileType.Data)]
+  [PluginFile("sqlcecompact35.dll", PluginFileType.Data)]
+  [PluginFile("sqlceer35EN.dll", PluginFileType.Data)]
+  [PluginFile("sqlceme35.dll", PluginFileType.Data)]
+  [PluginFile("sqlceoledb35.dll", PluginFileType.Data)]
+  [PluginFile("sqlceqp35.dll", PluginFileType.Data)]
+  [PluginFile("sqlcese35.dll", PluginFileType.Data)] 
   public class HeuristicLabSQLServerCompactPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SQLite/3.2/HeuristicLabSQLitePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SQLite/3.2/HeuristicLabSQLitePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SQLite/3.2/HeuristicLabSQLitePlugin.cs	(revision 2587)
@@ -26,9 +26,9 @@
 
 namespace HeuristicLab.SQLite {
-  [ClassInfo(Name = "HeuristicLab.SQLite-3.2")]
-  [PluginFile(Filename = "HeuristicLab.SQLite-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [PluginFile(Filename = "System.Data.SQLite.dll", Filetype = PluginFileType.Assembly)]
-  [PluginFile(Filename = "SQLite License.txt", Filetype = PluginFileType.License)]
-  [PluginFile(Filename = "SQLite.NET.chm")]
+  [Plugin("HeuristicLab.SQLite-3.2")]
+  [PluginFile("HeuristicLab.SQLite-3.2.dll", PluginFileType.Assembly)]
+  [PluginFile("System.Data.SQLite.dll", PluginFileType.Assembly)]
+  [PluginFile("SQLite License.txt", PluginFileType.License)]
+  [PluginFile("SQLite.NET.chm", PluginFileType.Data)]
   public class HeuristicLabSQLitePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Scheduling.JSSP/3.2/HeuristicLabJSSPPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Scheduling.JSSP/3.2/HeuristicLabJSSPPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Scheduling.JSSP/3.2/HeuristicLabJSSPPlugin.cs	(revision 2587)
@@ -26,10 +26,10 @@
 
 namespace HeuristicLab.Scheduling.JSSP {
-  [ClassInfo(Name = "HeuristicLab.Scheduling.JSSP-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Scheduling.JSSP-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Permutation-3.2")]
+  [Plugin("HeuristicLab.Scheduling.JSSP-3.2")]
+  [PluginFile("HeuristicLab.Scheduling.JSSP-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Permutation-3.2")]
   public class HeuristicLabSchedulingJSPPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.ADODataAccess/3.2/ADODataAccessPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.ADODataAccess/3.2/ADODataAccessPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.ADODataAccess/3.2/ADODataAccessPlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.Security.DataAccess {
-  [ClassInfo(Name = "HeuristicLab.Security.ADODataAccess-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Security.ADODataAccess-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Security.ADODataAccess-3.2")]
+  [PluginFile("HeuristicLab.Security.ADODataAccess-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class SecurityDataAccessPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Contracts/3.2/SecurityContractsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Contracts/3.2/SecurityContractsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Contracts/3.2/SecurityContractsPlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.Security.Contracts {
-  [ClassInfo(Name = "HeuristicLab.Security.Contracts-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Security.Contracts-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Security.Contracts-3.2")]
+  [PluginFile("HeuristicLab.Security.Contracts-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class SecurityContractsPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/PermissionManager.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/PermissionManager.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/PermissionManager.cs	(revision 2587)
@@ -14,5 +14,13 @@
   public class PermissionManager : IPermissionManager{
 
-    private static ISessionFactory factory = ServiceLocator.GetSessionFactory();
+    private static ISessionFactory factory;
+    private static ISessionFactory Factory {
+      get {
+        // lazy initialization
+        if(factory==null) 
+          factory = ServiceLocator.GetSessionFactory();
+        return factory;
+      }      
+    }
 
     private static ISession session;
@@ -51,5 +59,5 @@
     public Guid Authenticate(String userName, String password) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
 
         password = getMd5Hash(password);
@@ -96,5 +104,5 @@
       if (existsSession) {
         try {
-          session = factory.GetSessionForCurrentThread();
+          session = Factory.GetSessionForCurrentThread();
           
           IPermissionOwnerAdapter permOwnerAdapter = session.GetDataAdapter<PermissionOwner, IPermissionOwnerAdapter>();
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/SecurityCorePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/SecurityCorePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/SecurityCorePlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.Security.Core {
-  [ClassInfo(Name = "HeuristicLab.Security.Core-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Security.Core-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Security.Core-3.2")]
+  [PluginFile("HeuristicLab.Security.Core-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class SecurityCorePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/SecurityCoreTest.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/SecurityCoreTest.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/SecurityCoreTest.cs	(revision 2587)
@@ -9,7 +9,5 @@
 
 namespace HeuristicLab.Security.Core {
-    [ClassInfo(Name = "Security Test App",
-        Description = "Test Application for the Security Service",
-        AutoRestart = false)]
+    [Application("Security Test App", "Test Application for the Security Service", false)]
   class SecurityCoreTest : ApplicationBase {
 
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/SecurityManager.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/SecurityManager.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/SecurityManager.cs	(revision 2587)
@@ -13,5 +13,13 @@
   public class SecurityManager : ISecurityManager {
 
-    private static ISessionFactory factory = ServiceLocator.GetSessionFactory();
+    private static ISessionFactory factory;
+    private static ISessionFactory Factory {
+      get {
+        // lazy initialization
+        if(factory==null)
+          factory = ServiceLocator.GetSessionFactory();
+        return factory;
+      }
+    }
 
     private ISession session;
@@ -24,5 +32,5 @@
     public User AddNewUser(User user) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
 
         IUserAdapter userAdapter = session.GetDataAdapter<User, IUserAdapter>();
@@ -46,5 +54,5 @@
     public User UpdateUser(User user) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IUserAdapter userAdapter = session.GetDataAdapter<User, IUserAdapter>();
 
@@ -67,5 +75,5 @@
     public bool RemoveUser(Guid userId) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IUserAdapter userAdapter = session.GetDataAdapter<User, IUserAdapter>();
         User user = userAdapter.GetById(userId);
@@ -88,5 +96,5 @@
     public ICollection<User> GetAllUsers() {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IUserAdapter userAdapter = session.GetDataAdapter<User, IUserAdapter>();
 
@@ -107,5 +115,5 @@
     public User GetUserByName(string name) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IUserAdapter userAdapter = session.GetDataAdapter<User, IUserAdapter>();
 
@@ -126,5 +134,5 @@
     public User GetUserByLogin(string login) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IUserAdapter userAdapter = session.GetDataAdapter<User, IUserAdapter>();
 
@@ -145,5 +153,5 @@
     public UserGroup AddNewUserGroup(UserGroup userGroup) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
 
         IUserGroupAdapter userGroupAdapter = session.GetDataAdapter<UserGroup, IUserGroupAdapter>();
@@ -167,5 +175,5 @@
     public UserGroup UpdateUserGroup(UserGroup userGroup) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
 
         IUserGroupAdapter userGroupAdapter = session.GetDataAdapter<UserGroup, IUserGroupAdapter>();
@@ -189,5 +197,5 @@
     public bool RemoveUserGroup(Guid userGroupId) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
 
         IUserGroupAdapter userGroupAdapter = session.GetDataAdapter<UserGroup, IUserGroupAdapter>();
@@ -211,5 +219,5 @@
     public ICollection<UserGroup> GetAllUserGroups() {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IUserGroupAdapter userGroupAdapter = session.GetDataAdapter<UserGroup, IUserGroupAdapter>();
 
@@ -230,5 +238,5 @@
     public UserGroup GetUserGroupByName(string name) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IUserGroupAdapter userGroupAdapter = session.GetDataAdapter<UserGroup, IUserGroupAdapter>();
 
@@ -249,5 +257,5 @@
     public PermissionOwner UpdatePermissionOwner(PermissionOwner permissionOwner) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
 
         IPermissionOwnerAdapter permOwnerAdapter = session.GetDataAdapter<PermissionOwner, IPermissionOwnerAdapter>();
@@ -272,5 +280,5 @@
     public bool AddPermissionOwnerToGroup(Guid userGroupId, Guid permissionOwnerId) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         ITransaction transaction = session.BeginTransaction();
 
@@ -305,5 +313,5 @@
     public bool RemovePermissionOwnerFromGroup(Guid userGroupId, Guid permissionOwnerId) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         ITransaction transaction = session.BeginTransaction();
 
@@ -338,5 +346,5 @@
     public bool GrantPermission(Guid permissionOwnerId, Guid permissionId, Guid entityId) {
       try {
-        session = factory.GetSessionForCurrentThread();                         
+        session = Factory.GetSessionForCurrentThread();                         
         IPermissionAdapter permissionAdapter = session.GetDataAdapter<Permission, IPermissionAdapter>();
 
@@ -357,5 +365,5 @@
     public Permission GetPermissionById(Guid permissionId) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
 
         IPermissionAdapter permissionAdapter = session.GetDataAdapter<Permission, IPermissionAdapter>();
@@ -378,5 +386,5 @@
     public bool RevokePermission(Guid permissionOwnerId, Guid permissionId, Guid entityId) {
       try {
-        session = factory.GetSessionForCurrentThread();     
+        session = Factory.GetSessionForCurrentThread();     
         IPermissionAdapter permissionAdapter = session.GetDataAdapter<Permission, IPermissionAdapter>();
  
@@ -392,5 +400,5 @@
     public Permission AddPermission(Permission permission) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IPermissionAdapter permissionAdapter = session.GetDataAdapter<Permission, IPermissionAdapter>();
 
@@ -411,5 +419,5 @@
     public bool RemovePermission(Guid permissionId) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IPermissionAdapter permissionAdapter = session.GetDataAdapter<Permission, IPermissionAdapter>();
 
@@ -429,5 +437,5 @@
     public Permission UpdatePermission(Permission permission) {
       try {
-        session = factory.GetSessionForCurrentThread();
+        session = Factory.GetSessionForCurrentThread();
         IPermissionAdapter permissionAdapter = session.GetDataAdapter<Permission, IPermissionAdapter>();
 
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/ServiceLocator.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/ServiceLocator.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Core/3.2/ServiceLocator.cs	(revision 2587)
@@ -10,7 +10,4 @@
 namespace HeuristicLab.Security.Core {
   class ServiceLocator {
-    private static DiscoveryService discoveryService =
-      new DiscoveryService();
-
     private static ISessionFactory sessionFactory = null;
 
@@ -23,5 +20,5 @@
       if (sessionFactory == null) {
         sessionFactory =
-          discoveryService.GetInstances<ISessionFactory>()[0];
+          ApplicationManager.Manager.GetInstances<ISessionFactory>().First();
 
         sessionFactory.DbConnectionType =
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.DataAccess/3.2/SecurityDataAccessPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.DataAccess/3.2/SecurityDataAccessPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.DataAccess/3.2/SecurityDataAccessPlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.Security.DataAccess {
-  [ClassInfo(Name = "HeuristicLab.Security.DataAccess-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Security.DataAccess-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Security.DataAccess-3.2")]
+  [PluginFile("HeuristicLab.Security.DataAccess-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class SecurityDataAccessPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Server/3.2/SecurityServerApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Server/3.2/SecurityServerApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Server/3.2/SecurityServerApplication.cs	(revision 2587)
@@ -6,4 +6,5 @@
 using System.ServiceModel.Description;
 using System.Net;
+using System.Linq;
 using HeuristicLab.Security.Contracts.Interfaces;
 using System.Windows.Forms;
@@ -11,15 +12,12 @@
 namespace HeuristicLab.Security.Server {
 
-  [ClassInfo(Name = "Security Server",
-  Description = "Server application for the security.",
-  AutoRestart = true)]
+  [Application("Security Server", "Server application for the security.", true)]
   public class SecurityServerApplication : ApplicationBase {
     public const string STR_PermissionManager = "PermissionManager";
-    public const string STR_SecurityManager = "SecurityManager";   
+    public const string STR_SecurityManager = "SecurityManager";
 
     int DEFAULT_PORT_SM = 9111;
     int DEFAULT_PORT_PM = 9112;
 
-    private DiscoveryService discService = new DiscoveryService();
     private Dictionary<string, ServiceHost> runningServices = new Dictionary<string, ServiceHost>();
     private NetTcpBinding binding = (NetTcpBinding)HeuristicLab.Hive.Contracts.WcfSettings.GetBinding();
@@ -30,5 +28,5 @@
       All
     }
-    
+
     private bool AddMexEndpoint(ServiceHost serviceHost) {
       if (serviceHost != null) {
@@ -48,12 +46,12 @@
       Uri uriTcp;
       String result = "";
-      ISecurityManager[] securityManagerInstances = discService.GetInstances<ISecurityManager>();
-      IPermissionManager[] permissionManagerInstances = discService.GetInstances<IPermissionManager>();
+      IEnumerable<ISecurityManager> securityManagerInstances = ApplicationManager.Manager.GetInstances<ISecurityManager>();
+      IEnumerable<IPermissionManager> permissionManagerInstances = ApplicationManager.Manager.GetInstances<IPermissionManager>();
       ServiceHost serviceHost = null;
       switch (svc) {
         case Services.PermissionManager:
-          if (permissionManagerInstances.Length > 0) {
-            uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/SecurityServer/"); 
-            serviceHost = new ServiceHost(permissionManagerInstances[0].GetType(), uriTcp);
+          if (permissionManagerInstances.Count() > 0) {
+            uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/SecurityServer/");
+            serviceHost = new ServiceHost(permissionManagerInstances.First().GetType(), uriTcp);
             serviceHost.AddServiceEndpoint(typeof(IPermissionManager), binding, STR_PermissionManager);
             curServiceHost = STR_PermissionManager;
@@ -62,7 +60,7 @@
           break;
         case Services.SecurityManager:
-          if (securityManagerInstances.Length > 0) {
+          if (securityManagerInstances.Count() > 0) {
             uriTcp = new Uri("net.tcp://" + ipAddress + ":" + port + "/SecurityServer/");
-            serviceHost = new ServiceHost(securityManagerInstances[0].GetType(), uriTcp);
+            serviceHost = new ServiceHost(securityManagerInstances.First().GetType(), uriTcp);
             serviceHost.AddServiceEndpoint(typeof(ISecurityManager), binding, STR_SecurityManager);
             curServiceHost = STR_SecurityManager;
@@ -77,5 +75,5 @@
       if ((serviceHost != null) && (!String.IsNullOrEmpty(curServiceHost))) {
         AddMexEndpoint(serviceHost);
-    //    WcfSettings.SetServiceCertificate(serviceHost);
+        //    WcfSettings.SetServiceCertificate(serviceHost);
         serviceHost.Open();
         runningServices.Add(curServiceHost, serviceHost);
@@ -112,5 +110,5 @@
             break;
       }
-      
+
       //Start services and record their base address
       Dictionary<string, String> baseAddrDict = new Dictionary<string, String>();
@@ -126,4 +124,4 @@
       StopService(Services.All);
     }
-  }                                                                                      
+  }
 }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Server/3.2/SecurityServerPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Server/3.2/SecurityServerPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Security.Server/3.2/SecurityServerPlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.Security.Server {
-  [ClassInfo(Name = "HeuristicLab.Security.Server-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Security.Server-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Security.Server-3.2")]
+  [PluginFile("HeuristicLab.Security.Server-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class SecurityServerPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Selection.OffspringSelection/3.2/HeuristicLabSelectionOffspringSelectionPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Selection.OffspringSelection/3.2/HeuristicLabSelectionOffspringSelectionPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Selection.OffspringSelection/3.2/HeuristicLabSelectionOffspringSelectionPlugin.cs	(revision 2587)
@@ -29,8 +29,8 @@
   /// Plugin class for HeuristicLab.Selection.OffspringSelection plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Selection.OffspringSelection-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Selection.OffspringSelection-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
+  [Plugin("HeuristicLab.Selection.OffspringSelection-3.2")]
+  [PluginFile("HeuristicLab.Selection.OffspringSelection-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
   public class HeuristicLabSelectionOffspringSelectionPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Selection.Uncertainty/3.2/UncertaintyPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Selection.Uncertainty/3.2/UncertaintyPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Selection.Uncertainty/3.2/UncertaintyPlugin.cs	(revision 2587)
@@ -27,12 +27,12 @@
 
 namespace HeuristicLab.Selection.Uncertainty {
-  [ClassInfo(Name = "HeuristicLab.Selection.Uncertainty-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Selection.Uncertainty-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.StatisticalAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Tracing-3.2")]
+  [Plugin("HeuristicLab.Selection.Uncertainty-3.2")]
+  [PluginFile("HeuristicLab.Selection.Uncertainty-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.StatisticalAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Tracing-3.2")]
   public class UncertaintyPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Selection/3.2/HeuristicLabSelectionPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Selection/3.2/HeuristicLabSelectionPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Selection/3.2/HeuristicLabSelectionPlugin.cs	(revision 2587)
@@ -29,9 +29,9 @@
   /// Plugin class for HeuristicLab.Selection plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.Selection-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Selection-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Plugin("HeuristicLab.Selection-3.2")]
+  [PluginFile("HeuristicLab.Selection-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
   public class HeuristicLabSelectionPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SequentialEngine/3.2/HeuristicLabSequentialEnginePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SequentialEngine/3.2/HeuristicLabSequentialEnginePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SequentialEngine/3.2/HeuristicLabSequentialEnginePlugin.cs	(revision 2587)
@@ -29,7 +29,7 @@
   /// Plugin class for HeuristicLab.SequentialEngine plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.SequentialEngine-3.2")]
-  [PluginFile(Filename = "HeuristicLab.SequentialEngine-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.SequentialEngine-3.2")]
+  [PluginFile("HeuristicLab.SequentialEngine-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class HeuristicLabSequentialEnginePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SimOpt/3.2/HeuristicLabSimOptPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SimOpt/3.2/HeuristicLabSimOptPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SimOpt/3.2/HeuristicLabSimOptPlugin.cs	(revision 2587)
@@ -27,13 +27,13 @@
 
 namespace HeuristicLab.SimOpt {
-  [ClassInfo(Name = "HeuristicLab.SimOpt-3.2")]
-  [PluginFile(Filename = "HeuristicLab.SimOpt-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Constraints-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Evolutionary-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
+  [Plugin("HeuristicLab.SimOpt-3.2")]
+  [PluginFile("HeuristicLab.SimOpt-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
+  [PluginDependency("HeuristicLab.Constraints-3.2")]
+  [PluginDependency("HeuristicLab.Evolutionary-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
   public class HeuristicLabSimOptPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SimOpt/3.2/SimOptProblemInjectorView.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SimOpt/3.2/SimOptProblemInjectorView.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SimOpt/3.2/SimOptProblemInjectorView.cs	(revision 2587)
@@ -71,11 +71,9 @@
     private void UpdateDataTypeTreeView() {
       dataTypeTreeView.Nodes.Clear();
-      DiscoveryService discoveryService = new DiscoveryService();
-      foreach (PluginInfo plugin in discoveryService.Plugins) {
+      foreach (IPluginDescription plugin in ApplicationManager.Manager.Plugins) {
         TreeNode pluginNode = new TreeNode(plugin.Name);
         pluginNode.Tag = null;
 
-        Type[] types = discoveryService.GetTypes(typeof(IObjectData), plugin);
-        foreach (Type type in types) {
+        foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IObjectData), plugin)) {
           if (!type.IsAbstract) {
             TreeNode itemNode = new TreeNode();
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.StatisticalAnalysis/3.2/HeuristicLabStatisticalAnalysisPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.StatisticalAnalysis/3.2/HeuristicLabStatisticalAnalysisPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.StatisticalAnalysis/3.2/HeuristicLabStatisticalAnalysisPlugin.cs	(revision 2587)
@@ -27,9 +27,9 @@
 
 namespace HeuristicLab.StatisticalAnalysis {
-  [ClassInfo(Name = "HeuristicLab.StatisticalAnalysis-3.2")]
-  [PluginFile(Filename = "HeuristicLab.StatisticalAnalysis-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
+  [Plugin("HeuristicLab.StatisticalAnalysis-3.2")]
+  [PluginFile("HeuristicLab.StatisticalAnalysis-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
   public class HeuristicLabStatisticalAnalysisPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.SupportVectorMachines/3.2/HeuristicLabSupportVectorMachinesPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.SupportVectorMachines/3.2/HeuristicLabSupportVectorMachinesPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.SupportVectorMachines/3.2/HeuristicLabSupportVectorMachinesPlugin.cs	(revision 2587)
@@ -27,16 +27,16 @@
 
 namespace HeuristicLab.SupportVectorMachines {
-  [ClassInfo(Name = "HeuristicLab.SupportVectorMachines-3.2")]
-  [PluginFile(Filename = "HeuristicLab.SupportVectorMachines-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [PluginFile(Filename = "LibSVM.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Modeling-3.2")]
-  [Dependency(Dependency = "HeuristicLab.SequentialEngine-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Logging-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators.Programmable-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Random-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Selection-3.2")]
+  [Plugin("HeuristicLab.SupportVectorMachines-3.2")]
+  [PluginFile("HeuristicLab.SupportVectorMachines-3.2.dll", PluginFileType.Assembly)]
+  [PluginFile("LibSVM.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.DataAnalysis-3.2")]
+  [PluginDependency("HeuristicLab.Modeling-3.2")]
+  [PluginDependency("HeuristicLab.SequentialEngine-3.2")]
+  [PluginDependency("HeuristicLab.Logging-3.2")]
+  [PluginDependency("HeuristicLab.Operators.Programmable-3.2")]
+  [PluginDependency("HeuristicLab.Random-3.2")]
+  [PluginDependency("HeuristicLab.Selection-3.2")]
   public class HeuristicLabSupportVectorMachinesPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.TestFunctions/3.2/HeuristicLabTestFunctionsPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.TestFunctions/3.2/HeuristicLabTestFunctionsPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.TestFunctions/3.2/HeuristicLabTestFunctionsPlugin.cs	(revision 2587)
@@ -29,9 +29,9 @@
   /// Plugin class for HeuristicLab.TestFunctions plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.TestFunctions-3.2")]
-  [PluginFile(Filename = "HeuristicLab.TestFunctions-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
-  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Plugin("HeuristicLab.TestFunctions-3.2")]
+  [PluginFile("HeuristicLab.TestFunctions-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  [PluginDependency("HeuristicLab.Data-3.2")]
+  [PluginDependency("HeuristicLab.Operators-3.2")]
   public class HeuristicLabTestFunctionsPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.ThreadParallelEngine/3.2/HeuristicLabThreadParallelEnginePlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.ThreadParallelEngine/3.2/HeuristicLabThreadParallelEnginePlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.ThreadParallelEngine/3.2/HeuristicLabThreadParallelEnginePlugin.cs	(revision 2587)
@@ -29,7 +29,7 @@
   /// Plugin class for HeuristicLab.ThreadParallelEngine plugin.
   /// </summary>
-  [ClassInfo(Name = "HeuristicLab.ThreadParallelEngine-3.2")]
-  [PluginFile(Filename = "HeuristicLab.ThreadParallelEngine-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.ThreadParallelEngine-3.2")]
+  [PluginFile("HeuristicLab.ThreadParallelEngine-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class HeuristicLabThreadParallelEnginePlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Tracing/3.2/HeuristicLabTracingPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Tracing/3.2/HeuristicLabTracingPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Tracing/3.2/HeuristicLabTracingPlugin.cs	(revision 2587)
@@ -3,9 +3,9 @@
 namespace HeuristicLab.Tracing {
 
-  [ClassInfo(Name = "HeuristicLab.Tracing-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Tracing-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [PluginFile(Filename = "log4net.dll", Filetype = PluginFileType.Assembly)]
-  [PluginFile(Filename = "log4net licence.txt", Filetype = PluginFileType.License)]
-  [PluginFile(Filename = "HeuristicLab.log4net.xml", Filetype = PluginFileType.Data)]
+  [Plugin("HeuristicLab.Tracing-3.2")]
+  [PluginFile("HeuristicLab.Tracing-3.2.dll", PluginFileType.Assembly)]
+  [PluginFile("log4net.dll", PluginFileType.Assembly)]
+  [PluginFile("log4net licence.txt", PluginFileType.License)]
+  [PluginFile("HeuristicLab.log4net.xml", PluginFileType.Data)]
   public class HeuristicLabPersistencePlugin : PluginBase {}
 
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Tracing/3.2/HiveLogger.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Tracing/3.2/HiveLogger.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Tracing/3.2/HiveLogger.cs	(revision 2587)
@@ -14,7 +14,5 @@
       if (string.IsNullOrEmpty(Settings.Default.TracingLog4netConfigFile)) {
         Settings.Default.TracingLog4netConfigFile =
-          Path.Combine(
-            PluginInfrastructure.Properties.Settings.Default.PluginDir,
-            "HeuristicLab.Hive.log4net.xml");
+            "HeuristicLab.Hive.log4net.xml";
       }
       XmlConfigurator.ConfigureAndWatch(
@@ -26,5 +24,5 @@
       Configure();
       StackFrame frame = new StackFrame(nParents + 1);
-      return LogManager.GetLogger(frame.GetMethod().DeclaringType);      
+      return LogManager.GetLogger(frame.GetMethod().DeclaringType);
     }
 
@@ -47,5 +45,5 @@
     }
 
-    public static void Error(object message) {      
+    public static void Error(object message) {
       GetDefaultLogger(1).Error(message);
     }
@@ -62,10 +60,10 @@
     public static void Info(Type type, object message) {
       Configure();
-      LogManager.GetLogger(type).Info(message);      
+      LogManager.GetLogger(type).Info(message);
     }
 
     public static void Warn(Type type, object message) {
       Configure();
-      LogManager.GetLogger(type).Warn(message);      
+      LogManager.GetLogger(type).Warn(message);
     }
 
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Tracing/3.2/Logger.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Tracing/3.2/Logger.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Tracing/3.2/Logger.cs	(revision 2587)
@@ -13,11 +13,9 @@
 
     protected static void Configure() {
-      if ( IsConfigured ) return;
+      if (IsConfigured) return;
       IsConfigured = true;
       if (string.IsNullOrEmpty(Settings.Default.TracingLog4netConfigFile)) {
-        Settings.Default.TracingLog4netConfigFile = 
-          Path.Combine(
-            PluginInfrastructure.Properties.Settings.Default.PluginDir,
-            "HeuristicLab.log4net.xml");
+        Settings.Default.TracingLog4netConfigFile =
+            "HeuristicLab.log4net.xml";
       }
       XmlConfigurator.ConfigureAndWatch(
@@ -29,5 +27,5 @@
       Configure();
       StackFrame frame = new StackFrame(nParents + 1);
-      return LogManager.GetLogger(frame.GetMethod().DeclaringType);      
+      return LogManager.GetLogger(frame.GetMethod().DeclaringType);
     }
 
@@ -50,5 +48,5 @@
     }
 
-    public static void Error(object message) {      
+    public static void Error(object message) {
       GetDefaultLogger(1).Error(message);
     }
@@ -65,10 +63,10 @@
     public static void Info(Type type, object message) {
       Configure();
-      LogManager.GetLogger(type).Info(message);      
+      LogManager.GetLogger(type).Info(message);
     }
 
     public static void Warn(Type type, object message) {
       Configure();
-      LogManager.GetLogger(type).Warn(message);      
+      LogManager.GetLogger(type).Warn(message);
     }
 
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Visualization.Test/3.2/HeuristicLabVisualizationTestApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Visualization.Test/3.2/HeuristicLabVisualizationTestApplication.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Visualization.Test/3.2/HeuristicLabVisualizationTestApplication.cs	(revision 2587)
@@ -27,5 +27,5 @@
 
 namespace HeuristicLab.Visualization.Test {
-  [ClassInfo(Name = "HeuristicLab Data Visualization", Description="Test application for the HeuristicLab data visualization framework.")]
+  [Application("HeuristicLab Data Visualization", "Test application for the HeuristicLab data visualization framework.")]
   class HeuristicLabVisualizationTestApplication : ApplicationBase {
     public override void Run() {
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Visualization.Test/3.2/HeuristicLabVisualizationTestPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Visualization.Test/3.2/HeuristicLabVisualizationTestPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Visualization.Test/3.2/HeuristicLabVisualizationTestPlugin.cs	(revision 2587)
@@ -26,7 +26,7 @@
 
 namespace HeuristicLab.Visualization.Test {
-  [ClassInfo(Name = "HeuristicLab.Visualization.Test-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Visualization.Test-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Visualization-3.2")]
+  [Plugin("HeuristicLab.Visualization.Test-3.2")]
+  [PluginFile("HeuristicLab.Visualization.Test-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Visualization-3.2")]
   public class HeuristicLabVisualizationTestPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.Visualization/3.2/HeuristicLabVisualizationPlugin.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.Visualization/3.2/HeuristicLabVisualizationPlugin.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.Visualization/3.2/HeuristicLabVisualizationPlugin.cs	(revision 2587)
@@ -23,7 +23,7 @@
 
 namespace HeuristicLab.Visualization {
-  [ClassInfo(Name = "HeuristicLab.Visualization-3.2")]
-  [PluginFile(Filename = "HeuristicLab.Visualization-3.2.dll", Filetype = PluginFileType.Assembly)]
-  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Plugin("HeuristicLab.Visualization-3.2")]
+  [PluginFile("HeuristicLab.Visualization-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
   public class HeuristicLabVisualizationPlugin : PluginBase {
   }
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab/CopyAssemblies.cmd
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/CopyAssemblies.cmd	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab/CopyAssemblies.cmd	(revision 2587)
@@ -1,128 +1,122 @@
 copy "%SolutionDir%\HeuristicLab.PluginInfrastructure.GUI\ICSharpCode.SharpZipLib License.txt" .\
 
-rmdir plugins /s /q
-mkdir plugins
-mkdir plugins\cache
-mkdir plugins\temp
-mkdir plugins\backup
-
-copy "%SolutionDir%\ALGLIB\%Outdir%\ALGLIB.dll" .\plugins
-copy "%SolutionDir%\ALGLIB\%Outdir%\ALGLIB License.txt" .\plugins
-copy "%SolutionDir%\HeuristicLab.AdvancedOptimizationFrontend\3.2\%Outdir%\HeuristicLab.AdvancedOptimizationFrontend-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.ArtificialNeuralNetworks\3.2\%Outdir%\HeuristicLab.ArtificialNeuralNetworks-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Assignment.QAP\3.2\%Outdir%\HeuristicLab.Assignment.QAP-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.BitVector\3.2\%Outdir%\HeuristicLab.BitVector-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.BackgroundProcessing\3.2\%Outdir%\HeuristicLab.BackgroundProcessing-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.CEDMA.Server\3.3\%Outdir%\HeuristicLab.CEDMA.Server-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Charting\3.2\%Outdir%\HeuristicLab.Charting-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Charting.Data\3.2\%Outdir%\HeuristicLab.Charting.Data-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Common\3.2\%Outdir%\HeuristicLab.Common-3.2.dll" .\plugins 
-copy "%SolutionDir%\HeuristicLab.Common.Resources\3.2\%Outdir%\HeuristicLab.Common.Resources-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Communication.Data\3.2\%Outdir%\HeuristicLab.Communication.Data-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Communication.Operators\3.2\%Outdir%\HeuristicLab.Communication.Operators-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Core\3.2\%Outdir%\HeuristicLab.Core-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Constraints\3.2\%Outdir%\HeuristicLab.Constraints-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Data\3.2\%Outdir%\HeuristicLab.Data-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.DataAccess\3.2\%Outdir%\HeuristicLab.DataAccess-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.DataAccess.ADOHelper\3.2\%Outdir%\HeuristicLab.DataAccess.ADOHelper-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.DataAnalysis\3.2\%Outdir%\HeuristicLab.DataAnalysis-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.DistributedEngine\3.2\%Outdir%\HeuristicLab.DistributedEngine-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.ES\3.2\%Outdir%\HeuristicLab.ES-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Evolutionary\3.2\%Outdir%\HeuristicLab.Evolutionary-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP\3.3\%Outdir%\HeuristicLab.GP-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP.Algorithms\3.2\%Outdir%\HeuristicLab.GP.Algorithms-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP.Interfaces\3.3\%Outdir%\HeuristicLab.GP.Interfaces-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP.Operators\3.3\%Outdir%\HeuristicLab.GP.Operators-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP.Boolean\3.3\%Outdir%\HeuristicLab.GP.Boolean-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP.SantaFe\3.3\%Outdir%\HeuristicLab.GP.SantaFe-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP.StructureIdentification\3.3\%Outdir%\HeuristicLab.GP.StructureIdentification-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP.StructureIdentification.Classification\3.3\%Outdir%\HeuristicLab.GP.StructureIdentification.Classification-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP.StructureIdentification.ConditionalEvaluation\3.3\%Outdir%\HeuristicLab.GP.StructureIdentification.ConditionalEvaluation-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.GP.StructureIdentification.TimeSeries\3.3\%Outdir%\HeuristicLab.GP.StructureIdentification.TimeSeries-3.3.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Grid\3.2\%Outdir%\HeuristicLab.Grid-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Grid.HiveBridge\3.2\%Outdir%\HeuristicLab.Grid.HiveBridge-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Client.Common\3.2\%Outdir%\HeuristicLab.Hive.Client.Common-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Client.Communication\3.2\%Outdir%\HeuristicLab.Hive.Client.Communication-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Client.Console\3.2\%Outdir%\HeuristicLab.Hive.Client.Console-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Client.Console\3.2\%Outdir%\ZedGraph.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Client.Console\3.2\%Outdir%\Calendar.DayView.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Client.Core\3.2\%Outdir%\HeuristicLab.Hive.Client.Core-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Client.ExecutionEngine\3.2\%Outdir%\HeuristicLab.Hive.Client.ExecutionEngine-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Engine\3.2\%Outdir%\HeuristicLab.Hive.Engine-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.JobBase\3.2\%Outdir%\HeuristicLab.Hive.JobBase-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Server\3.2\%Outdir%\HeuristicLab.Hive.Server-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Server.ADODataAccess\3.2\%Outdir%\HeuristicLab.Hive.Server.ADODataAccess-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Server.Console\3.2\%Outdir%\HeuristicLab.Hive.Server.Console-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Server.Core\3.2\%Outdir%\HeuristicLab.Hive.Server.Core-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Server.Core\3.2\%Outdir%\HeuristicLab.Hive.Contracts-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Server.Core\3.2\%Outdir%\Authorization\*.xml" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Server.DataAccess\3.2\%Outdir%\HeuristicLab.Hive.Server.DataAccess-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Hive.Server.Scheduler\3.2\%Outdir%\HeuristicLab.Hive.Server.Scheduler-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.IntVector\3.2\%Outdir%\HeuristicLab.IntVector-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.LinearRegression\3.2\%Outdir%\HeuristicLab.LinearRegression-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.LinearRegression\3.2\%Outdir%\ALGLIB License.txt" .\plugins
-copy "%SolutionDir%\HeuristicLab.Logging\3.2\%Outdir%\HeuristicLab.Logging-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.MainForm\3.2\%Outdir%\HeuristicLab.MainForm-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.MainForm.Test\3.2\%Outdir%\HeuristicLab.MainForm.Test-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.MainForm.WindowsForms\3.2\%Outdir%\HeuristicLab.MainForm.WindowsForms-3.2.dll" .\plugins
-copy "%SolutionDir%\WinFormsUI\%Outdir%\WeifenLuo.WinFormsUI.Docking.dll" .\plugins
-copy "%SolutionDir%\WinFormsUI\%Outdir%\WeifenLuo.WinFormsUI.Docking License.txt" .\plugins
-copy "%SolutionDir%\HeuristicLab.Modeling\3.2\%Outdir%\HeuristicLab.Modeling-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Modeling.Database\3.2\%Outdir%\HeuristicLab.Modeling.Database-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Modeling.Database.SQLServerCompact\3.2\%Outdir%\HeuristicLab.Modeling.Database.SQLServerCompact-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Operators\3.2\%Outdir%\HeuristicLab.Operators-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Operators.Metaprogramming\3.2\%Outdir%\HeuristicLab.Operators.Metaprogramming-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Operators.Programmable\3.2\%Outdir%\HeuristicLab.Operators.Programmable-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Operators.Stopwatch\3.2\%Outdir%\HeuristicLab.Operators.Stopwatch-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.OptimizationFrontend\3.2\%Outdir%\HeuristicLab.OptimizationFrontend-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Permutation\3.2\%Outdir%\HeuristicLab.Permutation-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Random\3.2\%Outdir%\HeuristicLab.Random-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.RealVector\3.2\%Outdir%\HeuristicLab.RealVector-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Routing.TSP\3.2\%Outdir%\HeuristicLab.Routing.TSP-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.SA\3.2\%Outdir%\HeuristicLab.SA-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Scheduling.JSSP\3.2\%Outdir%\HeuristicLab.Scheduling.JSSP-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Selection\3.2\%Outdir%\HeuristicLab.Selection-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Selection.OffspringSelection\3.2\%Outdir%\HeuristicLab.Selection.OffspringSelection-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Selection.Uncertainty\3.2\%Outdir%\HeuristicLab.Selection.Uncertainty-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.SequentialEngine\3.2\%Outdir%\HeuristicLab.SequentialEngine-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.SGA\3.2\%Outdir%\HeuristicLab.SGA-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.FixedOperators\3.2\%Outdir%\HeuristicLab.FixedOperators-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.SimOpt\3.2\%Outdir%\HeuristicLab.SimOpt-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.SQLite\3.2\%Outdir%\HeuristicLab.SQLite-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.SQLite\3.2\SQLite License.txt" .\plugins
-copy "%SolutionDir%\HeuristicLab.SQLite\3.2\SQLite.NET.chm" .\plugins
-copy "%SolutionDir%\HeuristicLAb.SQLServerCompact\3.2\%Outdir%\HeuristicLab.SQLServerCompact-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLAb.SQLServerCompact\3.2\%Outdir%\System.Data.SqlServerCe.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.StatisticalAnalysis\3.2\%Outdir%\HeuristicLab.StatisticalAnalysis-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.SupportVectorMachines\3.2\%Outdir%\HeuristicLab.SupportVectorMachines-3.2.dll" .\plugins
-copy "%SolutionDir%\LibSVM\%Outdir%\LibSVM.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.TestFunctions\3.2\%Outdir%\HeuristicLab.TestFunctions-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.ThreadParallelEngine\3.2\%Outdir%\HeuristicLab.ThreadParallelEngine-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Tracing\3.2\%Outdir%\HeuristicLab.Tracing-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Tracing\3.2\%Outdir%\log4net.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Tracing\3.2\log4net licence.txt" .\plugins
-copy "%SolutionDir%\HeuristicLab.Tracing\3.2\HeuristicLab.log4net.xml" .\plugins
-copy "%SolutionDir%\HeuristicLab.Tracing\3.2\HeuristicLab.Hive.log4net.xml" .\plugins
-copy "%SolutionDir%\HeuristicLab.Visualization\3.2\%Outdir%\HeuristicLab.Visualization-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Visualization.Test\3.2\%Outdir%\HeuristicLab.Visualization.Test-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Security.Contracts\3.2\%Outdir%\HeuristicLab.Security.Contracts-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Security.Core\3.2\%Outdir%\HeuristicLab.Security.Core-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Security.DataAccess\3.2\%Outdir%\HeuristicLab.Security.DataAccess-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Security.ADODataAccess\3.2\%Outdir%\HeuristicLab.Security.ADODataAccess-3.2.dll" .\plugins
-copy "%SolutionDir%\HeuristicLab.Security.Server\3.2\%Outdir%\HeuristicLab.Security.Server-3.2.dll" .\plugins
+copy "%SolutionDir%\ALGLIB\%Outdir%\ALGLIB.dll" .\
+copy "%SolutionDir%\ALGLIB\%Outdir%\ALGLIB License.txt" .\
+copy "%SolutionDir%\HeuristicLab.AdvancedOptimizationFrontend\3.2\%Outdir%\HeuristicLab.AdvancedOptimizationFrontend-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.ArtificialNeuralNetworks\3.2\%Outdir%\HeuristicLab.ArtificialNeuralNetworks-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Assignment.QAP\3.2\%Outdir%\HeuristicLab.Assignment.QAP-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.BitVector\3.2\%Outdir%\HeuristicLab.BitVector-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.BackgroundProcessing\3.2\%Outdir%\HeuristicLab.BackgroundProcessing-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.CEDMA.Server\3.3\%Outdir%\HeuristicLab.CEDMA.Server-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.Charting\3.2\%Outdir%\HeuristicLab.Charting-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Charting.Data\3.2\%Outdir%\HeuristicLab.Charting.Data-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Common\3.2\%Outdir%\HeuristicLab.Common-3.2.dll" .\ 
+copy "%SolutionDir%\HeuristicLab.Common.Resources\3.2\%Outdir%\HeuristicLab.Common.Resources-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Communication.Data\3.2\%Outdir%\HeuristicLab.Communication.Data-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Communication.Operators\3.2\%Outdir%\HeuristicLab.Communication.Operators-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Core\3.2\%Outdir%\HeuristicLab.Core-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Constraints\3.2\%Outdir%\HeuristicLab.Constraints-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Data\3.2\%Outdir%\HeuristicLab.Data-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.DataAccess\3.2\%Outdir%\HeuristicLab.DataAccess-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.DataAccess.ADOHelper\3.2\%Outdir%\HeuristicLab.DataAccess.ADOHelper-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.DataAnalysis\3.2\%Outdir%\HeuristicLab.DataAnalysis-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.DistributedEngine\3.2\%Outdir%\HeuristicLab.DistributedEngine-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.ES\3.2\%Outdir%\HeuristicLab.ES-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Evolutionary\3.2\%Outdir%\HeuristicLab.Evolutionary-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP\3.3\%Outdir%\HeuristicLab.GP-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP.Algorithms\3.2\%Outdir%\HeuristicLab.GP.Algorithms-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP.Interfaces\3.3\%Outdir%\HeuristicLab.GP.Interfaces-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP.Operators\3.3\%Outdir%\HeuristicLab.GP.Operators-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP.Boolean\3.3\%Outdir%\HeuristicLab.GP.Boolean-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP.SantaFe\3.3\%Outdir%\HeuristicLab.GP.SantaFe-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP.StructureIdentification\3.3\%Outdir%\HeuristicLab.GP.StructureIdentification-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP.StructureIdentification.Classification\3.3\%Outdir%\HeuristicLab.GP.StructureIdentification.Classification-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP.StructureIdentification.ConditionalEvaluation\3.3\%Outdir%\HeuristicLab.GP.StructureIdentification.ConditionalEvaluation-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.GP.StructureIdentification.TimeSeries\3.3\%Outdir%\HeuristicLab.GP.StructureIdentification.TimeSeries-3.3.dll" .\
+copy "%SolutionDir%\HeuristicLab.Grid\3.2\%Outdir%\HeuristicLab.Grid-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Grid.HiveBridge\3.2\%Outdir%\HeuristicLab.Grid.HiveBridge-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Client.Common\3.2\%Outdir%\HeuristicLab.Hive.Client.Common-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Client.Communication\3.2\%Outdir%\HeuristicLab.Hive.Client.Communication-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Client.Console\3.2\%Outdir%\HeuristicLab.Hive.Client.Console-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Client.Console\3.2\%Outdir%\ZedGraph.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Client.Console\3.2\%Outdir%\Calendar.DayView.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Client.Core\3.2\%Outdir%\HeuristicLab.Hive.Client.Core-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Client.ExecutionEngine\3.2\%Outdir%\HeuristicLab.Hive.Client.ExecutionEngine-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Engine\3.2\%Outdir%\HeuristicLab.Hive.Engine-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.JobBase\3.2\%Outdir%\HeuristicLab.Hive.JobBase-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Server\3.2\%Outdir%\HeuristicLab.Hive.Server-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Server.ADODataAccess\3.2\%Outdir%\HeuristicLab.Hive.Server.ADODataAccess-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Server.Console\3.2\%Outdir%\HeuristicLab.Hive.Server.Console-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Server.Core\3.2\%Outdir%\HeuristicLab.Hive.Server.Core-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Server.Core\3.2\%Outdir%\HeuristicLab.Hive.Contracts-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Server.Core\3.2\%Outdir%\Authorization\*.xml" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Server.DataAccess\3.2\%Outdir%\HeuristicLab.Hive.Server.DataAccess-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Hive.Server.Scheduler\3.2\%Outdir%\HeuristicLab.Hive.Server.Scheduler-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.IntVector\3.2\%Outdir%\HeuristicLab.IntVector-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.LinearRegression\3.2\%Outdir%\HeuristicLab.LinearRegression-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.LinearRegression\3.2\%Outdir%\ALGLIB License.txt" .\
+copy "%SolutionDir%\HeuristicLab.Logging\3.2\%Outdir%\HeuristicLab.Logging-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.MainForm\3.2\%Outdir%\HeuristicLab.MainForm-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.MainForm.Test\3.2\%Outdir%\HeuristicLab.MainForm.Test-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.MainForm.WindowsForms\3.2\%Outdir%\HeuristicLab.MainForm.WindowsForms-3.2.dll" .\
+copy "%SolutionDir%\WinFormsUI\%Outdir%\WeifenLuo.WinFormsUI.Docking.dll" .\
+copy "%SolutionDir%\WinFormsUI\%Outdir%\WeifenLuo.WinFormsUI.Docking License.txt" .\
+copy "%SolutionDir%\HeuristicLab.Modeling\3.2\%Outdir%\HeuristicLab.Modeling-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Modeling.Database\3.2\%Outdir%\HeuristicLab.Modeling.Database-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Modeling.Database.SQLServerCompact\3.2\%Outdir%\HeuristicLab.Modeling.Database.SQLServerCompact-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Operators\3.2\%Outdir%\HeuristicLab.Operators-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Operators.Metaprogramming\3.2\%Outdir%\HeuristicLab.Operators.Metaprogramming-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Operators.Programmable\3.2\%Outdir%\HeuristicLab.Operators.Programmable-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Operators.Stopwatch\3.2\%Outdir%\HeuristicLab.Operators.Stopwatch-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.OptimizationFrontend\3.2\%Outdir%\HeuristicLab.OptimizationFrontend-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Permutation\3.2\%Outdir%\HeuristicLab.Permutation-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Random\3.2\%Outdir%\HeuristicLab.Random-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.RealVector\3.2\%Outdir%\HeuristicLab.RealVector-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Routing.TSP\3.2\%Outdir%\HeuristicLab.Routing.TSP-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.SA\3.2\%Outdir%\HeuristicLab.SA-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Scheduling.JSSP\3.2\%Outdir%\HeuristicLab.Scheduling.JSSP-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Selection\3.2\%Outdir%\HeuristicLab.Selection-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Selection.OffspringSelection\3.2\%Outdir%\HeuristicLab.Selection.OffspringSelection-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Selection.Uncertainty\3.2\%Outdir%\HeuristicLab.Selection.Uncertainty-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.SequentialEngine\3.2\%Outdir%\HeuristicLab.SequentialEngine-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.SGA\3.2\%Outdir%\HeuristicLab.SGA-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.FixedOperators\3.2\%Outdir%\HeuristicLab.FixedOperators-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.SimOpt\3.2\%Outdir%\HeuristicLab.SimOpt-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.SQLite\3.2\%Outdir%\HeuristicLab.SQLite-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.SQLite\3.2\SQLite License.txt" .\
+copy "%SolutionDir%\HeuristicLab.SQLite\3.2\SQLite.NET.chm" .\
+copy "%SolutionDir%\HeuristicLAb.SQLServerCompact\3.2\%Outdir%\HeuristicLab.SQLServerCompact-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLAb.SQLServerCompact\3.2\%Outdir%\System.Data.SqlServerCe.dll" .\
+copy "%SolutionDir%\HeuristicLab.StatisticalAnalysis\3.2\%Outdir%\HeuristicLab.StatisticalAnalysis-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.SupportVectorMachines\3.2\%Outdir%\HeuristicLab.SupportVectorMachines-3.2.dll" .\
+copy "%SolutionDir%\LibSVM\%Outdir%\LibSVM.dll" .\
+copy "%SolutionDir%\HeuristicLab.TestFunctions\3.2\%Outdir%\HeuristicLab.TestFunctions-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.ThreadParallelEngine\3.2\%Outdir%\HeuristicLab.ThreadParallelEngine-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Tracing\3.2\%Outdir%\HeuristicLab.Tracing-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Tracing\3.2\%Outdir%\log4net.dll" .\
+copy "%SolutionDir%\HeuristicLab.Tracing\3.2\log4net licence.txt" .\
+copy "%SolutionDir%\HeuristicLab.Tracing\3.2\HeuristicLab.log4net.xml" .\
+copy "%SolutionDir%\HeuristicLab.Tracing\3.2\HeuristicLab.Hive.log4net.xml" .\
+copy "%SolutionDir%\HeuristicLab.Visualization\3.2\%Outdir%\HeuristicLab.Visualization-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Visualization.Test\3.2\%Outdir%\HeuristicLab.Visualization.Test-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Security.Contracts\3.2\%Outdir%\HeuristicLab.Security.Contracts-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Security.Core\3.2\%Outdir%\HeuristicLab.Security.Core-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Security.DataAccess\3.2\%Outdir%\HeuristicLab.Security.DataAccess-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Security.ADODataAccess\3.2\%Outdir%\HeuristicLab.Security.ADODataAccess-3.2.dll" .\
+copy "%SolutionDir%\HeuristicLab.Security.Server\3.2\%Outdir%\HeuristicLab.Security.Server-3.2.dll" .\
 echo "Platform: %Platform%, architecture: %PROCESSOR_ARCHITECTURE%"
 if "%Platform%" == "x86" (   
-  copy /B /Y "%SolutionDir%\HeuristicLab.SQLite\3.2\System.Data.SQLite.dll" .\plugins
-  xcopy "%SolutionDir%\HeuristicLab.SQLServerCompact\3.2\x86\*" .\plugins /e /i
+  copy /B /Y "%SolutionDir%\HeuristicLab.SQLite\3.2\System.Data.SQLite.dll" .\
+  xcopy "%SolutionDir%\HeuristicLab.SQLServerCompact\3.2\x86\*" .\ /e /i /Y
 ) else if "%Platform%" == "x64" ( 
-  copy /B /Y "%SolutionDir%\HeuristicLab.SQLite\3.2\System.Data.SQLite.x64.dll" .\plugins\System.Data.SQLite.dll
-  xcopy "%SolutionDir%\HeuristicLab.SQLServerCompact\3.2\x64\*" .\plugins /e /i
+  copy /B /Y "%SolutionDir%\HeuristicLab.SQLite\3.2\System.Data.SQLite.x64.dll" .\\System.Data.SQLite.dll
+  xcopy "%SolutionDir%\HeuristicLab.SQLServerCompact\3.2\x64\*" .\ /e /i /Y
 ) else if "%Platform%" == "AnyCPU" (
   if "%PROCESSOR_ARCHITECTURE%" == "x64" (
-    copy /B /Y "%SolutionDir%\HeuristicLab.SQLite\3.2\System.Data.SQLite.x64.dll" .\plugins\System.Data.SQLite.dll
-     xcopy "%SolutionDir%\HeuristicLab.SQLServerCompact\3.2\x64\*" .\plugins /e /i
+    copy /B /Y "%SolutionDir%\HeuristicLab.SQLite\3.2\System.Data.SQLite.x64.dll" .\\System.Data.SQLite.dll
+     xcopy "%SolutionDir%\HeuristicLab.SQLServerCompact\3.2\x64\*" .\ /e /i /Y
   ) else if "%PROCESSOR_ARCHITECTURE%" == "x86" (
-    copy /B /Y "%SolutionDir%\HeuristicLab.SQLite\3.2\System.Data.SQLite.dll" .\plugins
-    xcopy "%SolutionDir%\HeuristicLab.SQLServerCompact\3.2\x86\*" .\plugins /e /i
+    copy /B /Y "%SolutionDir%\HeuristicLab.SQLite\3.2\System.Data.SQLite.dll" .\
+    xcopy "%SolutionDir%\HeuristicLab.SQLServerCompact\3.2\x86\*" .\ /e /i /Y
   ) else (
     echo "ERROR: unknown architecture: "%PROCESSOR_ARCHITECTURE%"
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab/CustomPostBuildTemplate_UpdateLocalInstallation.cmd
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/CustomPostBuildTemplate_UpdateLocalInstallation.cmd	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab/CustomPostBuildTemplate_UpdateLocalInstallation.cmd	(revision 2587)
@@ -1,10 +1,8 @@
 set target=C:\Program Files\HeuristicLab 3.0
 
-copy "HeuristicLab.exe" "%target%"
-copy "HeuristicLab.exe.config" "%target%"
-copy "HeuristicLab.PluginInfrastructure.dll" "%target%"
-copy "HeuristicLab.PluginInfrastructure.GUI.dll" "%target%"
-copy "ICSharpCode.SharpZipLib.dll" "%target%"
-copy "ICSharpCode.SharpZipLib License.txt" "%target%"
-rmdir /s /q "%target%\plugins"
-xcopy "plugins" "%target%\plugins" /e /i
+copy * "%target%"
+REM copy "HeuristicLab.exe.config" "%target%"
+REM copy "HeuristicLab.PluginInfrastructure.dll" "%target%"
+REM copy "HeuristicLab.PluginInfrastructure.GUI.dll" "%target%"
+REM copy "ICSharpCode.SharpZipLib.dll" "%target%"
+REM copy "ICSharpCode.SharpZipLib License.txt" "%target%"
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab/HeuristicLab.csproj
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/HeuristicLab.csproj	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab/HeuristicLab.csproj	(revision 2587)
@@ -19,4 +19,5 @@
     </UpgradeBackupLocation>
     <RunPostBuildEvent>Always</RunPostBuildEvent>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -72,4 +73,7 @@
   <ItemGroup>
     <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
     <Reference Include="System.Data" />
     <Reference Include="System.Deployment" />
@@ -79,23 +83,9 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="MainForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="MainForm.Designer.cs">
-      <DependentUpon>MainForm.cs</DependentUpon>
-    </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="MainForm.resx">
-      <DependentUpon>MainForm.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="SplashScreen.resx">
-      <DependentUpon>SplashScreen.cs</DependentUpon>
       <SubType>Designer</SubType>
     </EmbeddedResource>
@@ -115,16 +105,6 @@
       <DesignTimeSharedInput>True</DesignTimeSharedInput>
     </Compile>
-    <Compile Include="SplashScreen.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="SplashScreen.Designer.cs">
-      <DependentUpon>SplashScreen.cs</DependentUpon>
-    </Compile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\HeuristicLab.PluginInfrastructure.GUI\HeuristicLab.PluginInfrastructure.GUI.csproj">
-      <Project>{D3F92C1F-42B4-4EFB-9E73-B64FD3428ADE}</Project>
-      <Name>HeuristicLab.PluginInfrastructure.GUI</Name>
-    </ProjectReference>
     <ProjectReference Include="..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
Index: anches/PluginInfrastructure Refactoring/HeuristicLab/MainForm.Designer.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/MainForm.Designer.cs	(revision 2586)
+++ 	(revision )
@@ -1,199 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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
-
-namespace HeuristicLab {
-  partial class MainForm {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if(disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
-      System.Windows.Forms.ListViewGroup listViewGroup1 = new System.Windows.Forms.ListViewGroup("Plugin Management", System.Windows.Forms.HorizontalAlignment.Left);
-      System.Windows.Forms.ListViewGroup listViewGroup2 = new System.Windows.Forms.ListViewGroup("Applications", System.Windows.Forms.HorizontalAlignment.Left);
-      this.startButton = new System.Windows.Forms.Button();
-      this.largeImageList = new System.Windows.Forms.ImageList(this.components);
-      this.applicationsListView = new System.Windows.Forms.ListView();
-      this.nameColumnHeader = new System.Windows.Forms.ColumnHeader();
-      this.versionColumnHeader = new System.Windows.Forms.ColumnHeader();
-      this.descriptionColumnHeader = new System.Windows.Forms.ColumnHeader();
-      this.smallImageList = new System.Windows.Forms.ImageList(this.components);
-      this.detailsButton = new System.Windows.Forms.Button();
-      this.listButton = new System.Windows.Forms.Button();
-      this.largeIconsButton = new System.Windows.Forms.Button();
-      this.SuspendLayout();
-      // 
-      // startButton
-      // 
-      this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.startButton.Enabled = false;
-      this.startButton.Location = new System.Drawing.Point(579, 511);
-      this.startButton.Name = "startButton";
-      this.startButton.Size = new System.Drawing.Size(75, 23);
-      this.startButton.TabIndex = 1;
-      this.startButton.Text = "Start";
-      this.startButton.UseVisualStyleBackColor = true;
-      this.startButton.Click += new System.EventHandler(this.applicationsListView_ItemActivate);
-      // 
-      // largeImageList
-      // 
-      this.largeImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("largeImageList.ImageStream")));
-      this.largeImageList.TransparentColor = System.Drawing.Color.Transparent;
-      this.largeImageList.Images.SetKeyName(0, "HeuristicLab.ico");
-      // 
-      // applicationsListView
-      // 
-      this.applicationsListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.applicationsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.nameColumnHeader,
-            this.versionColumnHeader,
-            this.descriptionColumnHeader});
-      listViewGroup1.Header = "Plugin Management";
-      listViewGroup1.Name = "Plugin Management";
-      listViewGroup2.Header = "Applications";
-      listViewGroup2.Name = "Applications";
-      this.applicationsListView.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] {
-            listViewGroup1,
-            listViewGroup2});
-      this.applicationsListView.LargeImageList = this.largeImageList;
-      this.applicationsListView.Location = new System.Drawing.Point(12, 12);
-      this.applicationsListView.MultiSelect = false;
-      this.applicationsListView.Name = "applicationsListView";
-      this.applicationsListView.ShowItemToolTips = true;
-      this.applicationsListView.Size = new System.Drawing.Size(642, 493);
-      this.applicationsListView.SmallImageList = this.smallImageList;
-      this.applicationsListView.TabIndex = 2;
-      this.applicationsListView.UseCompatibleStateImageBehavior = false;
-      this.applicationsListView.ItemActivate += new System.EventHandler(this.applicationsListView_ItemActivate);
-      this.applicationsListView.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.applicationsListBox_SelectedIndexChanged);
-      // 
-      // nameColumnHeader
-      // 
-      this.nameColumnHeader.Text = "Name";
-      this.nameColumnHeader.Width = 125;
-      // 
-      // versionColumnHeader
-      // 
-      this.versionColumnHeader.Text = "Version";
-      // 
-      // descriptionColumnHeader
-      // 
-      this.descriptionColumnHeader.Text = "Description";
-      this.descriptionColumnHeader.Width = 453;
-      // 
-      // smallImageList
-      // 
-      this.smallImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("smallImageList.ImageStream")));
-      this.smallImageList.TransparentColor = System.Drawing.Color.Transparent;
-      this.smallImageList.Images.SetKeyName(0, "HeuristicLab.ico");
-      // 
-      // detailsButton
-      // 
-      this.detailsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.detailsButton.AutoSize = true;
-      this.detailsButton.Image = global::HeuristicLab.Properties.Resources.Details;
-      this.detailsButton.Location = new System.Drawing.Point(68, 511);
-      this.detailsButton.Name = "detailsButton";
-      this.detailsButton.Size = new System.Drawing.Size(22, 23);
-      this.detailsButton.TabIndex = 5;
-      this.detailsButton.UseVisualStyleBackColor = true;
-      this.detailsButton.Click += new System.EventHandler(this.detailsButton_Click);
-      // 
-      // listButton
-      // 
-      this.listButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.listButton.AutoSize = true;
-      this.listButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
-      this.listButton.Image = global::HeuristicLab.Properties.Resources.List;
-      this.listButton.Location = new System.Drawing.Point(40, 511);
-      this.listButton.Name = "listButton";
-      this.listButton.Size = new System.Drawing.Size(22, 22);
-      this.listButton.TabIndex = 4;
-      this.listButton.UseVisualStyleBackColor = true;
-      this.listButton.Click += new System.EventHandler(this.listButton_Click);
-      // 
-      // largeIconsButton
-      // 
-      this.largeIconsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.largeIconsButton.AutoSize = true;
-      this.largeIconsButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
-      this.largeIconsButton.Image = global::HeuristicLab.Properties.Resources.LargeIcons;
-      this.largeIconsButton.Location = new System.Drawing.Point(12, 511);
-      this.largeIconsButton.Name = "largeIconsButton";
-      this.largeIconsButton.Size = new System.Drawing.Size(22, 22);
-      this.largeIconsButton.TabIndex = 3;
-      this.largeIconsButton.UseVisualStyleBackColor = true;
-      this.largeIconsButton.Click += new System.EventHandler(this.largeIconsButton_Click);
-      // 
-      // MainForm
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(666, 546);
-      this.Controls.Add(this.detailsButton);
-      this.Controls.Add(this.listButton);
-      this.Controls.Add(this.largeIconsButton);
-      this.Controls.Add(this.applicationsListView);
-      this.Controls.Add(this.startButton);
-      this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-      this.Name = "MainForm";
-      this.Text = "HeuristicLab Starter";
-      this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Button startButton;
-    private System.Windows.Forms.ImageList largeImageList;
-    private System.Windows.Forms.ListView applicationsListView;
-    private System.Windows.Forms.ColumnHeader nameColumnHeader;
-    private System.Windows.Forms.ColumnHeader versionColumnHeader;
-    private System.Windows.Forms.ColumnHeader descriptionColumnHeader;
-    private System.Windows.Forms.Button largeIconsButton;
-    private System.Windows.Forms.Button listButton;
-    private System.Windows.Forms.Button detailsButton;
-    private System.Windows.Forms.ImageList smallImageList;
-  }
-}
Index: anches/PluginInfrastructure Refactoring/HeuristicLab/MainForm.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/MainForm.cs	(revision 2586)
+++ 	(revision )
@@ -1,165 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using System.Diagnostics;
-using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.PluginInfrastructure.GUI;
-using System.Threading;
-
-namespace HeuristicLab {
-  public partial class MainForm : Form {
-
-    private ListViewItem pluginManagerListViewItem;
-    private bool abortRequested;
-
-    public MainForm() {
-      abortRequested = false;
-      SplashScreen splashScreen = new SplashScreen(1000, "Loading HeuristicLab...");
-      splashScreen.Owner = this;
-      splashScreen.Show();
-
-      Application.DoEvents();
-      this.Enabled = false;
-
-      PluginManager.Manager.Action += new PluginManagerActionEventHandler(splashScreen.Manager_Action);
-      PluginManager.Manager.Initialize();
-
-      InitializeComponent();
-
-      RefreshApplicationsList();
-
-      this.Enabled = true;
-      this.Visible = true;
-    }
-
-    private void RefreshApplicationsList() {
-      applicationsListView.Items.Clear();
-
-      pluginManagerListViewItem = new ListViewItem("Plugin Manager", 0);
-      pluginManagerListViewItem.Group = applicationsListView.Groups["Plugin Management"];
-      pluginManagerListViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(pluginManagerListViewItem, "-"));
-      pluginManagerListViewItem.SubItems.Add(new ListViewItem.ListViewSubItem(pluginManagerListViewItem, "Install, upgrade or delete plugins"));
-      pluginManagerListViewItem.ToolTipText = "Install, upgrade or delete plugins";
-
-      applicationsListView.Items.Add(pluginManagerListViewItem);
-
-      foreach (ApplicationInfo info in PluginManager.Manager.InstalledApplications) {
-        ListViewItem item = new ListViewItem(info.Name, 0);
-        item.Tag = info;
-        item.Group = applicationsListView.Groups["Applications"];
-        item.SubItems.Add(new ListViewItem.ListViewSubItem(item, info.Version.ToString()));
-        item.SubItems.Add(new ListViewItem.ListViewSubItem(item, info.Description));
-        item.ToolTipText = info.Description;
-        applicationsListView.Items.Add(item);
-      }
-    }
-
-    private void applicationsListView_ItemActivate(object sender, EventArgs e) {
-      if (applicationsListView.SelectedItems.Count > 0) {
-        ListViewItem selected = applicationsListView.SelectedItems[0];
-        if (selected == pluginManagerListViewItem) {
-          try {
-            Cursor = Cursors.AppStarting;
-            ManagerForm form = new ManagerForm();
-            this.Visible = false;
-            form.ShowDialog(this);
-            RefreshApplicationsList();
-            this.Visible = true;
-          }
-          finally {
-            Cursor = Cursors.Arrow;
-          }
-        } else {
-          ApplicationInfo app = (ApplicationInfo)applicationsListView.SelectedItems[0].Tag;
-          SplashScreen splashScreen = new SplashScreen(2000, "Loading " + app.Name);
-          splashScreen.Owner = this;
-          splashScreen.Show();
-          PluginManager.Manager.Action += new PluginManagerActionEventHandler(splashScreen.Manager_Action);
-          Thread t = new Thread(delegate() {
-            bool stopped = false;
-            do {
-              try {
-                if (!abortRequested)
-                  PluginManager.Manager.Run(app);
-                stopped = true;
-              }
-              catch (Exception ex) {
-                stopped = false;
-                ThreadPool.QueueUserWorkItem(delegate(object exception) { ShowErrorMessageBox((Exception)exception); }, ex);
-                Thread.Sleep(5000); // sleep 5 seconds before autorestart
-              }
-            } while (!abortRequested && !stopped && app.AutoRestart);
-          });
-          t.SetApartmentState(ApartmentState.STA); // needed for the AdvancedOptimizationFrontent
-          t.Start();
-        }
-      }
-    }
-
-    private void applicationsListBox_SelectedIndexChanged(object sender, ListViewItemSelectionChangedEventArgs e) {
-      if (e.IsSelected) {
-        startButton.Enabled = true;
-      } else {
-        startButton.Enabled = false;
-      }
-    }
-
-    private void largeIconsButton_Click(object sender, EventArgs e) {
-      applicationsListView.View = View.LargeIcon;
-    }
-
-    private void listButton_Click(object sender, EventArgs e) {
-      applicationsListView.View = View.List;
-    }
-
-    private void detailsButton_Click(object sender, EventArgs e) {
-      applicationsListView.View = View.Details;
-    }
-
-    public void ShowErrorMessageBox(Exception ex) {
-      MessageBox.Show(BuildErrorMessage(ex),
-                      "Error - " + ex.GetType().Name,
-                      MessageBoxButtons.OK,
-                      MessageBoxIcon.Error);
-    }
-    private string BuildErrorMessage(Exception ex) {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("Sorry, but something went wrong!\n\n" + ex.Message + "\n\n" + ex.StackTrace);
-
-      while (ex.InnerException != null) {
-        ex = ex.InnerException;
-        sb.Append("\n\n-----\n\n" + ex.Message + "\n\n" + ex.StackTrace);
-      }
-      return sb.ToString();
-    }
-
-    private void MainForm_FormClosing(object sender, FormClosingEventArgs e) {
-      abortRequested = true;
-    }
-  }
-}
Index: anches/PluginInfrastructure Refactoring/HeuristicLab/MainForm.resx
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/MainForm.resx	(revision 2586)
+++ 	(revision )
@@ -1,526 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="largeImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>20, 15</value>
-  </metadata>
-  <data name="largeImageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
-        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAU
-        CQAAAk1TRnQBSQFMAwEBAAEEAQABBAEAASABAAEgAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
-        AYADAAEgAwABAQEAAQgGAAEQGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
-        AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
-        AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
-        AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
-        AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
-        AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
-        AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
-        AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
-        AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
-        ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
-        AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
-        ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
-        AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
-        AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
-        AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
-        AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
-        AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
-        AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
-        AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
-        ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
-        AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
-        ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
-        ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
-        AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
-        AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
-        AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
-        ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
-        Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/+CAB7/YgAB8QIHAfMK/wHz
-        DQcB8QH/YgAB7wIAAW0K/wHzDQABEgH/YgAB/wEQAQABDgHzCv8BbQ0AAfFiAAH/AZICAAHsCv8B8Q0A
-        AW1iAAL/AQ4BAAEOC/8BEgIAAQcK/2IAAv8B7AIAAZIK/wEHAgABFAr/YgAC/wHzAQ4BAAEQC/8BFAIA
-        AbwJ/2IAA/8BbQIAAe8K/wGSAgABbQn/YgAD/wHxAgABFAv/ARACAAHxCP9iAAT/AW0CAAEHCv8BkgIA
-        AesI/2IABP8BBwIAAW0K/wHzAQ4BAAEOAfMH/2IABf8BFAIAAfEK/wHsAgAB7Af/YgAF/wHvAgABbQr/
-        AfMCAAEQB/9iAAb/ARABAAEOCxQBDgIAAZIG/2IABv8BkhAAARAG/2IAB/8BDhAAAQcF/2IAB/8B7AIA
-        ARQK7AHrAgABFAX/YgAH/wHzAQ4BAAEQC/8BFAIAAbwE/2IACP8BbQIAAe8K/wGSAgABbQT/YgAI/wHx
-        AgABFAv/ARACAAHxA/9iAAn/AW0CAAEHCv8BkgIAAesD/2IACf8BBwIAAW0L/wEOAQABDgHzAv9iAAr/
-        ARQCAAHxCv8B7AIAAewC/2IACv8B7wIAAW0K/wHzAQ4BAAEQAv9iAAv/ARABAAEOAfMK/wFtAgABkgH/
-        YgAL/wGSAgAB7Ar/AfECAAEQAf9iAAz/AQ4BAAEOAfMK/wFtAgABB2IADP8B7wLsAfEK/wG8AuwB72IA
-        Hv/hAAFCAU0BPgcAAT4DAAEoAwABgAMAASADAAEBAQABAQYAAQIWAAP//wD/AAMACw==
-</value>
-  </data>
-  <metadata name="smallImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>142, 17</value>
-  </metadata>
-  <data name="smallImageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
-        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC0
-        BwAAAk1TRnQBSQFMAwEBAAEEAQABBAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
-        AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
-        AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
-        AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
-        AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
-        AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
-        AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
-        AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
-        AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
-        AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
-        ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
-        AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
-        ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
-        AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
-        AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
-        AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
-        AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
-        AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
-        AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
-        AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
-        ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
-        AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
-        ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
-        ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
-        AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
-        AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
-        AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
-        ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
-        Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8CAA//MgABbQX/BwAB/zEA
-        AZIBAAX/AfEGAAFtMQAB/wEAAZIF/wEAARQF/zEAAf8BbQEABf8BkgEABf8xAAL/AQABBwX/AQAB6wT/
-        MQAC/wEUAQAF/wHsAQAE/zEAA/8BAAYUAQABkgP/MQAD/wEOCAAD/zEAA/8B8wEABv8BAAG8Av8xAAT/
-        AQABFAX/ARABAAL/MQAE/wEHAQAG/wEAAfMB/zEABf8BAAFtBf8BDgEQAf8xAAX/AZIBAAX/AfEBAAH/
-        MQAG/wHsAfEF/wHsAe9wAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/gQAL
-</value>
-  </data>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAABAAgAEBAQAAAAAAAoAQAAhgAAABAQAAAAAAAAaAUAAK4BAAAgIBAAAAAAAOgCAAAWBwAAICAAAAAA
-        AACoCAAA/gkAADAwEAAAAAAAaAYAAKYSAAAwMAAAAAAAAKgOAAAOGQAAQEAQAAAAAABoCgAAticAAEBA
-        AAAAAAAAKBYAAB4yAAAoAAAAEAAAACAAAAABAAQAAAAAAIAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAA
-        gAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
-        AAAAAAAAD/////////APD///gAAA8A8H//9wj//wDwj///gP//APgH//9wf/8A/wj///AP/wD/gIiIiA
-        f/AP/wAAAACP8A//gHd3eAfwD/9wj///CPAP//gP//+A8A//9w////DwD///D///+PAP////////8AAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAACA
-        AAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYABAQEAAgICAAMDAwAERERABYWFgAcHBwAIiIiACkp
-        KQBVVVUATU1NAEJCQgA5OTkAgHz/AFBQ/wCTANYA/+zMAMbW7wDW5+cAkKmtAAAAMwAAAGYAAACZAAAA
-        zAAAMwAAADMzAAAzZgAAM5kAADPMAAAz/wAAZgAAAGYzAABmZgAAZpkAAGbMAABm/wAAmQAAAJkzAACZ
-        ZgAAmZkAAJnMAACZ/wAAzAAAAMwzAADMZgAAzJkAAMzMAADM/wAA/2YAAP+ZAAD/zAAzAAAAMwAzADMA
-        ZgAzAJkAMwDMADMA/wAzMwAAMzMzADMzZgAzM5kAMzPMADMz/wAzZgAAM2YzADNmZgAzZpkAM2bMADNm
-        /wAzmQAAM5kzADOZZgAzmZkAM5nMADOZ/wAzzAAAM8wzADPMZgAzzJkAM8zMADPM/wAz/zMAM/9mADP/
-        mQAz/8wAM///AGYAAABmADMAZgBmAGYAmQBmAMwAZgD/AGYzAABmMzMAZjNmAGYzmQBmM8wAZjP/AGZm
-        AABmZjMAZmZmAGZmmQBmZswAZpkAAGaZMwBmmWYAZpmZAGaZzABmmf8AZswAAGbMMwBmzJkAZszMAGbM
-        /wBm/wAAZv8zAGb/mQBm/8wAzAD/AP8AzACZmQAAmTOZAJkAmQCZAMwAmQAAAJkzMwCZAGYAmTPMAJkA
-        /wCZZgAAmWYzAJkzZgCZZpkAmWbMAJkz/wCZmTMAmZlmAJmZmQCZmcwAmZn/AJnMAACZzDMAZsxmAJnM
-        mQCZzMwAmcz/AJn/AACZ/zMAmcxmAJn/mQCZ/8wAmf//AMwAAACZADMAzABmAMwAmQDMAMwAmTMAAMwz
-        MwDMM2YAzDOZAMwzzADMM/8AzGYAAMxmMwCZZmYAzGaZAMxmzACZZv8AzJkAAMyZMwDMmWYAzJmZAMyZ
-        zADMmf8AzMwAAMzMMwDMzGYAzMyZAMzMzADMzP8AzP8AAMz/MwCZ/2YAzP+ZAMz/zADM//8AzAAzAP8A
-        ZgD/AJkAzDMAAP8zMwD/M2YA/zOZAP8zzAD/M/8A/2YAAP9mMwDMZmYA/2aZAP9mzADMZv8A/5kAAP+Z
-        MwD/mWYA/5mZAP+ZzAD/mf8A/8wAAP/MMwD/zGYA/8yZAP/MzAD/zP8A//8zAMz/ZgD//5kA///MAGZm
-        /wBm/2YAZv//AP9mZgD/Zv8A//9mACEApQBfX18Ad3d3AIaGhgCWlpYAy8vLALKysgDX19cA3d3dAOPj
-        4wDq6uoA8fHxAPj4+ADw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8ACgoKCgoK
-        CgoKCgoKCgoKCgr//////////////////woK/xT//////20KFBQUFP8KCv8K8f/////xCpL/////Cgr/
-        EG3//////20U/////woK/5IK8f////8HCgf///8KCv//Duz//////xQU////Cgr//+wO7Ozs7OwSCvH/
-        /woK///zDgoKCgoKCgpt//8KCv///+sOBwcHBwfsCvH/Cgr////xCpL//////w7s/woK/////21D////
-        ///sDv8KCv////+8Cv//////8w7/Cgr//////xT///////9t/woK//////////////////8KCgoKCgoK
-        CgoKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABAAQAAAAAAAACAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAA
-        gAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
-        AAAAAAAAAAAAAAAAAAAP///////////////////wB3f///////93d3d3d3d38AcAj///////AAAAAAAA
-        CPAPAA///////4AAAAAAAABwD4AI//////9wAAAAAAAAgA/wAP//////+AB///////AP+ACP//////cA
-        D//////wD/8AD///////AAf/////8A//gAf//////4AI//////AP/3AA///////wAH/////wD//4AH//
-        ////+ACP////8A//9wCP//////8AD/////AP//8AB///////gAj////wD///cAj///////AA////8A//
-        //AAAAAAAAAAAI////AP///4AAAAAAAAAAAP///wD////wAAAAAAAAAAB///8A////+AAIiIiIiIgAD/
-        //AP////8AD///////AAf//wD/////gAf//////4AI//8A/////3AA///////wAH//AP/////4AH////
-        //+ACP/wD/////9wCP//////8AD/8A//////8AB///////gAj/AP//////cAj///////AA/wD///////
-        AA///////4AI8A///////4AI//////9wAPAP///////wAP//////+ABwD///////94h///////eIcA//
-        //////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE
-        AAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwADA3MAA8MqmAAQE
-        BAAICAgADAwMABEREQAWFhYAHBwcACIiIgApKSkAVVVVAE1NTQBCQkIAOTk5AIB8/wBQUP8AkwDWAP/s
-        zADG1u8A1ufnAJCprQAAADMAAABmAAAAmQAAAMwAADMAAAAzMwAAM2YAADOZAAAzzAAAM/8AAGYAAABm
-        MwAAZmYAAGaZAABmzAAAZv8AAJkAAACZMwAAmWYAAJmZAACZzAAAmf8AAMwAAADMMwAAzGYAAMyZAADM
-        zAAAzP8AAP9mAAD/mQAA/8wAMwAAADMAMwAzAGYAMwCZADMAzAAzAP8AMzMAADMzMwAzM2YAMzOZADMz
-        zAAzM/8AM2YAADNmMwAzZmYAM2aZADNmzAAzZv8AM5kAADOZMwAzmWYAM5mZADOZzAAzmf8AM8wAADPM
-        MwAzzGYAM8yZADPMzAAzzP8AM/8zADP/ZgAz/5kAM//MADP//wBmAAAAZgAzAGYAZgBmAJkAZgDMAGYA
-        /wBmMwAAZjMzAGYzZgBmM5kAZjPMAGYz/wBmZgAAZmYzAGZmZgBmZpkAZmbMAGaZAABmmTMAZplmAGaZ
-        mQBmmcwAZpn/AGbMAABmzDMAZsyZAGbMzABmzP8AZv8AAGb/MwBm/5kAZv/MAMwA/wD/AMwAmZkAAJkz
-        mQCZAJkAmQDMAJkAAACZMzMAmQBmAJkzzACZAP8AmWYAAJlmMwCZM2YAmWaZAJlmzACZM/8AmZkzAJmZ
-        ZgCZmZkAmZnMAJmZ/wCZzAAAmcwzAGbMZgCZzJkAmczMAJnM/wCZ/wAAmf8zAJnMZgCZ/5kAmf/MAJn/
-        /wDMAAAAmQAzAMwAZgDMAJkAzADMAJkzAADMMzMAzDNmAMwzmQDMM8wAzDP/AMxmAADMZjMAmWZmAMxm
-        mQDMZswAmWb/AMyZAADMmTMAzJlmAMyZmQDMmcwAzJn/AMzMAADMzDMAzMxmAMzMmQDMzMwAzMz/AMz/
-        AADM/zMAmf9mAMz/mQDM/8wAzP//AMwAMwD/AGYA/wCZAMwzAAD/MzMA/zNmAP8zmQD/M8wA/zP/AP9m
-        AAD/ZjMAzGZmAP9mmQD/ZswAzGb/AP+ZAAD/mTMA/5lmAP+ZmQD/mcwA/5n/AP/MAAD/zDMA/8xmAP/M
-        mQD/zMwA/8z/AP//MwDM/2YA//+ZAP//zABmZv8AZv9mAGb//wD/ZmYA/2b/AP//ZgAhAKUAX19fAHd3
-        dwCGhoYAlpaWAMvLywCysrIA19fXAN3d3QDj4+MA6urqAPHx8QD4+PgA8Pv/AKSgoACAgIAAAAD/AAD/
-        AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////
-        /////////////////////////////////wAA8QcH8//////////////zBwcHBwcHBwcHBwcHB/H/AADv
-        Cgpt//////////////MKCgoKCgoKCgoKCgoKEv8AAP8QCg7z/////////////20KCgoKCgoKCgoKCgoK
-        8QAA/5IKCuz/////////////8QoKCgoKCgoKCgoKCgptAAD//w4KDv//////////////EgoKB///////
-        //////8AAP//7AoKkv////////////8HCgoU/////////////wAA///zDgoQ//////////////8UCgq8
-        ////////////AAD///9tCgrv/////////////5IKCm3///////////8AAP////EKChT/////////////
-        /xAKCvH//////////wAA/////20KCgf/////////////kgoK6///////////AAD/////BwoKbf//////
-        ///////zDgoO8/////////8AAP//////FAoK8f/////////////sCgrs/////////wAA///////vCgpt
-        //////////////MKChD/////////AAD///////8QCg4UFBQUFBQUFBQUFA4KCpL///////8AAP//////
-        /5IKCgoKCgoKCgoKCgoKCgoKEP///////wAA/////////w4KCgoKCgoKCgoKCgoKCgoKB///////AAD/
-        ////////7AoKFOzs7Ozs7Ozs7OzrCgoU//////8AAP/////////zDgoQ//////////////8UCgq8////
-        /wAA//////////9tCgrv/////////////5IKCm3/////AAD///////////EKChT//////////////xAK
-        CvH///8AAP///////////20KCgf/////////////kgoK6////wAA////////////BwoKbf//////////
-        ////DgoO8///AAD/////////////FAoK8f/////////////sCgrs//8AAP/////////////vCgpt////
-        //////////MOChD//wAA//////////////8QCg7z/////////////20KCpL/AAD//////////////5IK
-        Cuz/////////////8QoKEP8AAP///////////////w4KDvP/////////////bQoKBwAA////////////
-        ////7+zs8f////////////+87OzvAAD///////////////////////////////////////8AAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEABAAAAAAAgAQAAAAA
-        AAAAAAAAEAAAABAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD/
-        /wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////
-        ///////wD//////////////////////////////wD//////////////////////////////wDwAAj///
-        ///////4AAAAAAAAAAAAAP/wD3AAD///////////AAAAAAAAAAAAAI/wD/AACP//////////gAAAAAAA
-        AAAAAA/wD/gAAP//////////cAAAAAAAAAAAAAjwD/8AAI//////////+AAAAAAAAAAAAAjwD/+AAA//
-        ////////9wAAf//////////wD//wAAj//////////wAAD//////////wD//4AAD//////////3AAB///
-        ///////wD//3AAB///////////AACP/////////wD///gACP//////////gAAH/////////wD///cAAH
-        //////////8AAI/////////wD///8AAI//////////+AAA/////////wD///9wAA///////////wAAj/
-        ///////wD////wAAj//////////4AAD////////wD////4AAD//////////3AACP///////wD/////AA
-        CP//////////gAAP///////wD/////gAAP//////////cAAI///////wD/////8AAI//////////8AAA
-        ///////wD/////+AAA//////////9wAAf//////wD/////9wAAAAAAAAAAAAAAAAj//////wD//////4
-        AAAAAAAAAAAAAAAAB//////wD//////3AAAAAAAAAAAAAAAACP/////wD///////AAAAAAAAAAAAAAAA
-        AP/////wD///////cAAAAAAAAAAAAAAAAI/////wD///////8AAI//////////+AAA/////wD///////
-        +AAA//////////9wAAj////wD////////wAAj//////////4AAD////wD////////4AAD//////////3
-        AACP///wD/////////AACP//////////AAAP///wD/////////gAAP//////////cAAH///wD///////
-        //cAAH//////////8AAI///wD/////////+AAA//////////+AAAf//wD/////////9wAAf/////////
-        /wAAj//wD//////////wAAj//////////4AAD//wD//////////3AAB///////////AACP/wD///////
-        ////AACP//////////gAAP/wD///////////gAAP//////////cAAI/wD///////////8AAI////////
-        //+AAA/wD///////////+AAA//////////9wAAjwD////////////wAAj//////////wAADwD///////
-        ///////////////////////wD//////////////////////////////wD///////////////////////
-        ///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAA
-        AABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
-        AADAwMAAwNzAAPDKpgAEBAQACAgIAAwMDAAREREAFhYWABwcHAAiIiIAKSkpAFVVVQBNTU0AQkJCADk5
-        OQCAfP8AUFD/AJMA1gD/7MwAxtbvANbn5wCQqa0AAAAzAAAAZgAAAJkAAADMAAAzAAAAMzMAADNmAAAz
-        mQAAM8wAADP/AABmAAAAZjMAAGZmAABmmQAAZswAAGb/AACZAAAAmTMAAJlmAACZmQAAmcwAAJn/AADM
-        AAAAzDMAAMxmAADMmQAAzMwAAMz/AAD/ZgAA/5kAAP/MADMAAAAzADMAMwBmADMAmQAzAMwAMwD/ADMz
-        AAAzMzMAMzNmADMzmQAzM8wAMzP/ADNmAAAzZjMAM2ZmADNmmQAzZswAM2b/ADOZAAAzmTMAM5lmADOZ
-        mQAzmcwAM5n/ADPMAAAzzDMAM8xmADPMmQAzzMwAM8z/ADP/MwAz/2YAM/+ZADP/zAAz//8AZgAAAGYA
-        MwBmAGYAZgCZAGYAzABmAP8AZjMAAGYzMwBmM2YAZjOZAGYzzABmM/8AZmYAAGZmMwBmZmYAZmaZAGZm
-        zABmmQAAZpkzAGaZZgBmmZkAZpnMAGaZ/wBmzAAAZswzAGbMmQBmzMwAZsz/AGb/AABm/zMAZv+ZAGb/
-        zADMAP8A/wDMAJmZAACZM5kAmQCZAJkAzACZAAAAmTMzAJkAZgCZM8wAmQD/AJlmAACZZjMAmTNmAJlm
-        mQCZZswAmTP/AJmZMwCZmWYAmZmZAJmZzACZmf8AmcwAAJnMMwBmzGYAmcyZAJnMzACZzP8Amf8AAJn/
-        MwCZzGYAmf+ZAJn/zACZ//8AzAAAAJkAMwDMAGYAzACZAMwAzACZMwAAzDMzAMwzZgDMM5kAzDPMAMwz
-        /wDMZgAAzGYzAJlmZgDMZpkAzGbMAJlm/wDMmQAAzJkzAMyZZgDMmZkAzJnMAMyZ/wDMzAAAzMwzAMzM
-        ZgDMzJkAzMzMAMzM/wDM/wAAzP8zAJn/ZgDM/5kAzP/MAMz//wDMADMA/wBmAP8AmQDMMwAA/zMzAP8z
-        ZgD/M5kA/zPMAP8z/wD/ZgAA/2YzAMxmZgD/ZpkA/2bMAMxm/wD/mQAA/5kzAP+ZZgD/mZkA/5nMAP+Z
-        /wD/zAAA/8wzAP/MZgD/zJkA/8zMAP/M/wD//zMAzP9mAP//mQD//8wAZmb/AGb/ZgBm//8A/2ZmAP9m
-        /wD//2YAIQClAF9fXwB3d3cAhoaGAJaWlgDLy8sAsrKyANfX1wDd3d0A4+PjAOrq6gDx8fEA+Pj4APD7
-        /wCkoKAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////////
-        /////////////////wAA////////////////////////////////////////////////////////////
-        /wAA/////////////////////////////////////////////////////////////wAA/xQKCgpt////
-        /////////////////+wKCgoKCgoKCgoKCgoKCgoKCgoKDvP//wAA/wcKCgoK8///////////////////
-        //MOCgoKCgoKCgoKCgoKCgoKCgoKCuz//wAA//8QCgoK7P////////////////////9tCgoKCgoKCgoK
-        CgoKCgoKCgoKCg7//wAA//+SCgoKDvP////////////////////xCgoKCgoKCgoKCgoKCgoKCgoKCgqS
-        /wAA////EAoKCpL/////////////////////bQoKCgoUFBQUFBQUFBQUFBQUFBRt/wAA////7AoKChD/
-        ////////////////////BwoKCgrv/////////////////////wAA////8w4KCgqS////////////////
-        /////xQKCgoU/////////////////////wAA/////+sKCgoU/////////////////////+8KCgoKB///
-        /////////////////wAA//////EKCgoKB/////////////////////8QCgoKbf//////////////////
-        /wAA//////9tCgoKEv////////////////////+SCgoKCvH//////////////////wAA//////+8CgoK
-        CvH/////////////////////DgoKCm3//////////////////wAA////////FAoKCm3/////////////
-        ////////7AoKCgrz/////////////////wAA////////BwoKCgrz////////////////////8w4KCgrs
-        /////////////////wAA/////////xAKCgrs/////////////////////20KCgoO8///////////////
-        /wAA/////////5IKCgoO8/////////////////////EKCgoKkv///////////////wAA//////////8Q
-        CgoKkv////////////////////9tCgoKEP///////////////wAA///////////sCgoKEP//////////
-        //////////8HCgoKCpL//////////////wAA///////////zDgoKCpL/////////////////////FAoK
-        ChT//////////////wAA////////////6woKChT/////////////////////7woKCgoH////////////
-        /wAA////////////8QoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoS/////////////wAA////////////
-        /20KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK8f///////////wAA/////////////7wKCgoKCgoKCgoK
-        CgoKCgoKCgoKCgoKCgoKbf///////////wAA//////////////8UCgoKCgoKCgoKCgoKCgoKCgoKCgoK
-        CgoKCvP//////////wAA//////////////8HCgoKCkMUFBQUFBQUFBQUFBQUFBQUDgoKCuz/////////
-        /wAA////////////////EAoKCuz/////////////////////bQoKCg7z/////////wAA////////////
-        ////kgoKCg7z////////////////////8QoKCgqS/////////wAA/////////////////xAKCgrs////
-        /////////////////20KCgoQ/////////wAA/////////////////+wKCgoQ////////////////////
-        /7wKCgoKkv///////wAA//////////////////MOCgoKkv////////////////////8UCgoKFP//////
-        /wAA///////////////////rCgoKQ/////////////////////8HCgoKCgf//////wAA////////////
-        ///////xCgoKCgf/////////////////////EAoKChL//////wAA////////////////////bQoKChT/
-        ////////////////////kgoKCgrx/////wAA////////////////////vAoKCgrx////////////////
-        /////xAKCgpt/////wAA/////////////////////xQKCgpt/////////////////////+wKCgoK8///
-        /wAA/////////////////////wcKCgoK8f////////////////////MOCgoK7P///wAA////////////
-        //////////9DCgoK7P/////////////////////rCgoKDvP//wAA//////////////////////+SCgoK
-        DvP////////////////////xCgoKCpL//wAA////////////////////////EAoKCuz/////////////
-        ////////bQoKChD//wAA////////////////////////7AoKChD/////////////////////vAoKCgqS
-        /wAA////////////////////////8w4KCgqS/////////////////////xQKCgoU/wAA////////////
-        /////////////////////////////////////////////////wAA////////////////////////////
-        /////////////////////////////////wAA////////////////////////////////////////////
-        /////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAQAAAAIAAAAABAAQAAAAAAAAIAAAAAAAAAAAAABAA
-        AAAQAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A
-        /wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////
-        //////////////////AP////////////////////////////////////////8A//////////////////
-        ///////////////////////wD/////////////////////////////////////////AP+IiIf///////
-        ///////4iIiIiIiIiIiIiIiIiH//8A/wAAAP//////////////gAAAAAAAAAAAAAAAAAD//wD/gAAAj/
-        /////////////wAAAAAAAAAAAAAAAAAI//AP/wAAAP//////////////gAAAAAAAAAAAAAAAAAD/8A//
-        gAAAj//////////////wAAAAAAAAAAAAAAAAAI/wD//wAAAP//////////////gAAAAAAAAAAAAAAAAA
-        D/AP//gAAAf/////////////9wAAAAAAAAAAAAAAAAAH8A//9wAACP//////////////gAAAf///////
-        ///////wD///gAAAf/////////////9wAAAP//////////////AP//9wAACP//////////////AAAAf/
-        ////////////8A////AAAA//////////////+AAACP/////////////wD///9wAACP//////////////
-        AAAAf/////////////AP////AAAA//////////////+AAACP////////////8A////+AAACP////////
-        //////AAAA/////////////wD/////AAAA//////////////+AAACP////////////AP////+AAACP//
-        ////////////AAAA////////////8A//////AAAA//////////////+AAACP///////////wD/////+A
-        AAB//////////////3AAAA////////////AP/////3AAAI//////////////+AAAB///////////8A//
-        ////+AAAB//////////////3AAAA///////////wD//////3AAAI//////////////8AAAB/////////
-        //AP//////8AAAD//////////////3AAAI//////////8A///////3AAAI//////////////8AAAB///
-        ///////wD///////8AAAD//////////////4AAAI//////////AP///////4AAAI//////////////8A
-        AAD/////////8A////////8AAAB3d3d3d3d3d3d3d4AAAI/////////wD////////4AAAAAAAAAAAAAA
-        AAAAAAAAD/////////AP////////8AAAAAAAAAAAAAAAAAAAAAAI////////8A/////////4AAAAAAAA
-        AAAAAAAAAAAAAAD////////wD/////////cAAAAAAAAAAAAAAAAAAAAAAI////////AP/////////4AA
-        AAAAAAAAAAAAAAAAAAAAD///////8A//////////cAAAAAAAAAAAAAAAAAAAAAAH///////wD///////
-        ///wAAAH//////////////cAAAj///////AP//////////cAAAj//////////////wAAAH//////8A//
-        /////////wAAAP//////////////gAAAj//////wD///////////gAAAj//////////////wAAAP////
-        //AP///////////wAAAP//////////////gAAAj/////8A////////////gAAAj//////////////wAA
-        AP/////wD////////////wAAAP//////////////gAAAj/////AP////////////gAAAf///////////
-        //9wAAAP////8A////////////9wAAAP//////////////gAAAj////wD/////////////gAAAf/////
-        ////////9wAAAP////AP////////////9wAACP//////////////AAAAf///8A//////////////AAAA
-        f/////////////9wAACP///wD/////////////9wAACP//////////////AAAAf///AP////////////
-        //AAAA//////////////+AAACP//8A//////////////+AAACP//////////////AAAA///wD///////
-        ////////AAAA//////////////+AAACP//AP//////////////+AAACP//////////////AAAA//8A//
-        //////////////AAAA//////////////+AAACP/wD///////////////+AAAB//////////////3AAAA
-        //AP///////////////3AAAA//////////////+AAACP8A////////////////+AAAB/////////////
-        /3AAAA/wD////////////////3AAAI//////////////8AAAB/AP////////////////////////////
-        ////////////8A/////////////////////////////////////////wD///////////////////////
-        //////////////////AP////////////////////////////////////////8AAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAQAAAAIAA
-        AAABAAgAAAAAAAAQAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDA
-        wADA3MAA8MqmAAQEBAAICAgADAwMABEREQAWFhYAHBwcACIiIgApKSkAVVVVAE1NTQBCQkIAOTk5AIB8
-        /wBQUP8AkwDWAP/szADG1u8A1ufnAJCprQAAADMAAABmAAAAmQAAAMwAADMAAAAzMwAAM2YAADOZAAAz
-        zAAAM/8AAGYAAABmMwAAZmYAAGaZAABmzAAAZv8AAJkAAACZMwAAmWYAAJmZAACZzAAAmf8AAMwAAADM
-        MwAAzGYAAMyZAADMzAAAzP8AAP9mAAD/mQAA/8wAMwAAADMAMwAzAGYAMwCZADMAzAAzAP8AMzMAADMz
-        MwAzM2YAMzOZADMzzAAzM/8AM2YAADNmMwAzZmYAM2aZADNmzAAzZv8AM5kAADOZMwAzmWYAM5mZADOZ
-        zAAzmf8AM8wAADPMMwAzzGYAM8yZADPMzAAzzP8AM/8zADP/ZgAz/5kAM//MADP//wBmAAAAZgAzAGYA
-        ZgBmAJkAZgDMAGYA/wBmMwAAZjMzAGYzZgBmM5kAZjPMAGYz/wBmZgAAZmYzAGZmZgBmZpkAZmbMAGaZ
-        AABmmTMAZplmAGaZmQBmmcwAZpn/AGbMAABmzDMAZsyZAGbMzABmzP8AZv8AAGb/MwBm/5kAZv/MAMwA
-        /wD/AMwAmZkAAJkzmQCZAJkAmQDMAJkAAACZMzMAmQBmAJkzzACZAP8AmWYAAJlmMwCZM2YAmWaZAJlm
-        zACZM/8AmZkzAJmZZgCZmZkAmZnMAJmZ/wCZzAAAmcwzAGbMZgCZzJkAmczMAJnM/wCZ/wAAmf8zAJnM
-        ZgCZ/5kAmf/MAJn//wDMAAAAmQAzAMwAZgDMAJkAzADMAJkzAADMMzMAzDNmAMwzmQDMM8wAzDP/AMxm
-        AADMZjMAmWZmAMxmmQDMZswAmWb/AMyZAADMmTMAzJlmAMyZmQDMmcwAzJn/AMzMAADMzDMAzMxmAMzM
-        mQDMzMwAzMz/AMz/AADM/zMAmf9mAMz/mQDM/8wAzP//AMwAMwD/AGYA/wCZAMwzAAD/MzMA/zNmAP8z
-        mQD/M8wA/zP/AP9mAAD/ZjMAzGZmAP9mmQD/ZswAzGb/AP+ZAAD/mTMA/5lmAP+ZmQD/mcwA/5n/AP/M
-        AAD/zDMA/8xmAP/MmQD/zMwA/8z/AP//MwDM/2YA//+ZAP//zABmZv8AZv9mAGb//wD/ZmYA/2b/AP//
-        ZgAhAKUAX19fAHd3dwCGhoYAlpaWAMvLywCysrIA19fXAN3d3QDj4+MA6urqAPHx8QD4+PgA8Pv/AKSg
-        oACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
-        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK////////////////////////////
-        //////////////////////////////////////////////////////8KCv//////////////////////
-        ////////////////////////////////////////////////////////////Cgr/////////////////
-        /////////////////////////////////////////////////////////////////woK////////////
-        //////////////////////////////////////////////////////////////////////8KCv/z7Ozs
-        7Ozv/////////////////////////////5Ls7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//////Cgr/
-        /xAKCgoKDvP///////////////////////////+SCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoO8///
-        /woK//+SCgoKCgqS////////////////////////////8w4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
-        Cuz///8KCv///xAKCgoKEP/////////////////////////////sCgoKCgoKCgoKCgoKCgoKCgoKCgoK
-        CgoKCgoQ////Cgr////sCgoKCgqS////////////////////////////8woKCgoKCgoKCgoKCgoKCgoK
-        CgoKCgoKCgoKCpL//woK////8w4KCgoKFP////////////////////////////9tCgoKCgoKCgoKCgoK
-        CgoKCgoKCgoKCgoKCgpD//8KCv/////rCgoKCgoH////////////////////////////8QoKCgoKChQU
-        FBQUFBQUFBQUFBQUFBQUFBQUFPH/Cgr/////8QoKCgoKEv////////////////////////////8SCgoK
-        Cgrv/////////////////////////////woK//////9tCgoKCgrx////////////////////////////
-        BwoKCgoKFP////////////////////////////8KCv//////vAoKCgoKbf//////////////////////
-        //////8UCgoKCgoH////////////////////////////Cgr///////8UCgoKCgrz////////////////
-        ////////////kgoKCgoKbf///////////////////////////woK////////BwoKCgoK7P//////////
-        //////////////////8QCgoKCgrx//////////////////////////8KCv////////8QCgoKCg7z////
-        ////////////////////////kgoKCgoKbf//////////////////////////Cgr/////////kgoKCgoK
-        kv////////////////////////////MOCgoKCg7z/////////////////////////woK//////////8Q
-        CgoKChD/////////////////////////////7AoKCgoK7P////////////////////////8KCv//////
-        ////7AoKCgoKkv////////////////////////////MOCgoKCg7/////////////////////////Cgr/
-        //////////MOCgoKChT/////////////////////////////bQoKCgoKkv//////////////////////
-        /woK////////////6woKCgoKB/////////////////////////////EKCgoKChD/////////////////
-        //////8KCv////////////EKCgoKChL/////////////////////////////bQoKCgoK7///////////
-        ////////////Cgr/////////////bQoKCgoK8f///////////////////////////wcKCgoKChT/////
-        /////////////////woK/////////////7wKCgoKCm3/////////////////////////////FAoKCgoK
-        B/////////////////////8KCv//////////////FAoKCgoK8////////////////////////////+8K
-        CgoKCm3/////////////////////Cgr//////////////wcKCgoKCuz/////////////////////////
-        ////EAoKCgoK8f///////////////////woK////////////////EAoKCgoO8///////////////////
-        /////////5IKCgoKCm3///////////////////8KCv///////////////5IKCgoKCpL/////////////
-        ////////////////DgoKCgoK8///////////////////Cgr/////////////////EAoKCgoQBwcHBwcH
-        BwcHBwcHBwcHBwcHBwcHBxIKCgoKCuz//////////////////woK/////////////////+wKCgoKCgoK
-        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoO8/////////////////8KCv/////////////////zDgoK
-        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCpL/////////////////Cgr/////////////////
-        /+sKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQ/////////////////woK////////////
-        ///////xCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCpL///////////////8KCv//////
-        /////////////20KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoU////////////////Cgr/
-        //////////////////+8CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgf/////////////
-        /woK/////////////////////xQKCgoKCvH////////////////////////////vCgoKCgoS////////
-        //////8KCv////////////////////8HCgoKCgrs/////////////////////////////xAKCgoKCvH/
-        ////////////Cgr//////////////////////xAKCgoKDvP///////////////////////////+SCgoK
-        Cgpt/////////////woK//////////////////////+SCgoKCgrs////////////////////////////
-        /w4KCgoKCvP///////////8KCv///////////////////////xAKCgoKEP//////////////////////
-        ///////sCgoKCgrs////////////Cgr////////////////////////sCgoKCgqS////////////////
-        ////////////8w4KCgoKDvP//////////woK////////////////////////8w4KCgoKQ///////////
-        //////////////////9tCgoKCgqS//////////8KCv/////////////////////////sCgoKCgoH////
-        ////////////////////////8QoKCgoKEP//////////Cgr/////////////////////////8QoKCgoK
-        FP////////////////////////////9tCgoKCgqS/////////woK//////////////////////////9t
-        CgoKCgrx////////////////////////////BwoKCgoKFP////////8KCv//////////////////////
-        ////8QoKCgoKbf////////////////////////////8UCgoKCgoH////////Cgr/////////////////
-        //////////8UCgoKCgrx////////////////////////////7woKCgoKEv///////woK////////////
-        ////////////////BwoKCgoK7P////////////////////////////8QCgoKCgrx//////8KCv//////
-        //////////////////////9DCgoKCg7z////////////////////////////kgoKCgoKbf//////Cgr/
-        ////////////////////////////kgoKCgoK7P////////////////////////////8OCgoKCgrz////
-        /woK//////////////////////////////8QCgoKChD/////////////////////////////7AoKCgoK
-        7P////8KCv//////////////////////////////7AoKCgoKkv////////////////////////////MO
-        CgoKCg7z////Cgr///////////////////////////////MOCgoKCkP/////////////////////////
-        ////bQoKCgoKkv///woK////////////////////////////////7AoKCgoKB///////////////////
-        //////////EKCgoKChD///8KCv////////////////////////////////EKCgoKChT/////////////
-        ////////////////bQoKCgoKkv//Cgr/////////////////////////////////bQoKCgoK8f//////
-        /////////////////////wcKCgoKChT//woK//////////////////////////////////EKCgoKCm3/
-        ////////////////////////////FAoKCgoKB/8KCv//////////////////////////////////////
-        ////////////////////////////////////////////Cgr/////////////////////////////////
-        /////////////////////////////////////////////////woK////////////////////////////
-        //////////////////////////////////////////////////////8KCv//////////////////////
-        ////////////////////////////////////////////////////////////CgoKCgoKCgoKCgoKCgoK
-        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-</value>
-  </data>
-</root>
Index: /branches/PluginInfrastructure Refactoring/HeuristicLab/Program.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/Program.cs	(revision 2586)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab/Program.cs	(revision 2587)
@@ -26,5 +26,10 @@
 using System.Threading;
 using System.Text;
+using System.Linq;
 using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.PluginInfrastructure.Advanced;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure.Starter;
+using System.IO;
 
 namespace HeuristicLab {
@@ -32,40 +37,69 @@
     [STAThread]
     static void Main(string[] args) {
-      try {
-        if (args.Length == 0) {  // normal mode
+      if (args.Length == 0) {  // normal mode
+        try {
           Application.EnableVisualStyles();
           Application.SetCompatibleTextRenderingDefault(false);
-          Application.Run(new MainForm());
-        } else if (args.Length == 1) {  // start specific application
-          PluginManager.Manager.Initialize();
+          Application.Run(new StarterForm());
+        }
+        catch (Exception ex) {
+          ShowErrorMessageBox(ex);
+        }
 
-          ApplicationInfo app = null;
-          foreach (ApplicationInfo info in PluginManager.Manager.InstalledApplications) {
-            if (info.Name == args[0])
-              app = info;
-          }
-          if (app == null) {  // application not found
-            MessageBox.Show("Cannot start application.\nApplication " + args[0] + " is not installed.\n\nStarting HeuristicLab in normal mode ...",
-                            "HeuristicLab",
-                            MessageBoxButtons.OK,
-                            MessageBoxIcon.Warning);
-            Application.EnableVisualStyles();
-            Application.SetCompatibleTextRenderingDefault(false);
-            Application.Run(new MainForm());
-          } else {
-            PluginManager.Manager.Run(app);
-          }
+      } else {
+        var cmd = args[0].ToUpperInvariant();
+        string pluginDir = Path.GetFullPath(Application.StartupPath);
+        switch (cmd) {
+          case "START": {
+              if (args.Length != 2) {
+                PrintUsage();
+              } else {
+                Application.EnableVisualStyles();
+                Application.SetCompatibleTextRenderingDefault(false);
+                Application.Run(new StarterForm(args[1]));
+              }
+              break;
+            }
+          case "SHOW": {
+              InstallationManagerConsole managerConsole = new InstallationManagerConsole(pluginDir);
+              managerConsole.Show(args.Skip(1));
+              break;
+            }
+          case "INSTALL": {
+              InstallationManagerConsole managerConsole = new InstallationManagerConsole(pluginDir);
+              managerConsole.Install(args.Skip(1));
+              break;
+            }
+          case "UPDATE": {
+              InstallationManagerConsole managerConsole = new InstallationManagerConsole(pluginDir);
+              managerConsole.Update(args.Skip(1));
+              break;
+            }
+          case "REMOVE": {
+              InstallationManagerConsole managerConsole = new InstallationManagerConsole(pluginDir);
+              managerConsole.Remove(args.Skip(1));
+              break;
+            }
+          default: PrintUsage(); break;
         }
-      }
-      catch (Exception ex) {
-        ShowErrorMessageBox(ex);
       }
     }
 
-    public static void ShowErrorMessageBox(Exception ex) {
-      MessageBox.Show(BuildErrorMessage(ex),
-                      "Error - " + ex.GetType().Name,
-                      MessageBoxButtons.OK,
-                      MessageBoxIcon.Error);
+    private static void PrintUsage() {
+      Console.WriteLine("Usage: HeuristicLab.exe <command> <args>");
+      Console.WriteLine("Commands:");
+      Console.WriteLine("\tstart <application name>");
+      Console.WriteLine("\tshow <plugin name(s)>");
+      Console.WriteLine("\tupdate <plugin name(s)>");
+      Console.WriteLine("\tremove <plugin name(s)>");
+      Console.WriteLine("\tinstall <plugin name(s)>");
+    }
+
+    private static void ShowErrorMessageBox(Exception ex) {
+      MessageBox.Show(null,
+        BuildErrorMessage(ex),
+        "Error - " + ex.GetType().Name,
+        MessageBoxButtons.OK,
+        MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
     }
 
Index: anches/PluginInfrastructure Refactoring/HeuristicLab/SplashScreen.Designer.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/SplashScreen.Designer.cs	(revision 2586)
+++ 	(revision )
@@ -1,236 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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 HeuristicLab.PluginInfrastructure;
-namespace HeuristicLab {
-  partial class SplashScreen {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-    
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashScreen));
-      this.panel = new System.Windows.Forms.Panel();
-      this.closeButton = new System.Windows.Forms.Button();
-      this.imageList = new System.Windows.Forms.ImageList(this.components);
-      this.companyLabel = new System.Windows.Forms.Label();
-      this.userNameLabel = new System.Windows.Forms.Label();
-      this.licensedToLabel = new System.Windows.Forms.Label();
-      this.titleLabel = new System.Windows.Forms.Label();
-      this.versionLabel = new System.Windows.Forms.Label();
-      this.infoLabel = new System.Windows.Forms.Label();
-      this.copyrightLabel = new System.Windows.Forms.Label();
-      this.pictureBox = new System.Windows.Forms.PictureBox();
-      this.panel.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // panel
-      // 
-      this.panel.BackColor = System.Drawing.SystemColors.Window;
-      this.panel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-      this.panel.Controls.Add(this.closeButton);
-      this.panel.Controls.Add(this.companyLabel);
-      this.panel.Controls.Add(this.userNameLabel);
-      this.panel.Controls.Add(this.licensedToLabel);
-      this.panel.Controls.Add(this.titleLabel);
-      this.panel.Controls.Add(this.versionLabel);
-      this.panel.Controls.Add(this.infoLabel);
-      this.panel.Controls.Add(this.copyrightLabel);
-      this.panel.Controls.Add(this.pictureBox);
-      this.panel.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.panel.Location = new System.Drawing.Point(0, 0);
-      this.panel.Name = "panel";
-      this.panel.Size = new System.Drawing.Size(625, 161);
-      this.panel.TabIndex = 0;
-      // 
-      // closeButton
-      // 
-      this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.closeButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
-      this.closeButton.FlatAppearance.BorderColor = System.Drawing.Color.White;
-      this.closeButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Gray;
-      this.closeButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.White;
-      this.closeButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
-      this.closeButton.ForeColor = System.Drawing.Color.White;
-      this.closeButton.ImageIndex = 0;
-      this.closeButton.ImageList = this.imageList;
-      this.closeButton.Location = new System.Drawing.Point(604, 3);
-      this.closeButton.Name = "closeButton";
-      this.closeButton.Size = new System.Drawing.Size(16, 16);
-      this.closeButton.TabIndex = 7;
-      this.closeButton.UseVisualStyleBackColor = true;
-      this.closeButton.Click += new System.EventHandler(this.closeButton_Click);
-      // 
-      // imageList
-      // 
-      this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
-      this.imageList.TransparentColor = System.Drawing.Color.Magenta;
-      this.imageList.Images.SetKeyName(0, "BuilderDialog_delete.bmp");
-      // 
-      // companyLabel
-      // 
-      this.companyLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.companyLabel.Location = new System.Drawing.Point(248, 88);
-      this.companyLabel.Name = "companyLabel";
-      this.companyLabel.Size = new System.Drawing.Size(364, 16);
-      this.companyLabel.TabIndex = 5;
-      this.companyLabel.Text = "Company";
-      this.companyLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // userNameLabel
-      // 
-      this.userNameLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.userNameLabel.BackColor = System.Drawing.SystemColors.Window;
-      this.userNameLabel.Location = new System.Drawing.Point(248, 72);
-      this.userNameLabel.Name = "userNameLabel";
-      this.userNameLabel.Size = new System.Drawing.Size(364, 16);
-      this.userNameLabel.TabIndex = 4;
-      this.userNameLabel.Text = "User";
-      this.userNameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // licensedToLabel
-      // 
-      this.licensedToLabel.Location = new System.Drawing.Point(170, 72);
-      this.licensedToLabel.Name = "licensedToLabel";
-      this.licensedToLabel.Size = new System.Drawing.Size(72, 16);
-      this.licensedToLabel.TabIndex = 3;
-      this.licensedToLabel.Text = "Licensed to:";
-      this.licensedToLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // titleLabel
-      // 
-      this.titleLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.titleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.titleLabel.Location = new System.Drawing.Point(170, 8);
-      this.titleLabel.Name = "titleLabel";
-      this.titleLabel.Size = new System.Drawing.Size(442, 16);
-      this.titleLabel.TabIndex = 0;
-      this.titleLabel.Text = "Title";
-      this.titleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // versionLabel
-      // 
-      this.versionLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.versionLabel.Location = new System.Drawing.Point(170, 24);
-      this.versionLabel.Name = "versionLabel";
-      this.versionLabel.Size = new System.Drawing.Size(442, 16);
-      this.versionLabel.TabIndex = 1;
-      this.versionLabel.Text = "Version ";
-      this.versionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // infoLabel
-      // 
-      this.infoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.infoLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.infoLabel.ForeColor = System.Drawing.SystemColors.GradientActiveCaption;
-      this.infoLabel.Location = new System.Drawing.Point(170, 104);
-      this.infoLabel.Name = "infoLabel";
-      this.infoLabel.Size = new System.Drawing.Size(442, 47);
-      this.infoLabel.TabIndex = 6;
-      this.infoLabel.Text = "Startup Information";
-      this.infoLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // copyrightLabel
-      // 
-      this.copyrightLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.copyrightLabel.Location = new System.Drawing.Point(170, 56);
-      this.copyrightLabel.Name = "copyrightLabel";
-      this.copyrightLabel.Size = new System.Drawing.Size(442, 16);
-      this.copyrightLabel.TabIndex = 2;
-      this.copyrightLabel.Text = "Copyright";
-      this.copyrightLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
-      // 
-      // pictureBox
-      // 
-      this.pictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)));
-      this.pictureBox.Image = global::HeuristicLab.Properties.Resources.Logo_white;
-      this.pictureBox.Location = new System.Drawing.Point(-1, -1);
-      this.pictureBox.Name = "pictureBox";
-      this.pictureBox.Size = new System.Drawing.Size(165, 161);
-      this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
-      this.pictureBox.TabIndex = 0;
-      this.pictureBox.TabStop = false;
-      // 
-      // SplashScreen
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(625, 161);
-      this.ControlBox = false;
-      this.Controls.Add(this.panel);
-      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
-      this.MaximizeBox = false;
-      this.MinimizeBox = false;
-      this.Name = "SplashScreen";
-      this.Opacity = 0.99;
-      this.ShowInTaskbar = false;
-      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
-      this.TopMost = true;
-      this.panel.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Panel panel;
-    private System.Windows.Forms.PictureBox pictureBox;
-    private System.Windows.Forms.Label companyLabel;
-    private System.Windows.Forms.Label userNameLabel;
-    private System.Windows.Forms.Label licensedToLabel;
-    private System.Windows.Forms.Label titleLabel;
-    private System.Windows.Forms.Label versionLabel;
-    private System.Windows.Forms.Label copyrightLabel;
-    private System.Windows.Forms.Label infoLabel;
-    private System.Windows.Forms.ImageList imageList;
-    private System.Windows.Forms.Button closeButton;
-  }
-}
Index: anches/PluginInfrastructure Refactoring/HeuristicLab/SplashScreen.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/SplashScreen.cs	(revision 2586)
+++ 	(revision )
@@ -1,149 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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;
-using System.Collections.Generic;
-using System.Data;
-using System.Drawing;
-using System.Windows.Forms;
-using System.Reflection;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab {
-  public partial class SplashScreen : Form {
-    private const int FADE_INTERVAL = 50;
-    private System.Timers.Timer fadeTimer;
-    private int initialInterval;
-    private object bigLock = new object();
-    private bool closing = false;
-
-    public SplashScreen() {
-      InitializeComponent();
-
-      Assembly assembly = this.GetType().Assembly;
-      object[] attributes = assembly.GetCustomAttributes(false);
-      string user, company;
-
-      titleLabel.Text = Application.ProductName;
-      versionLabel.Text = "Version " + Application.ProductVersion;
-      infoLabel.Text = "";
-
-      foreach(object obj in attributes) {
-        if(obj is AssemblyCopyrightAttribute) {
-          copyrightLabel.Text = "Copyright " + ((AssemblyCopyrightAttribute)obj).Copyright;
-        }
-      }
-
-      try {
-        user = HeuristicLab.Properties.Settings.Default.User;
-        company = HeuristicLab.Properties.Settings.Default.Organization;
-
-        if((user == null) || (user.Equals(""))) {
-          userNameLabel.Text = "-";
-        } else {
-          userNameLabel.Text = user;
-        }
-
-        if((company == null) || (company.Equals(""))) {
-          companyLabel.Text = "-";
-        } else {
-          companyLabel.Text = company;
-        }
-      } catch(Exception) {
-        userNameLabel.Text = "-";
-        companyLabel.Text = "-";
-      }
-    }
-
-    public SplashScreen(int initialInterval, string initialText)
-      : this() {
-      this.initialInterval = initialInterval;
-      infoLabel.Text = initialText;
-    }
-
-    private void SetInfoText(string text) {
-      this.Invoke((MethodInvoker)delegate() { infoLabel.Text = text; });
-    }
-
-    public void Manager_Action(object sender, PluginManagerActionEventArgs e) {
-      string info;
-      if(e.Action == PluginManagerAction.Initializing) info = "Initializing ...";
-      else if(e.Action == PluginManagerAction.InitializingPlugin) info = "Initializing Plugin " + e.Id + " ...";
-      else if(e.Action == PluginManagerAction.InitializedPlugin) info = "Initializing Plugin " + e.Id + " ... Initialized";
-      else if(e.Action == PluginManagerAction.Initialized) {
-        info = "Initialization Completed";
-        fadeTimer = new System.Timers.Timer();
-        fadeTimer.SynchronizingObject = this;
-        fadeTimer.Elapsed += new System.Timers.ElapsedEventHandler(fadeTimer_Elapsed);
-        fadeTimer.Interval = initialInterval;
-        fadeTimer.AutoReset = true;
-        fadeTimer.Start();
-      } else {
-        if(e.Id != null) info = e.Action.ToString() + "   (" + e.Id + ")";
-        else info = e.Action.ToString();
-      }
-      SetInfoText(info);
-      Application.DoEvents();
-    }
-
-    private void fadeTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
-      fadeTimer.Stop();
-      if(InvokeRequired) {
-        Invoke((MethodInvoker)UpdateOpacity);
-      } else {
-        UpdateOpacity();
-      }
-    }
-
-    private void UpdateOpacity() {
-      lock (bigLock) {
-        if (closing) return;
-        if (Opacity > 0.9) {
-          Opacity = 0.9;
-          fadeTimer.Interval = FADE_INTERVAL;
-          fadeTimer.Start();
-        } else if (this.Opacity > 0) {
-          Opacity -= 0.1;
-          fadeTimer.Start();
-        } else {
-          Opacity = 0;
-          CloseSplashScreen();
-        }
-      }
-    }
-
-    private void closeButton_Click(object sender, EventArgs e) {
-      CloseSplashScreen();
-    }
-
-    private void CloseSplashScreen() {
-      lock (bigLock) {
-        if (!closing) { // just close once
-          closing = true;
-          if (fadeTimer != null) fadeTimer.Stop();
-          PluginManager.Manager.Action -= new PluginManagerActionEventHandler(this.Manager_Action); // remove event before calling close
-          Application.DoEvents(); // work up all existing events
-          Close(); // close
-        }
-      }
-    }
-  }
-}
Index: anches/PluginInfrastructure Refactoring/HeuristicLab/SplashScreen.resx
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab/SplashScreen.resx	(revision 2586)
+++ 	(revision )
@@ -1,135 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>219, 17</value>
-  </metadata>
-  <data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
-    <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
-        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAi
-        AQAAAk1TRnQBSQFMAwEBAAEEAQABBAEAARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
-        ARADAAEBAQABGAYAAQz8AAP/nwAD/8AAA/8VAAP/pQAD/xIAA/+rAAP/DwAD/64AA/8JAAP/ugAD/7oA
-        A//AAAP/tAAD/wYAA/+xAAP/DwAD/6gAA/8VAAP/nwAD/x4AA///AP8AFQABQgFNAT4HAAE+AwABKAMA
-        AUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAv8GAAH/AfkGAAHnAf8GAAHDAfMGAAHDAecGAAHhAccGAAHw
-        AY8GAAH4AR8GAAH8AT8GAAH4AR8GAAHwAZ8GAAHBAccGAAGDAeMGAAGPAfEGAAL/BgAC/wYACw==
-</value>
-  </data>
-</root>
