Index: trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/AvailableOperatorsForm.cs
===================================================================
--- trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/AvailableOperatorsForm.cs	(revision 2546)
+++ trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/AvailableOperatorsForm.cs	(revision 2591)
@@ -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: trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendApplication.cs
===================================================================
--- trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendApplication.cs	(revision 2546)
+++ trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendApplication.cs	(revision 2591)
@@ -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: trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendPlugin.cs
===================================================================
--- trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendPlugin.cs	(revision 2546)
+++ trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendPlugin.cs	(revision 2591)
@@ -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: trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/MainForm.cs
===================================================================
--- trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/MainForm.cs	(revision 2546)
+++ trunk/sources/HeuristicLab.AdvancedOptimizationFrontend/3.2/MainForm.cs	(revision 2591)
@@ -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,12 +155,16 @@
       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);
       }
-      LoadFinished(task);
+      finally {
+        LoadFinished(task);
+      }
     }
     private delegate void TaskFinishedDelegate(Task task);
@@ -183,5 +184,5 @@
           editor.Filename = task.filename;
           editor.SaveFinished += new EventHandler(SaveFinished);
-          PluginManager.ControlManager.ShowControl(editor);
+          ControlManager.Manager.ShowControl(editor);
         }
         lock (locker) {
@@ -239,5 +240,5 @@
         } else {
           editor.SaveFinished += new EventHandler(SaveFinished);
-          PluginManager.ControlManager.ShowControl(editor);
+          ControlManager.Manager.ShowControl(editor);
           EnableDisableItems();
         }
@@ -298,5 +299,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);
       }
     }
