Index: /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/AvailableOperatorsForm.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/AvailableOperatorsForm.cs	(revision 2485)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/AvailableOperatorsForm.cs	(revision 2486)
@@ -63,14 +63,11 @@
       builtinOperatorsTreeView.TreeViewNodeSorter = nodeSorter;
 
-      DiscoveryService discoveryService = new DiscoveryService();
-      PluginInfo[] plugins = discoveryService.Plugins;
-      foreach(PluginInfo plugin in plugins) {
+      foreach (var 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) {
+        foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IOperator), plugin)) {
+          if (!type.IsAbstract) {
             TreeNode operatorItem = new TreeNode();
             operatorItem.Text = type.Name;
@@ -80,5 +77,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.AdvancedOptimizationFrontend/3.2/HeuristicLab.AdvancedOptimizationFrontend-3.2.csproj
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLab.AdvancedOptimizationFrontend-3.2.csproj	(revision 2485)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLab.AdvancedOptimizationFrontend-3.2.csproj	(revision 2486)
@@ -11,5 +11,5 @@
     <RootNamespace>HeuristicLab.AdvancedOptimizationFrontend</RootNamespace>
     <AssemblyName>HeuristicLab.AdvancedOptimizationFrontend-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.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendApplication.cs
===================================================================
--- /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendApplication.cs	(revision 2485)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendApplication.cs	(revision 2486)
@@ -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 2485)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/HeuristicLabAdvancedOptimizationFrontendPlugin.cs	(revision 2486)
@@ -30,7 +30,7 @@
   /// 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")]
+  [Plugin("HeuristicLab.AdvancedOptimizationFrontend-3.2")]
+  [PluginFile("HeuristicLab.AdvancedOptimizationFrontend-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-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 2485)
+++ /branches/PluginInfrastructure Refactoring/HeuristicLab.AdvancedOptimizationFrontend/3.2/MainForm.cs	(revision 2486)
@@ -32,4 +32,5 @@
 using HeuristicLab.Core;
 using System.IO;
+using System.Linq;
 
 namespace HeuristicLab.AdvancedOptimizationFrontend {
@@ -68,13 +69,5 @@
       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);
-      foreach (Type type in creatables) {
+      foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IEditable)).OrderBy(x => x.Name)) {
         if (!type.IsAbstract) {
           ToolStripMenuItem item = new ToolStripMenuItem();
@@ -101,5 +94,5 @@
     /// <param name="control">The control to display.</param>
     public void ShowControl(IControl control) {
-      if (InvokeRequired) Invoke((Action<IControl>)ShowControl,control);
+      if (InvokeRequired) Invoke((Action<IControl>)ShowControl, control);
       else {
         DockContent content;
@@ -132,5 +125,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 +151,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 +180,5 @@
           editor.Filename = task.filename;
           editor.SaveFinished += new EventHandler(SaveFinished);
-          PluginManager.ControlManager.ShowControl(editor);
+          ControlManager.Manager.ShowControl(editor);
         }
         lock (locker) {
@@ -239,5 +236,5 @@
         } else {
           editor.SaveFinished += new EventHandler(SaveFinished);
-          PluginManager.ControlManager.ShowControl(editor);
+          ControlManager.Manager.ShowControl(editor);
           EnableDisableItems();
         }
@@ -298,5 +295,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);
       }
     }
