Index: /trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- /trunk/sources/HeuristicLab 3.3.sln	(revision 2795)
+++ /trunk/sources/HeuristicLab 3.3.sln	(revision 2796)
@@ -75,4 +75,5 @@
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6} = {958B43BC-CC5C-4FA2-8628-2B3B01D890B6}
 		{AB687BBE-1BFE-476B-906D-44237135431D} = {AB687BBE-1BFE-476B-906D-44237135431D}
+		{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C} = {DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}
 		{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B} = {102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC} = {EE2034D9-6E27-48A1-B855-42D45F69A4FC}
@@ -133,4 +134,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Netron-3.0.2672.12446", "HeuristicLab.ExtLibs\HeuristicLab.Netron\3.0.2672.12446\HeuristicLab.Netron-3.0.2672.12446\HeuristicLab.Netron-3.0.2672.12446.csproj", "{BB994448-2B21-4564-BB2E-38D8FFF8CF18}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Routing.TSP.Views-3.3", "HeuristicLab.Routing.TSP.Views\3.3\HeuristicLab.Routing.TSP.Views-3.3.csproj", "{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}"
 EndProject
 Global
@@ -578,4 +581,12 @@
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|x64.ActiveCfg = Release|Any CPU
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|x86.ActiveCfg = Release|Any CPU
+		{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}.Release|x64.ActiveCfg = Release|Any CPU
+		{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /trunk/sources/HeuristicLab 3.3/Files.txt
===================================================================
--- /trunk/sources/HeuristicLab 3.3/Files.txt	(revision 2795)
+++ /trunk/sources/HeuristicLab 3.3/Files.txt	(revision 2796)
@@ -29,4 +29,5 @@
 HeuristicLab.Random\3.3:HeuristicLab.Random-3.3.dll 
 HeuristicLab.Routing.TSP\3.3:HeuristicLab.Routing.TSP-3.3.dll 
+HeuristicLab.Routing.TSP.Views\3.3:HeuristicLab.Routing.TSP.Views-3.3.dll 
 HeuristicLab.Selection\3.3:HeuristicLab.Selection-3.3.dll 
 HeuristicLab.Selection.OffspringSelection\3.3:HeuristicLab.Selection.OffspringSelection-3.3.dll 
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/CreateParameterDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/CreateParameterDialog.Designer.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/CreateParameterDialog.Designer.cs	(revision 2796)
@@ -120,5 +120,5 @@
       this.descriptionTextBox.Name = "descriptionTextBox";
       this.descriptionTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-      this.descriptionTextBox.Size = new System.Drawing.Size(452, 103);
+      this.descriptionTextBox.Size = new System.Drawing.Size(452, 102);
       this.descriptionTextBox.TabIndex = 4;
       // 
@@ -127,5 +127,5 @@
       this.dataTypeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
       this.dataTypeLabel.AutoSize = true;
-      this.dataTypeLabel.Location = new System.Drawing.Point(9, 426);
+      this.dataTypeLabel.Location = new System.Drawing.Point(12, 425);
       this.dataTypeLabel.Name = "dataTypeLabel";
       this.dataTypeLabel.Size = new System.Drawing.Size(60, 13);
@@ -138,8 +138,8 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.dataTypeTextBox.Enabled = false;
-      this.dataTypeTextBox.Location = new System.Drawing.Point(78, 423);
+      this.dataTypeTextBox.Location = new System.Drawing.Point(78, 422);
       this.dataTypeTextBox.Name = "dataTypeTextBox";
       this.dataTypeTextBox.ReadOnly = true;
-      this.dataTypeTextBox.Size = new System.Drawing.Size(423, 20);
+      this.dataTypeTextBox.Size = new System.Drawing.Size(422, 20);
       this.dataTypeTextBox.TabIndex = 6;
       // 
@@ -149,7 +149,7 @@
       this.setDataTypeButton.Enabled = false;
       this.setDataTypeButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Add;
-      this.setDataTypeButton.Location = new System.Drawing.Point(507, 421);
+      this.setDataTypeButton.Location = new System.Drawing.Point(506, 420);
       this.setDataTypeButton.Name = "setDataTypeButton";
-      this.setDataTypeButton.Size = new System.Drawing.Size(23, 23);
+      this.setDataTypeButton.Size = new System.Drawing.Size(24, 24);
       this.setDataTypeButton.TabIndex = 7;
       this.toolTip.SetToolTip(this.setDataTypeButton, "Set Data Type");
@@ -193,5 +193,4 @@
       this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
       this.Text = "Create Parameter";
-      this.Load += new System.EventHandler(this.CreateParameterDialog_Load);
       this.ResumeLayout(false);
       this.PerformLayout();
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/CreateParameterDialog.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/CreateParameterDialog.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/CreateParameterDialog.cs	(revision 2796)
@@ -35,4 +35,7 @@
     protected TypeSelectorDialog typeSelectorDialog;
 
+    public TypeSelector ParameterTypeSelector {
+      get { return parameterTypeSelector; }
+    }
     public IParameter Parameter {
       get {
@@ -56,4 +59,5 @@
     public CreateParameterDialog() {
       InitializeComponent();
+      parameterTypeSelector.Configure(typeof(IParameter), false, true);
     }
 
@@ -70,8 +74,4 @@
       }
       okButton.Enabled = dataTypeTextBox.Tag != null;
-    }
-
-    protected virtual void CreateParameterDialog_Load(object sender, EventArgs e) {
-      parameterTypeSelector.Configure(typeof(IParameter), false, true);
     }
 
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.Designer.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.Designer.cs	(revision 2796)
@@ -33,4 +33,5 @@
     protected override void Dispose(bool disposing) {
       if (disposing) {
+        if (typeSelectorDialog != null) typeSelectorDialog.Dispose();
         if (components != null) components.Dispose();
       }
@@ -54,10 +55,21 @@
       this.startButton = new System.Windows.Forms.Button();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.newProblemButton = new System.Windows.Forms.Button();
+      this.openProblemButton = new System.Windows.Forms.Button();
+      this.saveProblemButton = new System.Windows.Forms.Button();
+      this.newOperatorGraphButton = new System.Windows.Forms.Button();
+      this.openOperatorGraphButton = new System.Windows.Forms.Button();
+      this.saveOperatorGraphButton = new System.Windows.Forms.Button();
       this.tabControl = new System.Windows.Forms.TabControl();
       this.operatorGraphTabPage = new System.Windows.Forms.TabPage();
       this.globalScopeTabPage = new System.Windows.Forms.TabPage();
+      this.problemTabPage = new System.Windows.Forms.TabPage();
+      this.problemViewHost = new HeuristicLab.Core.Views.ViewHost();
+      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
+      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
       this.tabControl.SuspendLayout();
       this.operatorGraphTabPage.SuspendLayout();
       this.globalScopeTabPage.SuspendLayout();
+      this.problemTabPage.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -87,8 +99,9 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.operatorGraphView.Caption = "Operator Graph";
-      this.operatorGraphView.Location = new System.Drawing.Point(6, 6);
+      this.operatorGraphView.Content = null;
+      this.operatorGraphView.Location = new System.Drawing.Point(6, 36);
       this.operatorGraphView.Name = "operatorGraphView";
-      this.operatorGraphView.Size = new System.Drawing.Size(782, 573);
-      this.operatorGraphView.TabIndex = 0;
+      this.operatorGraphView.Size = new System.Drawing.Size(782, 542);
+      this.operatorGraphView.TabIndex = 3;
       // 
       // scopeView
@@ -98,7 +111,8 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.scopeView.Caption = "Scope";
+      this.scopeView.Content = null;
       this.scopeView.Location = new System.Drawing.Point(6, 6);
       this.scopeView.Name = "scopeView";
-      this.scopeView.Size = new System.Drawing.Size(782, 573);
+      this.scopeView.Size = new System.Drawing.Size(782, 572);
       this.scopeView.TabIndex = 0;
       // 
@@ -107,7 +121,7 @@
       this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
       this.resetButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Restart;
-      this.resetButton.Location = new System.Drawing.Point(58, 617);
+      this.resetButton.Location = new System.Drawing.Point(60, 616);
       this.resetButton.Name = "resetButton";
-      this.resetButton.Size = new System.Drawing.Size(23, 23);
+      this.resetButton.Size = new System.Drawing.Size(24, 24);
       this.resetButton.TabIndex = 3;
       this.toolTip.SetToolTip(this.resetButton, "Reset Engine");
@@ -120,7 +134,7 @@
       this.stopButton.Enabled = false;
       this.stopButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Stop;
-      this.stopButton.Location = new System.Drawing.Point(29, 617);
+      this.stopButton.Location = new System.Drawing.Point(30, 616);
       this.stopButton.Name = "stopButton";
-      this.stopButton.Size = new System.Drawing.Size(23, 23);
+      this.stopButton.Size = new System.Drawing.Size(24, 24);
       this.stopButton.TabIndex = 2;
       this.toolTip.SetToolTip(this.stopButton, "Stop Engine");
@@ -132,11 +146,77 @@
       this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
       this.startButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Play;
-      this.startButton.Location = new System.Drawing.Point(0, 617);
+      this.startButton.Location = new System.Drawing.Point(0, 616);
       this.startButton.Name = "startButton";
-      this.startButton.Size = new System.Drawing.Size(23, 23);
+      this.startButton.Size = new System.Drawing.Size(24, 24);
       this.startButton.TabIndex = 1;
       this.toolTip.SetToolTip(this.startButton, "Start Engine");
       this.startButton.UseVisualStyleBackColor = true;
       this.startButton.Click += new System.EventHandler(this.startButton_Click);
+      // 
+      // newProblemButton
+      // 
+      this.newProblemButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.NewDocument;
+      this.newProblemButton.Location = new System.Drawing.Point(6, 6);
+      this.newProblemButton.Name = "newProblemButton";
+      this.newProblemButton.Size = new System.Drawing.Size(24, 24);
+      this.newProblemButton.TabIndex = 0;
+      this.toolTip.SetToolTip(this.newProblemButton, "Create New Problem");
+      this.newProblemButton.UseVisualStyleBackColor = true;
+      this.newProblemButton.Click += new System.EventHandler(this.newProblemButton_Click);
+      // 
+      // openProblemButton
+      // 
+      this.openProblemButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Open;
+      this.openProblemButton.Location = new System.Drawing.Point(36, 6);
+      this.openProblemButton.Name = "openProblemButton";
+      this.openProblemButton.Size = new System.Drawing.Size(24, 24);
+      this.openProblemButton.TabIndex = 1;
+      this.toolTip.SetToolTip(this.openProblemButton, "Open Problem");
+      this.openProblemButton.UseVisualStyleBackColor = true;
+      this.openProblemButton.Click += new System.EventHandler(this.openProblemButton_Click);
+      // 
+      // saveProblemButton
+      // 
+      this.saveProblemButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Save;
+      this.saveProblemButton.Location = new System.Drawing.Point(66, 6);
+      this.saveProblemButton.Name = "saveProblemButton";
+      this.saveProblemButton.Size = new System.Drawing.Size(24, 24);
+      this.saveProblemButton.TabIndex = 2;
+      this.toolTip.SetToolTip(this.saveProblemButton, "Save Problem");
+      this.saveProblemButton.UseVisualStyleBackColor = true;
+      this.saveProblemButton.Click += new System.EventHandler(this.saveProblemButton_Click);
+      // 
+      // newOperatorGraphButton
+      // 
+      this.newOperatorGraphButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.NewDocument;
+      this.newOperatorGraphButton.Location = new System.Drawing.Point(6, 6);
+      this.newOperatorGraphButton.Name = "newOperatorGraphButton";
+      this.newOperatorGraphButton.Size = new System.Drawing.Size(24, 24);
+      this.newOperatorGraphButton.TabIndex = 0;
+      this.toolTip.SetToolTip(this.newOperatorGraphButton, "Create New Operator Graph");
+      this.newOperatorGraphButton.UseVisualStyleBackColor = true;
+      this.newOperatorGraphButton.Click += new System.EventHandler(this.newOperatorGraphButton_Click);
+      // 
+      // openOperatorGraphButton
+      // 
+      this.openOperatorGraphButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Open;
+      this.openOperatorGraphButton.Location = new System.Drawing.Point(36, 6);
+      this.openOperatorGraphButton.Name = "openOperatorGraphButton";
+      this.openOperatorGraphButton.Size = new System.Drawing.Size(24, 24);
+      this.openOperatorGraphButton.TabIndex = 1;
+      this.toolTip.SetToolTip(this.openOperatorGraphButton, "Open Operator Graph");
+      this.openOperatorGraphButton.UseVisualStyleBackColor = true;
+      this.openOperatorGraphButton.Click += new System.EventHandler(this.openOperatorGraphButton_Click);
+      // 
+      // saveOperatorGraphButton
+      // 
+      this.saveOperatorGraphButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Save;
+      this.saveOperatorGraphButton.Location = new System.Drawing.Point(66, 6);
+      this.saveOperatorGraphButton.Name = "saveOperatorGraphButton";
+      this.saveOperatorGraphButton.Size = new System.Drawing.Size(24, 24);
+      this.saveOperatorGraphButton.TabIndex = 2;
+      this.toolTip.SetToolTip(this.saveOperatorGraphButton, "Save Operator Graph");
+      this.saveOperatorGraphButton.UseVisualStyleBackColor = true;
+      this.saveOperatorGraphButton.Click += new System.EventHandler(this.saveOperatorGraphButton_Click);
       // 
       // tabControl
@@ -147,17 +227,21 @@
       this.tabControl.Controls.Add(this.operatorGraphTabPage);
       this.tabControl.Controls.Add(this.globalScopeTabPage);
+      this.tabControl.Controls.Add(this.problemTabPage);
       this.tabControl.Location = new System.Drawing.Point(0, 0);
       this.tabControl.Name = "tabControl";
       this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(802, 611);
-      this.tabControl.TabIndex = 0;
+      this.tabControl.Size = new System.Drawing.Size(802, 610);
+      this.tabControl.TabIndex = 3;
       // 
       // operatorGraphTabPage
       // 
+      this.operatorGraphTabPage.Controls.Add(this.saveOperatorGraphButton);
+      this.operatorGraphTabPage.Controls.Add(this.openOperatorGraphButton);
+      this.operatorGraphTabPage.Controls.Add(this.newOperatorGraphButton);
       this.operatorGraphTabPage.Controls.Add(this.operatorGraphView);
       this.operatorGraphTabPage.Location = new System.Drawing.Point(4, 22);
       this.operatorGraphTabPage.Name = "operatorGraphTabPage";
       this.operatorGraphTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.operatorGraphTabPage.Size = new System.Drawing.Size(794, 585);
+      this.operatorGraphTabPage.Size = new System.Drawing.Size(794, 584);
       this.operatorGraphTabPage.TabIndex = 0;
       this.operatorGraphTabPage.Text = "Operator Graph";
@@ -170,8 +254,48 @@
       this.globalScopeTabPage.Name = "globalScopeTabPage";
       this.globalScopeTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.globalScopeTabPage.Size = new System.Drawing.Size(794, 585);
+      this.globalScopeTabPage.Size = new System.Drawing.Size(794, 584);
       this.globalScopeTabPage.TabIndex = 1;
       this.globalScopeTabPage.Text = "Global Scope";
       this.globalScopeTabPage.UseVisualStyleBackColor = true;
+      // 
+      // problemTabPage
+      // 
+      this.problemTabPage.Controls.Add(this.saveProblemButton);
+      this.problemTabPage.Controls.Add(this.openProblemButton);
+      this.problemTabPage.Controls.Add(this.newProblemButton);
+      this.problemTabPage.Controls.Add(this.problemViewHost);
+      this.problemTabPage.Location = new System.Drawing.Point(4, 22);
+      this.problemTabPage.Name = "problemTabPage";
+      this.problemTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.problemTabPage.Size = new System.Drawing.Size(794, 584);
+      this.problemTabPage.TabIndex = 2;
+      this.problemTabPage.Text = "Problem";
+      this.problemTabPage.UseVisualStyleBackColor = true;
+      // 
+      // problemViewHost
+      // 
+      this.problemViewHost.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.problemViewHost.Content = null;
+      this.problemViewHost.Location = new System.Drawing.Point(6, 36);
+      this.problemViewHost.Name = "problemViewHost";
+      this.problemViewHost.Size = new System.Drawing.Size(782, 542);
+      this.problemViewHost.TabIndex = 3;
+      // 
+      // openFileDialog
+      // 
+      this.openFileDialog.DefaultExt = "hl";
+      this.openFileDialog.FileName = "Item";
+      this.openFileDialog.Filter = "HeuristicLab Files|*.hl|All Files|*.*";
+      this.openFileDialog.Title = "Open File";
+      // 
+      // saveFileDialog
+      // 
+      this.saveFileDialog.DefaultExt = "hl";
+      this.saveFileDialog.FileName = "Item";
+      this.saveFileDialog.Filter = "Uncompressed HeuristicLab Files|*.hl|HeuristicLab Files|*.hl|All Files|*.*";
+      this.saveFileDialog.FilterIndex = 2;
+      this.saveFileDialog.Title = "Save File";
       // 
       // EngineView
@@ -190,4 +314,5 @@
       this.operatorGraphTabPage.ResumeLayout(false);
       this.globalScopeTabPage.ResumeLayout(false);
+      this.problemTabPage.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -208,4 +333,14 @@
     protected System.Windows.Forms.TabPage operatorGraphTabPage;
     protected System.Windows.Forms.TabPage globalScopeTabPage;
+    protected System.Windows.Forms.TabPage problemTabPage;
+    protected ViewHost problemViewHost;
+    protected System.Windows.Forms.Button newProblemButton;
+    protected System.Windows.Forms.Button saveOperatorGraphButton;
+    protected System.Windows.Forms.Button openOperatorGraphButton;
+    protected System.Windows.Forms.Button newOperatorGraphButton;
+    protected System.Windows.Forms.Button saveProblemButton;
+    protected System.Windows.Forms.Button openProblemButton;
+    protected System.Windows.Forms.OpenFileDialog openFileDialog;
+    protected System.Windows.Forms.SaveFileDialog saveFileDialog;
 
   }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.cs	(revision 2796)
@@ -30,4 +30,5 @@
 using HeuristicLab.Common;
 using HeuristicLab.MainForm;
+using HeuristicLab.Persistence.Default.Xml;
 
 namespace HeuristicLab.Core.Views {
@@ -38,4 +39,5 @@
   [Content(typeof(IEngine), false)]
   public partial class EngineView : ItemView {
+    protected TypeSelectorDialog typeSelectorDialog;
     private int executionTimeCounter;
 
@@ -66,4 +68,5 @@
     protected override void DeregisterContentEvents() {
       Content.OperatorGraphChanged -= new EventHandler(Content_OperatorGraphChanged);
+      Content.ProblemChanged -= new EventHandler(Content_ProblemChanged);
       Content.Prepared -= new EventHandler(Content_Prepared);
       Content.Started -= new EventHandler(Content_Started);
@@ -81,4 +84,5 @@
       base.RegisterContentEvents();
       Content.OperatorGraphChanged += new EventHandler(Content_OperatorGraphChanged);
+      Content.ProblemChanged += new EventHandler(Content_ProblemChanged);
       Content.Prepared += new EventHandler(Content_Prepared);
       Content.Started += new EventHandler(Content_Started);
@@ -96,12 +100,21 @@
       stopButton.Enabled = false;
       if (Content == null) {
+        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = false;
         operatorGraphView.Enabled = false;
         scopeView.Enabled = false;
-        startButton.Enabled = false;
-        resetButton.Enabled = false;
+        newProblemButton.Enabled = openProblemButton.Enabled = saveProblemButton.Enabled = false;
+        problemViewHost.Enabled = false;
+        startButton.Enabled = resetButton.Enabled = false;
         executionTimeTextBox.Enabled = false;
       } else {
+        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = true;
         operatorGraphView.Content = Content.OperatorGraph;
+        operatorGraphView.Enabled = true;
         scopeView.Content = Content.GlobalScope;
+        scopeView.Enabled = true;
+        newProblemButton.Enabled = openProblemButton.Enabled = true;
+        saveProblemButton.Enabled = Content.Problem != null;
+        problemViewHost.Content = Content.Problem;
+        problemViewHost.Enabled = true;
         startButton.Enabled = !Content.Finished;
         resetButton.Enabled = true;
@@ -118,10 +131,22 @@
         operatorGraphView.Content = Content.OperatorGraph;
     }
+    protected void Content_ProblemChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ProblemChanged), sender, e);
+      else {
+        saveProblemButton.Enabled = Content.Problem != null;
+        problemViewHost.Content = Content.Problem;
+      }
+    }
     protected virtual void Content_Prepared(object sender, EventArgs e) {
       if (InvokeRequired)
         Invoke(new EventHandler(Content_Prepared), sender, e);
       else {
+        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = true;
         operatorGraphView.Enabled = true;
         scopeView.Enabled = true;
+        newProblemButton.Enabled = openProblemButton.Enabled = true;
+        saveProblemButton.Enabled = Content.Problem != null;
+        problemViewHost.Enabled = true;
         startButton.Enabled = !Content.Finished;
         stopButton.Enabled = false;
@@ -135,6 +160,9 @@
         Invoke(new EventHandler(Content_Started), sender, e);
       else {
+        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = false;
         operatorGraphView.Enabled = false;
         scopeView.Enabled = false;
+        newProblemButton.Enabled = openProblemButton.Enabled = saveProblemButton.Enabled = false;
+        problemViewHost.Enabled = false;
         startButton.Enabled = false;
         stopButton.Enabled = true;
@@ -147,6 +175,10 @@
         Invoke(new EventHandler(Content_Stopped), sender, e);
       else {
+        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = true;
         operatorGraphView.Enabled = true;
         scopeView.Enabled = true;
+        newProblemButton.Enabled = openProblemButton.Enabled = true;
+        saveProblemButton.Enabled = Content.Problem != null;
+        problemViewHost.Enabled = true;
         startButton.Enabled = !Content.Finished;
         stopButton.Enabled = false;
@@ -171,4 +203,78 @@
 
     #region Button events
+    protected void newOperatorGraphButton_Click(object sender, EventArgs e) {
+      Content.OperatorGraph = new OperatorGraph();
+    }
+    protected void openOperatorGraphButton_Click(object sender, EventArgs e) {
+      openFileDialog.Title = "Open Operator Graph";
+      if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
+        OperatorGraph operatorGraph = null;
+        try {
+          operatorGraph = XmlParser.Deserialize(openFileDialog.FileName) as OperatorGraph;
+        }
+        catch (Exception ex) {
+          Auxiliary.ShowErrorMessageBox(ex);
+        }
+        if (operatorGraph == null)
+          MessageBox.Show(this, "Selected file does not contain an operator graph.", "Invalid File", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        else
+          Content.OperatorGraph = operatorGraph;
+      }
+    }
+    protected void saveOperatorGraphButton_Click(object sender, EventArgs e) {
+      saveFileDialog.Title = "Save Operator Graph";
+      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
+        try {
+          if (saveFileDialog.FilterIndex == 1)
+            XmlGenerator.Serialize(Content.OperatorGraph, saveFileDialog.FileName, 0);
+          else
+            XmlGenerator.Serialize(Content.OperatorGraph, saveFileDialog.FileName, 9);
+        }
+        catch (Exception ex) {
+          Auxiliary.ShowErrorMessageBox(ex);
+        }
+      }
+    }
+    protected void newProblemButton_Click(object sender, EventArgs e) {
+      if (typeSelectorDialog == null) {
+        typeSelectorDialog = new TypeSelectorDialog();
+      }
+      typeSelectorDialog.Caption = "Select Problem";
+      typeSelectorDialog.TypeSelector.Configure(typeof(IProblem), false, false);
+
+      if (typeSelectorDialog.ShowDialog(this) == DialogResult.OK) {
+        Content.Problem = (IProblem)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
+      }
+    }
+    protected void openProblemButton_Click(object sender, EventArgs e) {
+      openFileDialog.Title = "Open Problem";
+      if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
+        IProblem problem = null;
+        try {
+          problem = XmlParser.Deserialize(openFileDialog.FileName) as IProblem;
+        }
+        catch (Exception ex) {
+          Auxiliary.ShowErrorMessageBox(ex);
+        }
+        if (problem == null)
+          MessageBox.Show(this, "Selected file does not contain a problem.", "Invalid File", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        else
+          Content.Problem = problem;
+      }
+    }
+    protected void saveProblemButton_Click(object sender, EventArgs e) {
+      saveFileDialog.Title = "Save Problem";
+      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
+        try {
+          if (saveFileDialog.FilterIndex == 1)
+            XmlGenerator.Serialize(Content.Problem, saveFileDialog.FileName, 0);
+          else
+            XmlGenerator.Serialize(Content.Problem, saveFileDialog.FileName, 9);
+        }
+        catch (Exception ex) {
+          Auxiliary.ShowErrorMessageBox(ex);
+        }
+      }
+    }
     protected virtual void startButton_Click(object sender, EventArgs e) {
       Content.Start();
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2796)
@@ -53,4 +53,10 @@
   <ItemGroup>
     <None Include="HeuristicLabCoreViewsPlugin.cs.frame" />
+    <Compile Include="ValueParameterCollectionView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ValueParameterCollectionView.Designer.cs">
+      <DependentUpon>ValueParameterCollectionView.cs</DependentUpon>
+    </Compile>
     <Compile Include="ItemArrayView.cs">
       <SubType>UserControl</SubType>
@@ -107,4 +113,16 @@
     <Compile Include="OperatorTreeView.Designer.cs">
       <DependentUpon>OperatorTreeView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="OperatorView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="OperatorView.Designer.cs">
+      <DependentUpon>OperatorView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ProblemView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProblemView.Designer.cs">
+      <DependentUpon>ProblemView.cs</DependentUpon>
     </Compile>
     <Compile Include="TypeSelectorDialog.cs">
@@ -223,4 +241,8 @@
       <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
       <Name>HeuristicLab.MainForm-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLabCoreViewsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLabCoreViewsPlugin.cs.frame	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLabCoreViewsPlugin.cs.frame	(revision 2796)
@@ -37,4 +37,5 @@
   [PluginDependency("HeuristicLab.MainForm", "3.2")]
   [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.2")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabCoreViewsPlugin : PluginBase {
   }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs	(revision 2796)
@@ -96,5 +96,5 @@
       this.moveUpButton.Location = new System.Drawing.Point(3, 3);
       this.moveUpButton.Name = "moveUpButton";
-      this.moveUpButton.Size = new System.Drawing.Size(23, 23);
+      this.moveUpButton.Size = new System.Drawing.Size(24, 24);
       this.moveUpButton.TabIndex = 0;
       this.toolTip.SetToolTip(this.moveUpButton, "Move Up");
@@ -106,7 +106,7 @@
       this.moveDownButton.Enabled = false;
       this.moveDownButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.ArrowDown;
-      this.moveDownButton.Location = new System.Drawing.Point(32, 3);
+      this.moveDownButton.Location = new System.Drawing.Point(33, 3);
       this.moveDownButton.Name = "moveDownButton";
-      this.moveDownButton.Size = new System.Drawing.Size(23, 23);
+      this.moveDownButton.Size = new System.Drawing.Size(24, 24);
       this.moveDownButton.TabIndex = 1;
       this.toolTip.SetToolTip(this.moveDownButton, "Move Down");
@@ -124,8 +124,8 @@
       this.itemsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
       this.itemsListView.HideSelection = false;
-      this.itemsListView.Location = new System.Drawing.Point(3, 32);
+      this.itemsListView.Location = new System.Drawing.Point(3, 33);
       this.itemsListView.Name = "itemsListView";
       this.itemsListView.ShowItemToolTips = true;
-      this.itemsListView.Size = new System.Drawing.Size(194, 287);
+      this.itemsListView.Size = new System.Drawing.Size(194, 286);
       this.itemsListView.SmallImageList = this.imageList;
       this.itemsListView.TabIndex = 2;
@@ -153,5 +153,5 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.detailsGroupBox.Controls.Add(this.viewHost);
-      this.detailsGroupBox.Location = new System.Drawing.Point(3, 26);
+      this.detailsGroupBox.Location = new System.Drawing.Point(3, 27);
       this.detailsGroupBox.Name = "detailsGroupBox";
       this.detailsGroupBox.Size = new System.Drawing.Size(283, 294);
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs	(revision 2796)
@@ -104,8 +104,8 @@
       this.itemsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
       this.itemsListView.HideSelection = false;
-      this.itemsListView.Location = new System.Drawing.Point(3, 32);
+      this.itemsListView.Location = new System.Drawing.Point(3, 33);
       this.itemsListView.Name = "itemsListView";
       this.itemsListView.ShowItemToolTips = true;
-      this.itemsListView.Size = new System.Drawing.Size(244, 328);
+      this.itemsListView.Size = new System.Drawing.Size(244, 327);
       this.itemsListView.SmallImageList = this.imageList;
       this.itemsListView.TabIndex = 4;
@@ -131,7 +131,7 @@
       this.sortDescendingButton.Enabled = false;
       this.sortDescendingButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.SortUp;
-      this.sortDescendingButton.Location = new System.Drawing.Point(32, 3);
+      this.sortDescendingButton.Location = new System.Drawing.Point(33, 3);
       this.sortDescendingButton.Name = "sortDescendingButton";
-      this.sortDescendingButton.Size = new System.Drawing.Size(23, 23);
+      this.sortDescendingButton.Size = new System.Drawing.Size(24, 24);
       this.sortDescendingButton.TabIndex = 1;
       this.toolTip.SetToolTip(this.sortDescendingButton, "Sort Descending");
@@ -143,7 +143,7 @@
       this.sortAscendingButton.Enabled = false;
       this.sortAscendingButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Sort;
-      this.sortAscendingButton.Location = new System.Drawing.Point(61, 3);
+      this.sortAscendingButton.Location = new System.Drawing.Point(63, 3);
       this.sortAscendingButton.Name = "sortAscendingButton";
-      this.sortAscendingButton.Size = new System.Drawing.Size(23, 23);
+      this.sortAscendingButton.Size = new System.Drawing.Size(24, 24);
       this.sortAscendingButton.TabIndex = 2;
       this.toolTip.SetToolTip(this.sortAscendingButton, "Sort Ascending");
@@ -155,7 +155,7 @@
       this.removeButton.Enabled = false;
       this.removeButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove;
-      this.removeButton.Location = new System.Drawing.Point(90, 3);
+      this.removeButton.Location = new System.Drawing.Point(93, 3);
       this.removeButton.Name = "removeButton";
-      this.removeButton.Size = new System.Drawing.Size(23, 23);
+      this.removeButton.Size = new System.Drawing.Size(24, 24);
       this.removeButton.TabIndex = 3;
       this.toolTip.SetToolTip(this.removeButton, "Remove");
@@ -168,5 +168,5 @@
       this.addButton.Location = new System.Drawing.Point(3, 3);
       this.addButton.Name = "addButton";
-      this.addButton.Size = new System.Drawing.Size(23, 23);
+      this.addButton.Size = new System.Drawing.Size(24, 24);
       this.addButton.TabIndex = 0;
       this.toolTip.SetToolTip(this.addButton, "Add");
@@ -180,5 +180,5 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.detailsGroupBox.Controls.Add(this.viewHost);
-      this.detailsGroupBox.Location = new System.Drawing.Point(3, 26);
+      this.detailsGroupBox.Location = new System.Drawing.Point(3, 27);
       this.detailsGroupBox.Name = "detailsGroupBox";
       this.detailsGroupBox.Size = new System.Drawing.Size(266, 335);
@@ -192,7 +192,7 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
+      this.viewHost.Content = null;
       this.viewHost.Location = new System.Drawing.Point(6, 19);
       this.viewHost.Name = "viewHost";
-      this.viewHost.Content = null;
       this.viewHost.Size = new System.Drawing.Size(254, 310);
       this.viewHost.TabIndex = 0;
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs	(revision 2796)
@@ -96,7 +96,7 @@
       this.removeButton.Enabled = false;
       this.removeButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove;
-      this.removeButton.Location = new System.Drawing.Point(90, 3);
+      this.removeButton.Location = new System.Drawing.Point(93, 3);
       this.removeButton.Name = "removeButton";
-      this.removeButton.Size = new System.Drawing.Size(23, 23);
+      this.removeButton.Size = new System.Drawing.Size(24, 24);
       this.removeButton.TabIndex = 3;
       this.toolTip.SetToolTip(this.removeButton, "Remove");
@@ -108,7 +108,7 @@
       this.moveUpButton.Enabled = false;
       this.moveUpButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.ArrowUp;
-      this.moveUpButton.Location = new System.Drawing.Point(32, 3);
+      this.moveUpButton.Location = new System.Drawing.Point(33, 3);
       this.moveUpButton.Name = "moveUpButton";
-      this.moveUpButton.Size = new System.Drawing.Size(23, 23);
+      this.moveUpButton.Size = new System.Drawing.Size(24, 24);
       this.moveUpButton.TabIndex = 1;
       this.toolTip.SetToolTip(this.moveUpButton, "Move Up");
@@ -120,7 +120,7 @@
       this.moveDownButton.Enabled = false;
       this.moveDownButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.ArrowDown;
-      this.moveDownButton.Location = new System.Drawing.Point(61, 3);
+      this.moveDownButton.Location = new System.Drawing.Point(63, 3);
       this.moveDownButton.Name = "moveDownButton";
-      this.moveDownButton.Size = new System.Drawing.Size(23, 23);
+      this.moveDownButton.Size = new System.Drawing.Size(24, 24);
       this.moveDownButton.TabIndex = 2;
       this.toolTip.SetToolTip(this.moveDownButton, "Move Down");
@@ -138,8 +138,8 @@
       this.itemsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
       this.itemsListView.HideSelection = false;
-      this.itemsListView.Location = new System.Drawing.Point(3, 32);
+      this.itemsListView.Location = new System.Drawing.Point(3, 33);
       this.itemsListView.Name = "itemsListView";
       this.itemsListView.ShowItemToolTips = true;
-      this.itemsListView.Size = new System.Drawing.Size(194, 287);
+      this.itemsListView.Size = new System.Drawing.Size(194, 286);
       this.itemsListView.SmallImageList = this.imageList;
       this.itemsListView.TabIndex = 4;
@@ -166,5 +166,5 @@
       this.addButton.Location = new System.Drawing.Point(3, 3);
       this.addButton.Name = "addButton";
-      this.addButton.Size = new System.Drawing.Size(23, 23);
+      this.addButton.Size = new System.Drawing.Size(24, 24);
       this.addButton.TabIndex = 0;
       this.toolTip.SetToolTip(this.addButton, "Add");
@@ -178,5 +178,5 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.detailsGroupBox.Controls.Add(this.viewHost);
-      this.detailsGroupBox.Location = new System.Drawing.Point(3, 26);
+      this.detailsGroupBox.Location = new System.Drawing.Point(3, 27);
       this.detailsGroupBox.Name = "detailsGroupBox";
       this.detailsGroupBox.Size = new System.Drawing.Size(283, 294);
@@ -190,7 +190,7 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
+      this.viewHost.Content = null;
       this.viewHost.Location = new System.Drawing.Point(6, 19);
       this.viewHost.Name = "viewHost";
-      this.viewHost.Content = null;
       this.viewHost.Size = new System.Drawing.Size(271, 269);
       this.viewHost.TabIndex = 0;
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorView.Designer.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorView.Designer.cs	(revision 2796)
@@ -0,0 +1,97 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Core.Views {
+  partial class OperatorView {
+    /// <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) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component 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.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Size = new System.Drawing.Size(418, 20);
+      // 
+      // descriptionTextBox
+      // 
+      this.descriptionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.descriptionTextBox.Size = new System.Drawing.Size(418, 87);
+      // 
+      // parameterCollectionView
+      // 
+      this.parameterCollectionView.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.parameterCollectionView.Caption = "ParameterCollection";
+      this.parameterCollectionView.Location = new System.Drawing.Point(0, 119);
+      this.parameterCollectionView.Name = "parameterCollectionView";
+      this.parameterCollectionView.Size = new System.Drawing.Size(490, 234);
+      this.parameterCollectionView.TabIndex = 4;
+      // 
+      // OperatorView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.parameterCollectionView);
+      this.Name = "OperatorView";
+      this.Size = new System.Drawing.Size(490, 353);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
+      this.Controls.SetChildIndex(this.parameterCollectionView, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    protected HeuristicLab.Core.Views.ParameterCollectionView parameterCollectionView;
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorView.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorView.cs	(revision 2796)
@@ -0,0 +1,60 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.MainForm;
+
+namespace HeuristicLab.Core.Views {
+  /// <summary>
+  /// The base class for visual representations of items.
+  /// </summary>
+  [Content(typeof(Operator), true)]
+  [Content(typeof(IOperator), false)]
+  public partial class OperatorView : NamedItemView {
+    public new IOperator Content {
+      get { return (IOperator)base.Content; }
+      set { base.Content = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="ItemBaseView"/>.
+    /// </summary>
+    public OperatorView() {
+      InitializeComponent();
+    }
+    /// <summary>
+    /// Intializes a new instance of <see cref="ItemBaseView"/> with the given <paramref name="item"/>.
+    /// </summary>
+    /// <param name="item">The item that should be displayed.</param>
+    public OperatorView(IOperator content)
+      : this() {
+      Content = content;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        parameterCollectionView.Content = null;
+      } else {
+        parameterCollectionView.Content = ((IOperator)Content).Parameters;
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ParameterCollectionView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ParameterCollectionView.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ParameterCollectionView.cs	(revision 2796)
@@ -1,3 +1,24 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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;
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ProblemView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ProblemView.Designer.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ProblemView.Designer.cs	(revision 2796)
@@ -0,0 +1,99 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Core.Views {
+  partial class ProblemView {
+    /// <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) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component 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.valueParameterCollectionView = new HeuristicLab.Core.Views.ValueParameterCollectionView();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Size = new System.Drawing.Size(418, 20);
+      // 
+      // descriptionTextBox
+      // 
+      this.descriptionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.descriptionTextBox.Size = new System.Drawing.Size(418, 87);
+      // 
+      // valueParameterCollectionView
+      // 
+      this.valueParameterCollectionView.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.valueParameterCollectionView.Caption = "ValueParameterCollection";
+      this.valueParameterCollectionView.Content = null;
+      this.valueParameterCollectionView.Location = new System.Drawing.Point(0, 119);
+      this.valueParameterCollectionView.Name = "valueParameterCollectionView";
+      this.valueParameterCollectionView.Size = new System.Drawing.Size(490, 234);
+      this.valueParameterCollectionView.TabIndex = 4;
+      // 
+      // ProblemView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.valueParameterCollectionView);
+      this.Name = "ProblemView";
+      this.Size = new System.Drawing.Size(490, 353);
+      this.Controls.SetChildIndex(this.valueParameterCollectionView, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.descriptionLabel, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private ValueParameterCollectionView valueParameterCollectionView;
+
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ProblemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ProblemView.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ProblemView.cs	(revision 2796)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.MainForm;
+
+namespace HeuristicLab.Core.Views { 
+  /// <summary>
+  /// The base class for visual representations of items.
+  /// </summary>
+  [Content(typeof(Problem), true)]
+  [Content(typeof(IProblem), false)]
+  public partial class ProblemView : NamedItemView {
+    public new IProblem Content {
+      get { return (IProblem)base.Content; }
+      set { base.Content = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="ItemBaseView"/>.
+    /// </summary>
+    public ProblemView() {
+      InitializeComponent();
+    }
+    /// <summary>
+    /// Intializes a new instance of <see cref="ItemBaseView"/> with the given <paramref name="item"/>.
+    /// </summary>
+    /// <param name="item">The item that should be displayed.</param>
+    public ProblemView(IProblem content)
+      : this() {
+      Content = content;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null)
+        valueParameterCollectionView.Content = null;
+      else
+        valueParameterCollectionView.Content = ((IProblem)Content).Parameters;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ValueParameterCollectionView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ValueParameterCollectionView.Designer.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ValueParameterCollectionView.Designer.cs	(revision 2796)
@@ -0,0 +1,33 @@
+﻿namespace HeuristicLab.Core.Views {
+  partial class ValueParameterCollectionView {
+    /// <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) {
+        if (createParameterDialog != null) createParameterDialog.Dispose();
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component 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() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+    }
+
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ValueParameterCollectionView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ValueParameterCollectionView.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ValueParameterCollectionView.cs	(revision 2796)
@@ -0,0 +1,72 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.Collections;
+
+namespace HeuristicLab.Core.Views {
+  [Content(typeof(ValueParameterCollection), true)]
+  [Content(typeof(IObservableKeyedCollection<string, IValueParameter>), false)]
+  public partial class ValueParameterCollectionView : NamedItemCollectionView<IValueParameter> {
+    protected CreateParameterDialog createParameterDialog;
+    /// <summary>
+    /// Initializes a new instance of <see cref="VariablesScopeView"/> with caption "Variables Scope View".
+    /// </summary>
+    public ValueParameterCollectionView() {
+      InitializeComponent();
+      Caption = "ValueParameterCollection";
+      itemsGroupBox.Text = "&Parameters";
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="VariablesScopeView"/> with 
+    /// the given <paramref name="scope"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="VariablesScopeView()"/>.</remarks>
+    /// <param name="scope">The scope whose variables should be represented visually.</param>
+    public ValueParameterCollectionView(IObservableKeyedCollection<string, IValueParameter> content)
+      : this() {
+      Content = content;
+    }
+
+    protected override IValueParameter CreateItem() {
+      if (createParameterDialog == null) {
+        createParameterDialog = new CreateParameterDialog();
+        createParameterDialog.ParameterTypeSelector.Configure(typeof(IValueParameter), false, true);
+      }
+
+      if (createParameterDialog.ShowDialog(this) == DialogResult.OK) {
+        IValueParameter param = (IValueParameter)createParameterDialog.Parameter;
+        if (Content.ContainsKey(param.Name))
+          param = (IValueParameter)Activator.CreateInstance(param.GetType(), GetUniqueName(param.Name), param.Description);
+        return param;
+      } else
+        return null;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/VariableView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/VariableView.Designer.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/VariableView.Designer.cs	(revision 2796)
@@ -112,7 +112,7 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.valuePanel.Controls.Add(this.viewHost);
-      this.valuePanel.Location = new System.Drawing.Point(6, 48);
+      this.valuePanel.Location = new System.Drawing.Point(6, 49);
       this.valuePanel.Name = "valuePanel";
-      this.valuePanel.Size = new System.Drawing.Size(347, 100);
+      this.valuePanel.Size = new System.Drawing.Size(347, 99);
       this.valuePanel.TabIndex = 2;
       this.valuePanel.DragOver += new System.Windows.Forms.DragEventHandler(this.valuePanel_DragEnterOver);
@@ -122,9 +122,9 @@
       // viewHost
       // 
+      this.viewHost.Content = null;
       this.viewHost.Dock = System.Windows.Forms.DockStyle.Fill;
       this.viewHost.Location = new System.Drawing.Point(0, 0);
       this.viewHost.Name = "viewHost";
-      this.viewHost.Content = null;
-      this.viewHost.Size = new System.Drawing.Size(347, 100);
+      this.viewHost.Size = new System.Drawing.Size(347, 99);
       this.viewHost.TabIndex = 0;
       // 
@@ -132,7 +132,7 @@
       // 
       this.clearValueButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove;
-      this.clearValueButton.Location = new System.Drawing.Point(35, 19);
+      this.clearValueButton.Location = new System.Drawing.Point(36, 19);
       this.clearValueButton.Name = "clearValueButton";
-      this.clearValueButton.Size = new System.Drawing.Size(23, 23);
+      this.clearValueButton.Size = new System.Drawing.Size(24, 24);
       this.clearValueButton.TabIndex = 1;
       this.toolTip.SetToolTip(this.clearValueButton, "Clear Value");
@@ -145,5 +145,5 @@
       this.setValueButton.Location = new System.Drawing.Point(6, 19);
       this.setValueButton.Name = "setValueButton";
-      this.setValueButton.Size = new System.Drawing.Size(23, 23);
+      this.setValueButton.Size = new System.Drawing.Size(24, 24);
       this.setValueButton.TabIndex = 1;
       this.toolTip.SetToolTip(this.setValueButton, "Set Value");
Index: /trunk/sources/HeuristicLab.Core/3.3/Engine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Engine.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core/3.3/Engine.cs	(revision 2796)
@@ -22,10 +22,8 @@
 using System;
 using System.Collections.Generic;
-using System.Text;
-using System.Xml;
+using System.Drawing;
 using System.Threading;
-using System.Drawing;
+using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
 
 namespace HeuristicLab.Core {
@@ -41,10 +39,7 @@
     }
 
-    /// <summary>
-    /// Field of the current instance that represent the operator graph.
-    /// </summary>
     private OperatorGraph operatorGraph;
     /// <summary>
-    /// Gets the current operator graph.
+    /// Gets or sets the current operator graph.
     /// </summary>
     [Storable]
@@ -76,4 +71,21 @@
 
     [Storable]
+    private IProblem problem;
+    /// <summary>
+    /// Gets or sets the current problem.
+    /// </summary>
+    public IProblem Problem {
+      get { return problem; }
+      set {
+        if (value == null) throw new ArgumentNullException();
+        if (value != problem) {
+          problem = value;
+          OnProblemChanged();
+          Prepare();
+        }
+      }
+    }
+
+    [Storable]
     private TimeSpan executionTime;
     /// <summary>
@@ -134,4 +146,5 @@
     protected Engine() {
       globalScope = new Scope("Global");
+      problem = null;
       executionStack = new Stack<IExecutionSequence>();
       OperatorGraph = new OperatorGraph();
@@ -149,4 +162,5 @@
       clone.OperatorGraph = (OperatorGraph)cloner.Clone(operatorGraph);
       clone.globalScope = (Scope)cloner.Clone(globalScope);
+      clone.problem = (IProblem)cloner.Clone(problem);
       clone.executionTime = executionTime;
       IExecutionSequence[] contexts = executionStack.ToArray();
@@ -169,6 +183,6 @@
       ExecutionTime = new TimeSpan();
       executionStack.Clear();
-      if (OperatorGraph.InitialOperator != null)
-        executionStack.Push(new ExecutionContext(null, OperatorGraph.InitialOperator, GlobalScope));
+      if ((OperatorGraph.InitialOperator != null) && (Problem != null))
+        executionStack.Push(new ExecutionContext(null, OperatorGraph.InitialOperator, GlobalScope, Problem));
       OnPrepared();
     }
@@ -228,8 +242,25 @@
     }
 
+    /// <summary>
+    /// Occurs when the operator graph was changed.
+    /// </summary>
     public event EventHandler OperatorGraphChanged;
+    /// <summary>
+    /// Fires a new <c>OperatorGraphChanged</c> event.
+    /// </summary>
     protected virtual void OnOperatorGraphChanged() {
       if (OperatorGraphChanged != null)
         OperatorGraphChanged(this, EventArgs.Empty);
+    }
+    /// <summary>
+    /// Occurs when the problem was changed.
+    /// </summary>
+    public event EventHandler ProblemChanged;
+    /// <summary>
+    /// Fires a new <c>ProblemChanged</c> event.
+    /// </summary>
+    protected virtual void OnProblemChanged() {
+      if (ProblemChanged != null)
+        ProblemChanged(this, EventArgs.Empty);
     }
     /// <summary>
Index: /trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs	(revision 2796)
@@ -45,14 +45,22 @@
     }
 
+    [Storable]
+    private IProblem problem;
+    public IProblem Problem {
+      get { return problem; }
+    }
+
     private ExecutionContext() {
       parent = null;
       op = null;
       scope = null;
+      problem = null;
     }
-    public ExecutionContext(ExecutionContext parent, IOperator op, IScope scope) {
-      if ((op == null) || (scope == null)) throw new ArgumentNullException();
+    public ExecutionContext(ExecutionContext parent, IOperator op, IScope scope, IProblem problem) {
+      if ((op == null) || (scope == null) || (problem == null)) throw new ArgumentNullException();
       this.parent = parent;
       this.op = op;
       this.scope = scope;
+      this.problem = problem;
     }
 
@@ -63,5 +71,19 @@
       clone.op = (IOperator)cloner.Clone(op);
       clone.scope = (IScope)cloner.Clone(scope);
+      clone.problem = (IProblem)cloner.Clone(problem);
       return clone;
+    }
+
+    public ExecutionContext CreateContext(IOperator op) {
+      return new ExecutionContext(parent, op, scope, problem);
+    }
+    public ExecutionContext CreateContext(IOperator op, IScope scope) {
+      return new ExecutionContext(parent, op, scope, problem);
+    }
+    public ExecutionContext CreateChildContext(IOperator op) {
+      return new ExecutionContext(this, op, scope, problem);
+    }
+    public ExecutionContext CreateChildContext(IOperator op, IScope scope) {
+      return new ExecutionContext(this, op, scope, problem);
     }
   }
Index: /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2796)
@@ -104,4 +104,6 @@
     <Compile Include="ChangedEventArgs.cs" />
     <None Include="HeuristicLabCorePlugin.cs.frame" />
+    <Compile Include="ValueParameterCollection.cs" />
+    <Compile Include="Interfaces\IProblem.cs" />
     <Compile Include="Interfaces\IExecutionSequence.cs" />
     <Compile Include="Interfaces\IValueLookupParameter.cs" />
@@ -115,4 +117,6 @@
     <Compile Include="Item.cs" />
     <Compile Include="NamedItem.cs" />
+    <Compile Include="Operator.cs" />
+    <Compile Include="Problem.cs" />
     <Compile Include="OperatorGraph.cs" />
     <Compile Include="Interfaces\IParameter.cs" />
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEngine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEngine.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEngine.cs	(revision 2796)
@@ -21,6 +21,4 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Common;
 
@@ -40,4 +38,8 @@
     /// </summary>
     IScope GlobalScope { get; }
+    /// <summary>
+    /// Gets the problem of the current instance.
+    /// </summary>
+    IProblem Problem { get; set; }
 
     /// <summary>
@@ -72,5 +74,12 @@
     void Stop();
 
+    /// <summary>
+    /// Occurs when the operator graph was changed.
+    /// </summary>
     event EventHandler OperatorGraphChanged;
+    /// <summary>
+    /// Occurs when the problem was changed.
+    /// </summary>
+    event EventHandler ProblemChanged;
     /// <summary>
     /// Occurs when the execution time was changed.
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/ILookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/ILookupParameter.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/ILookupParameter.cs	(revision 2796)
@@ -26,8 +26,11 @@
 
 namespace HeuristicLab.Core {
-  public interface ILookupParameter<T> : IParameter where T : class, IItem {
+  public interface ILookupParameter : IParameter {
     string ActualName { get; set; }
-
     event EventHandler ActualNameChanged;
   }
+
+  public interface ILookupParameter<T> : ILookupParameter where T : class, IItem {
+    new T ActualValue { get; set; }
+  }
 }
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IProblem.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IProblem.cs	(revision 2796)
@@ -0,0 +1,31 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Collections;
+
+namespace HeuristicLab.Core {
+  /// <summary>
+  /// Interface to represent a problem.
+  /// </summary>
+  public interface IProblem : INamedItem {
+    IObservableKeyedCollection<string, IValueParameter> Parameters { get; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IValueLookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IValueLookupParameter.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IValueLookupParameter.cs	(revision 2796)
@@ -26,4 +26,6 @@
 
 namespace HeuristicLab.Core {
-  public interface IValueLookupParameter<T> : IValueParameter<T>, ILookupParameter<T> where T : class, IItem { }
+  public interface IValueLookupParameter : IValueParameter, ILookupParameter { }
+
+  public interface IValueLookupParameter<T> : IValueLookupParameter, IValueParameter<T>, ILookupParameter<T> where T : class, IItem { }
 }
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IValueParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IValueParameter.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IValueParameter.cs	(revision 2796)
@@ -26,8 +26,11 @@
 
 namespace HeuristicLab.Core {
-  public interface IValueParameter<T> : IParameter where T : class, IItem {
-    T Value { get; set; }
-
+  public interface IValueParameter : IParameter {
+    IItem Value { get; set; }
     event EventHandler ValueChanged;
   }
+
+  public interface IValueParameter<T> : IValueParameter where T : class, IItem {
+    new T Value { get; set; }
+  }
 }
Index: /trunk/sources/HeuristicLab.Core/3.3/Operator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Operator.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core/3.3/Operator.cs	(revision 2796)
@@ -0,0 +1,184 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Drawing;
+using HeuristicLab.Collections;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Core {
+  /// <summary>
+  /// The base class for all operators.
+  /// </summary>
+  [Item("Operator", "Base class for operators.")]
+  public abstract class Operator : NamedItem, IOperator {
+    public override Image ItemImage {
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Method; }
+    }
+    public override bool CanChangeDescription {
+      get { return false; }
+    }
+
+    private ParameterCollection parameters;
+    [Storable]
+    protected ParameterCollection Parameters {
+      get { return parameters;}
+      private set {
+        if (parameters != null) parameters.Changed -= new ChangedEventHandler(Parameters_Changed);
+        parameters = value;
+        readOnlyParameters = null;
+        if (parameters != null) parameters.Changed += new ChangedEventHandler(Parameters_Changed);
+      }
+    }
+    private ReadOnlyObservableKeyedCollection<string, IParameter> readOnlyParameters;
+    IObservableKeyedCollection<string, IParameter> IOperator.Parameters {
+      get {
+        if (readOnlyParameters == null) readOnlyParameters = parameters.AsReadOnly();
+        return readOnlyParameters;
+      }
+    }
+
+    [Storable]
+    private ExecutionContext executionContext;
+    protected ExecutionContext ExecutionContext {
+      get { return executionContext; }
+      private set {
+        if (value != executionContext) {
+          executionContext = value;
+          OnExecutionContextChanged();
+        }
+      }
+    }
+
+    /// <summary>
+    /// Flag whether the current instance has been canceled.
+    /// </summary>
+    private bool canceled;
+    /// <inheritdoc/>
+    protected bool Canceled {
+      get { return canceled; }
+      private set {
+        if (value != canceled) {
+          canceled = value;
+          OnCanceledChanged();
+        }
+      }
+    }
+
+    [Storable]
+    private bool breakpoint;
+    /// <inheritdoc/>
+    /// <remarks>Calls <see cref="OnBreakpointChanged"/> in the setter.</remarks>
+    public bool Breakpoint {
+      get { return breakpoint; }
+      set {
+        if (value != breakpoint) {
+          breakpoint = value;
+          OnBreakpointChanged();
+        }
+      }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="OperatorBase"/> setting the breakpoint flag and 
+    /// the canceled flag to <c>false</c> and the name of the operator to the type name. 
+    /// </summary>
+    protected Operator() {
+      Name = ItemName;
+      Parameters = new ParameterCollection();
+      readOnlyParameters = null;
+      canceled = false;
+      breakpoint = false;
+    }
+
+    /// <summary>
+    /// Clones the current instance (deep clone).
+    /// </summary>
+    /// <remarks>Clones also sub operators, variables and variable infos.</remarks>
+    /// <param name="clonedObjects">Dictionary of all already cloned objects. (Needed to avoid cycles.)</param>
+    /// <returns>The cloned object as <see cref="OperatorBase"/>.</returns>
+    public override IDeepCloneable Clone(Cloner cloner) {
+      Operator clone = (Operator)base.Clone(cloner);
+      clone.Parameters = (ParameterCollection)cloner.Clone(parameters);
+      clone.canceled = canceled;
+      clone.breakpoint = breakpoint;
+      clone.executionContext = (ExecutionContext)cloner.Clone(executionContext);
+      return clone;
+    }
+
+    /// <inheritdoc/>
+    public virtual IExecutionSequence Execute(ExecutionContext context) {
+      try {
+        Canceled = false;
+        ExecutionContext = context;
+        foreach (IParameter param in Parameters)
+          param.ExecutionContext = context;
+        IExecutionSequence next = Apply();
+        OnExecuted();
+        return next;
+      }
+      finally {
+        foreach (IParameter param in Parameters)
+          param.ExecutionContext = null;
+        ExecutionContext = null;
+      }
+    }
+    /// <inheritdoc/>
+    /// <remarks>Sets property <see cref="Canceled"/> to <c>true</c>.</remarks>
+    public void Abort() {
+      Canceled = true;
+    }
+    /// <summary>
+    /// Performs the current operator on the specified <paramref name="scope"/>.
+    /// </summary>
+    /// <param name="scope">The scope where to execute the operator</param>
+    /// <returns><c>null</c>.</returns>
+    public abstract IExecutionSequence Apply();
+
+    protected virtual void OnExecutionContextChanged() { }
+    protected virtual void OnCanceledChanged() { }
+    /// <inheritdoc/>
+    public event EventHandler BreakpointChanged;
+    /// <summary>
+    /// Fires a new <c>BreakpointChanged</c> event.
+    /// </summary>
+    protected virtual void OnBreakpointChanged() {
+      if (BreakpointChanged != null) {
+        BreakpointChanged(this, EventArgs.Empty);
+      }
+      OnChanged();
+    }
+    /// <inheritdoc/>
+    public event EventHandler Executed;
+    /// <summary>
+    /// Fires a new <c>Executed</c> event.
+    /// </summary>
+    protected virtual void OnExecuted() {
+      if (Executed != null) {
+        Executed(this, EventArgs.Empty);
+      }
+    }
+
+    private void Parameters_Changed(object sender, ChangedEventArgs e) {
+      OnChanged(e);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 2796)
@@ -34,5 +34,5 @@
   /// </summary>
   [Item("OperatorGraph", "Represents a graph of operators.")]
-  [Creatable("Test")]
+  [Creatable("Algorithms")]
   public class OperatorGraph : Item {
     private OperatorSet operators;
Index: /trunk/sources/HeuristicLab.Core/3.3/Problem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Problem.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core/3.3/Problem.cs	(revision 2796)
@@ -0,0 +1,72 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Drawing;
+using HeuristicLab.Collections;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Core {
+  /// <summary>
+  /// The base class for all problems.
+  /// </summary>
+  [Item("Problem", "Base class for problems.")]
+  public abstract class Problem : NamedItem, IProblem {
+    public override Image ItemImage {
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
+    }
+
+    private ValueParameterCollection parameters;
+    [Storable]
+    protected ValueParameterCollection Parameters {
+      get { return parameters;}
+      private set {
+        if (parameters != null) parameters.Changed -= new ChangedEventHandler(Parameters_Changed);
+        parameters = value;
+        readOnlyParameters = null;
+        if (parameters != null) parameters.Changed += new ChangedEventHandler(Parameters_Changed);
+      }
+    }
+    private ReadOnlyObservableKeyedCollection<string, IValueParameter> readOnlyParameters;
+    IObservableKeyedCollection<string, IValueParameter> IProblem.Parameters {
+      get {
+        if (readOnlyParameters == null) readOnlyParameters = parameters.AsReadOnly();
+        return readOnlyParameters;
+      }
+    }
+
+    protected Problem() {
+      Name = ItemName;
+      Parameters = new ValueParameterCollection();
+      readOnlyParameters = null;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      Problem clone = (Problem)base.Clone(cloner);
+      clone.Parameters = (ValueParameterCollection)cloner.Clone(parameters);
+      return clone;
+    }
+
+    private void Parameters_Changed(object sender, ChangedEventArgs e) {
+      OnChanged(e);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core/3.3/ValueParameterCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ValueParameterCollection.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Core/3.3/ValueParameterCollection.cs	(revision 2796)
@@ -0,0 +1,34 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Collections.Generic;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Core {
+  [EmptyStorableClass]
+  [Item("ValueParameterCollection", "Represents a collection of value parameters.")]
+  [Creatable("Test")]
+  public class ValueParameterCollection : NamedItemCollection<IValueParameter> {
+    public ValueParameterCollection() : base() { }
+    public ValueParameterCollection(int capacity) : base(capacity) { }
+    public ValueParameterCollection(IEnumerable<IValueParameter> collection) : base(collection) { }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Views/3.3/CombinedOperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views/3.3/CombinedOperatorView.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators.Views/3.3/CombinedOperatorView.cs	(revision 2796)
@@ -20,11 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
 using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
Index: /trunk/sources/HeuristicLab.Operators.Views/3.3/HeuristicLab.Operators.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views/3.3/HeuristicLab.Operators.Views-3.3.csproj	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators.Views/3.3/HeuristicLab.Operators.Views-3.3.csproj	(revision 2796)
@@ -71,10 +71,4 @@
     </Compile>
     <Compile Include="HeuristicLabOperatorsViewsPlugin.cs" />
-    <Compile Include="OperatorView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="OperatorView.Designer.cs">
-      <DependentUpon>OperatorView.cs</DependentUpon>
-    </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
Index: /trunk/sources/HeuristicLab.Operators.Views/3.3/HeuristicLabOperatorsViewsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views/3.3/HeuristicLabOperatorsViewsPlugin.cs.frame	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators.Views/3.3/HeuristicLabOperatorsViewsPlugin.cs.frame	(revision 2796)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.PluginInfrastructure;
 
Index: /trunk/sources/HeuristicLab.Operators.Views/3.3/MultipleCallsOperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views/3.3/MultipleCallsOperatorView.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators.Views/3.3/MultipleCallsOperatorView.cs	(revision 2796)
@@ -20,11 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
 using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
Index: unk/sources/HeuristicLab.Operators.Views/3.3/OperatorView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views/3.3/OperatorView.Designer.cs	(revision 2795)
+++ 	(revision )
@@ -1,98 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 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.Operators.Views {
-  partial class OperatorView {
-    /// <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) {
-        if (components != null) components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component 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.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // nameTextBox
-      // 
-      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Size = new System.Drawing.Size(418, 20);
-      // 
-      // descriptionTextBox
-      // 
-      this.descriptionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.descriptionTextBox.Size = new System.Drawing.Size(418, 87);
-      // 
-      // parameterCollectionView
-      // 
-      this.parameterCollectionView.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.parameterCollectionView.Caption = "ParameterCollection";
-      this.parameterCollectionView.Location = new System.Drawing.Point(0, 119);
-      this.parameterCollectionView.Name = "parameterCollectionView";
-      this.parameterCollectionView.Size = new System.Drawing.Size(490, 234);
-      this.parameterCollectionView.TabIndex = 4;
-      // 
-      // OperatorView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.parameterCollectionView);
-      this.Name = "OperatorView";
-      this.Size = new System.Drawing.Size(490, 353);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.descriptionLabel, 0);
-      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
-      this.Controls.SetChildIndex(this.parameterCollectionView, 0);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    protected HeuristicLab.Core.Views.ParameterCollectionView parameterCollectionView;
-
-
-  }
-}
Index: unk/sources/HeuristicLab.Operators.Views/3.3/OperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views/3.3/OperatorView.cs	(revision 2795)
+++ 	(revision )
@@ -1,69 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 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.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Operators.Views { 
-  /// <summary>
-  /// The base class for visual representations of items.
-  /// </summary>
-  [Content(typeof(Operator), true)]
-  [Content(typeof(IOperator), false)]
-  public partial class OperatorView : NamedItemView {
-    public new IOperator Content {
-      get { return (IOperator)base.Content; }
-      set { base.Content = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ItemBaseView"/>.
-    /// </summary>
-    public OperatorView() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Intializes a new instance of <see cref="ItemBaseView"/> with the given <paramref name="item"/>.
-    /// </summary>
-    /// <param name="item">The item that should be displayed.</param>
-    public OperatorView(IOperator content)
-      : this() {
-      Content = content;
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        parameterCollectionView.Content = null;
-      } else {
-        parameterCollectionView.Content = ((IOperator)Content).Parameters;
-      }
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Operators.Views/3.3/ValuesCollectorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views/3.3/ValuesCollectorView.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators.Views/3.3/ValuesCollectorView.cs	(revision 2796)
@@ -20,11 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
 using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
Index: /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs	(revision 2796)
@@ -66,5 +66,5 @@
       ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
       if (operatorGraph.InitialOperator != null)
-        next.Insert(0, new ExecutionContext(ExecutionContext, operatorGraph.InitialOperator, ExecutionContext.Scope));
+        next.Insert(0, ExecutionContext.CreateChildContext(operatorGraph.InitialOperator));
       return next;
     }
Index: /trunk/sources/HeuristicLab.Operators/3.3/ConditionalBranch.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/ConditionalBranch.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/ConditionalBranch.cs	(revision 2796)
@@ -61,7 +61,7 @@
       ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
       if (ConditionParameter.ActualValue.Value) {
-        if (TrueBranch != null) next.Insert(0, new ExecutionContext(ExecutionContext.Parent, TrueBranch, ExecutionContext.Scope));
+        if (TrueBranch != null) next.Insert(0, ExecutionContext.CreateContext(TrueBranch));
       } else {
-        if (FalseBranch != null) next.Insert(0, new ExecutionContext(ExecutionContext.Parent, FalseBranch, ExecutionContext.Scope));
+        if (FalseBranch != null) next.Insert(0, ExecutionContext.CreateContext(FalseBranch));
       }
       return next;
Index: /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj	(revision 2796)
@@ -108,5 +108,4 @@
     </Compile>
     <Compile Include="HeuristicLabOperatorsPlugin.cs" />
-    <Compile Include="Operator.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="SingleSuccessorOperator.cs" />
Index: /trunk/sources/HeuristicLab.Operators/3.3/MultipleCallsOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/MultipleCallsOperator.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/MultipleCallsOperator.cs	(revision 2796)
@@ -110,5 +110,5 @@
       ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
       for (int i = Operators.Count - 1; i >= 0; i--)
-        next.Insert(0, new ExecutionContext(ExecutionContext.Parent, Operators[i], ExecutionContext.Scope));
+        next.Insert(0, ExecutionContext.CreateContext(Operators[i]));
       return next;
     }
Index: unk/sources/HeuristicLab.Operators/3.3/Operator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs	(revision 2795)
+++ 	(revision )
@@ -1,185 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 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.Drawing;
-using HeuristicLab.Collections;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Operators {
-  /// <summary>
-  /// The base class for all operators.
-  /// </summary>
-  [Item("Operator", "Base class for operators.")]
-  public abstract class Operator : NamedItem, IOperator {
-    public override Image ItemImage {
-      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Method; }
-    }
-    public override bool CanChangeDescription {
-      get { return false; }
-    }
-
-    private ParameterCollection parameters;
-    [Storable]
-    protected ParameterCollection Parameters {
-      get { return parameters;}
-      private set {
-        if (parameters != null) parameters.Changed -= new ChangedEventHandler(Parameters_Changed);
-        parameters = value;
-        readOnlyParameters = null;
-        if (parameters != null) parameters.Changed += new ChangedEventHandler(Parameters_Changed);
-      }
-    }
-    private ReadOnlyObservableKeyedCollection<string, IParameter> readOnlyParameters;
-    IObservableKeyedCollection<string, IParameter> IOperator.Parameters {
-      get {
-        if (readOnlyParameters == null) readOnlyParameters = parameters.AsReadOnly();
-        return readOnlyParameters;
-      }
-    }
-
-    [Storable]
-    private ExecutionContext executionContext;
-    protected ExecutionContext ExecutionContext {
-      get { return executionContext; }
-      private set {
-        if (value != executionContext) {
-          executionContext = value;
-          OnExecutionContextChanged();
-        }
-      }
-    }
-
-    /// <summary>
-    /// Flag whether the current instance has been canceled.
-    /// </summary>
-    private bool canceled;
-    /// <inheritdoc/>
-    protected bool Canceled {
-      get { return canceled; }
-      private set {
-        if (value != canceled) {
-          canceled = value;
-          OnCanceledChanged();
-        }
-      }
-    }
-
-    [Storable]
-    private bool breakpoint;
-    /// <inheritdoc/>
-    /// <remarks>Calls <see cref="OnBreakpointChanged"/> in the setter.</remarks>
-    public bool Breakpoint {
-      get { return breakpoint; }
-      set {
-        if (value != breakpoint) {
-          breakpoint = value;
-          OnBreakpointChanged();
-        }
-      }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="OperatorBase"/> setting the breakpoint flag and 
-    /// the canceled flag to <c>false</c> and the name of the operator to the type name. 
-    /// </summary>
-    protected Operator() {
-      Name = ItemName;
-      Parameters = new ParameterCollection();
-      readOnlyParameters = null;
-      canceled = false;
-      breakpoint = false;
-    }
-
-    /// <summary>
-    /// Clones the current instance (deep clone).
-    /// </summary>
-    /// <remarks>Clones also sub operators, variables and variable infos.</remarks>
-    /// <param name="clonedObjects">Dictionary of all already cloned objects. (Needed to avoid cycles.)</param>
-    /// <returns>The cloned object as <see cref="OperatorBase"/>.</returns>
-    public override IDeepCloneable Clone(Cloner cloner) {
-      Operator clone = (Operator)base.Clone(cloner);
-      clone.Parameters = (ParameterCollection)cloner.Clone(parameters);
-      clone.canceled = canceled;
-      clone.breakpoint = breakpoint;
-      clone.executionContext = (ExecutionContext)cloner.Clone(executionContext);
-      return clone;
-    }
-
-    /// <inheritdoc/>
-    public virtual IExecutionSequence Execute(ExecutionContext context) {
-      try {
-        Canceled = false;
-        ExecutionContext = context;
-        foreach (IParameter param in Parameters)
-          param.ExecutionContext = context;
-        IExecutionSequence next = Apply();
-        OnExecuted();
-        return next;
-      }
-      finally {
-        foreach (IParameter param in Parameters)
-          param.ExecutionContext = null;
-        ExecutionContext = null;
-      }
-    }
-    /// <inheritdoc/>
-    /// <remarks>Sets property <see cref="Canceled"/> to <c>true</c>.</remarks>
-    public void Abort() {
-      Canceled = true;
-    }
-    /// <summary>
-    /// Performs the current operator on the specified <paramref name="scope"/>.
-    /// </summary>
-    /// <param name="scope">The scope where to execute the operator</param>
-    /// <returns><c>null</c>.</returns>
-    public abstract IExecutionSequence Apply();
-
-    protected virtual void OnExecutionContextChanged() { }
-    protected virtual void OnCanceledChanged() { }
-    /// <inheritdoc/>
-    public event EventHandler BreakpointChanged;
-    /// <summary>
-    /// Fires a new <c>BreakpointChanged</c> event.
-    /// </summary>
-    protected virtual void OnBreakpointChanged() {
-      if (BreakpointChanged != null) {
-        BreakpointChanged(this, EventArgs.Empty);
-      }
-      OnChanged();
-    }
-    /// <inheritdoc/>
-    public event EventHandler Executed;
-    /// <summary>
-    /// Fires a new <c>Executed</c> event.
-    /// </summary>
-    protected virtual void OnExecuted() {
-      if (Executed != null) {
-        Executed(this, EventArgs.Empty);
-      }
-    }
-
-    private void Parameters_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Operators/3.3/ParallelSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/ParallelSubScopesProcessor.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/ParallelSubScopesProcessor.cs	(revision 2796)
@@ -39,5 +39,5 @@
         inner.Parallel = true;
         for (int i = 0; (i < ExecutionContext.Scope.SubScopes.Count) && (i < Operators.Count); i++)
-          inner.Add(new ExecutionContext(ExecutionContext.Parent, Operators[i], ExecutionContext.Scope.SubScopes[i]));
+          inner.Add(ExecutionContext.CreateContext(Operators[i], ExecutionContext.Scope.SubScopes[i]));
         next.Insert(0, inner);
       }
Index: /trunk/sources/HeuristicLab.Operators/3.3/Placeholder.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Placeholder.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Placeholder.cs	(revision 2796)
@@ -45,5 +45,5 @@
       IOperator op = OperatorParameter.ActualValue;
       if (op != null)
-        next.Insert(0, new ExecutionContext(ExecutionContext.Parent, op, ExecutionContext.Scope));
+        next.Insert(0, ExecutionContext.CreateContext(op));
       return next;
     }
Index: /trunk/sources/HeuristicLab.Operators/3.3/SequentialSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SequentialSubScopesProcessor.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SequentialSubScopesProcessor.cs	(revision 2796)
@@ -38,5 +38,5 @@
         ExecutionContextCollection inner = new ExecutionContextCollection();
         for (int i = 0; (i < ExecutionContext.Scope.SubScopes.Count) && (i < Operators.Count); i++)
-          inner.Add(new ExecutionContext(ExecutionContext.Parent, Operators[i], ExecutionContext.Scope.SubScopes[i]));
+          inner.Add(ExecutionContext.CreateContext(Operators[i], ExecutionContext.Scope.SubScopes[i]));
         next.Insert(0, inner);
       }
Index: /trunk/sources/HeuristicLab.Operators/3.3/SingleCallOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SingleCallOperator.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SingleCallOperator.cs	(revision 2796)
@@ -48,5 +48,5 @@
       ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
       if (Operator != null)
-        next.Insert(0, new ExecutionContext(ExecutionContext.Parent, Operator, ExecutionContext.Scope));
+        next.Insert(0, ExecutionContext.CreateContext(Operator));
       return next;
     }
Index: /trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs	(revision 2796)
@@ -47,5 +47,5 @@
     public override IExecutionSequence Apply() {
       if (Successor != null)
-        return new ExecutionContext(ExecutionContext.Parent, Successor, ExecutionContext.Scope);
+        return ExecutionContext.CreateContext(Successor);
       else
         return null;
Index: /trunk/sources/HeuristicLab.Operators/3.3/StochasticBranch.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/StochasticBranch.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/StochasticBranch.cs	(revision 2796)
@@ -65,7 +65,7 @@
       ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
       if (RandomParameter.ActualValue.NextDouble() < ProbabilityParameter.ActualValue.Value) {
-        if (FirstBranch != null) next.Insert(0, new ExecutionContext(ExecutionContext.Parent, FirstBranch, ExecutionContext.Scope));
+        if (FirstBranch != null) next.Insert(0, ExecutionContext.CreateContext(FirstBranch));
       } else {
-        if (SecondBranch != null) next.Insert(0, new ExecutionContext(ExecutionContext.Parent, SecondBranch, ExecutionContext.Scope));
+        if (SecondBranch != null) next.Insert(0, ExecutionContext.CreateContext(SecondBranch));
       }
       return next;
Index: /trunk/sources/HeuristicLab.Operators/3.3/UniformParallelSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/UniformParallelSubScopesProcessor.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/UniformParallelSubScopesProcessor.cs	(revision 2796)
@@ -44,5 +44,5 @@
         inner.Parallel = true;
         for (int i = 0; i < ExecutionContext.Scope.SubScopes.Count; i++)
-          inner.Add(new ExecutionContext(ExecutionContext.Parent, Operator, ExecutionContext.Scope.SubScopes[i]));
+          inner.Add(ExecutionContext.CreateContext(Operator, ExecutionContext.Scope.SubScopes[i]));
         next.Insert(0, inner);
       }
Index: /trunk/sources/HeuristicLab.Operators/3.3/UniformSequentialSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/UniformSequentialSubScopesProcessor.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Operators/3.3/UniformSequentialSubScopesProcessor.cs	(revision 2796)
@@ -43,5 +43,5 @@
         ExecutionContextCollection inner = new ExecutionContextCollection();
         for (int i = 0; i < ExecutionContext.Scope.SubScopes.Count; i++)
-          inner.Add(new ExecutionContext(ExecutionContext.Parent, Operator, ExecutionContext.Scope.SubScopes[i]));
+          inner.Add(ExecutionContext.CreateContext(Operator, ExecutionContext.Scope.SubScopes[i]));
         next.Insert(0, inner);
       }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/NewMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/NewMenuItem.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/NewMenuItem.cs	(revision 2796)
@@ -23,5 +23,4 @@
 using System.Drawing;
 using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.Optimizer.MenuItems {
@@ -37,5 +36,5 @@
     }
     public override Image Image {
-      get { return Resources.NewIcon; }
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.NewDocument; }
     }
     public override Keys ShortCutKeys {
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/OpenMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/OpenMenuItem.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/OpenMenuItem.cs	(revision 2796)
@@ -23,5 +23,4 @@
 using System.Drawing;
 using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.Optimizer.MenuItems {
@@ -37,5 +36,5 @@
     }
     public override Image Image {
-      get { return Resources.OpenIcon; }
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Open; }
     }
     public override Keys ShortCutKeys {
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAllMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAllMenuItem.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAllMenuItem.cs	(revision 2796)
@@ -25,5 +25,4 @@
 using System.Linq;
 using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
@@ -41,5 +40,5 @@
     }
     public override Image Image {
-      get { return Resources.SaveAllIcon; }
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.SaveAll; }
     }
 
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveMenuItem.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveMenuItem.cs	(revision 2796)
@@ -24,5 +24,4 @@
 using System.Drawing;
 using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
@@ -40,5 +39,5 @@
     }
     public override Image Image {
-      get { return Resources.SaveIcon; }
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Save; }
     }
     public override Keys ShortCutKeys {
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/NewToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/NewToolBarItem.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/NewToolBarItem.cs	(revision 2796)
@@ -21,5 +21,4 @@
 
 using System.Drawing;
-using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.Optimizer {
@@ -35,5 +34,5 @@
     }
     public override Image Image {
-      get { return Resources.NewIcon; }
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.NewDocument; }
     }
 
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/OpenToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/OpenToolBarItem.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/OpenToolBarItem.cs	(revision 2796)
@@ -21,5 +21,4 @@
 
 using System.Drawing;
-using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.Optimizer {
@@ -35,5 +34,5 @@
     }
     public override Image Image {
-      get { return Resources.OpenIcon; }
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Open; }
     }
 
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveAllToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveAllToolBarItem.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveAllToolBarItem.cs	(revision 2796)
@@ -24,5 +24,4 @@
 using System.Linq;
 using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
@@ -40,5 +39,5 @@
     }
     public override Image Image {
-      get { return Resources.SaveAllIcon; }
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.SaveAll; }
     }
 
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveToolBarItem.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveToolBarItem.cs	(revision 2796)
@@ -23,5 +23,4 @@
 using System.Drawing;
 using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
@@ -39,5 +38,5 @@
     }
     public override Image Image {
-      get { return Resources.SaveIcon; }
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Save; }
     }
 
Index: /trunk/sources/HeuristicLab.Parameters.Views/3.3/ValueLookupParameterView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters.Views/3.3/ValueLookupParameterView.Designer.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Parameters.Views/3.3/ValueLookupParameterView.Designer.cs	(revision 2796)
@@ -111,7 +111,7 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.valuePanel.Controls.Add(this.viewHost);
-      this.valuePanel.Location = new System.Drawing.Point(6, 48);
+      this.valuePanel.Location = new System.Drawing.Point(6, 49);
       this.valuePanel.Name = "valuePanel";
-      this.valuePanel.Size = new System.Drawing.Size(374, 115);
+      this.valuePanel.Size = new System.Drawing.Size(374, 114);
       this.valuePanel.TabIndex = 0;
       this.valuePanel.DragOver += new System.Windows.Forms.DragEventHandler(this.valuePanel_DragEnterOver);
@@ -125,5 +125,5 @@
       this.viewHost.Location = new System.Drawing.Point(0, 0);
       this.viewHost.Name = "viewHost";
-      this.viewHost.Size = new System.Drawing.Size(374, 115);
+      this.viewHost.Size = new System.Drawing.Size(374, 114);
       this.viewHost.TabIndex = 0;
       // 
@@ -132,7 +132,7 @@
       this.clearValueButton.Enabled = false;
       this.clearValueButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove;
-      this.clearValueButton.Location = new System.Drawing.Point(35, 19);
+      this.clearValueButton.Location = new System.Drawing.Point(36, 19);
       this.clearValueButton.Name = "clearValueButton";
-      this.clearValueButton.Size = new System.Drawing.Size(23, 23);
+      this.clearValueButton.Size = new System.Drawing.Size(24, 24);
       this.clearValueButton.TabIndex = 1;
       this.toolTip.SetToolTip(this.clearValueButton, "Clear Value");
@@ -145,5 +145,5 @@
       this.setValueButton.Location = new System.Drawing.Point(6, 19);
       this.setValueButton.Name = "setValueButton";
-      this.setValueButton.Size = new System.Drawing.Size(23, 23);
+      this.setValueButton.Size = new System.Drawing.Size(24, 24);
       this.setValueButton.TabIndex = 0;
       this.toolTip.SetToolTip(this.setValueButton, "Set Value");
Index: /trunk/sources/HeuristicLab.Parameters.Views/3.3/ValueParameterView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters.Views/3.3/ValueParameterView.Designer.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Parameters.Views/3.3/ValueParameterView.Designer.cs	(revision 2796)
@@ -97,7 +97,7 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.valuePanel.Controls.Add(this.viewHost);
-      this.valuePanel.Location = new System.Drawing.Point(6, 48);
+      this.valuePanel.Location = new System.Drawing.Point(6, 49);
       this.valuePanel.Name = "valuePanel";
-      this.valuePanel.Size = new System.Drawing.Size(374, 141);
+      this.valuePanel.Size = new System.Drawing.Size(374, 140);
       this.valuePanel.TabIndex = 0;
       this.valuePanel.DragOver += new System.Windows.Forms.DragEventHandler(this.valuePanel_DragEnterOver);
@@ -111,5 +111,5 @@
       this.viewHost.Location = new System.Drawing.Point(0, 0);
       this.viewHost.Name = "viewHost";
-      this.viewHost.Size = new System.Drawing.Size(374, 141);
+      this.viewHost.Size = new System.Drawing.Size(374, 140);
       this.viewHost.TabIndex = 0;
       // 
@@ -118,7 +118,7 @@
       this.clearValueButton.Enabled = false;
       this.clearValueButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove;
-      this.clearValueButton.Location = new System.Drawing.Point(35, 19);
+      this.clearValueButton.Location = new System.Drawing.Point(36, 19);
       this.clearValueButton.Name = "clearValueButton";
-      this.clearValueButton.Size = new System.Drawing.Size(23, 23);
+      this.clearValueButton.Size = new System.Drawing.Size(24, 24);
       this.clearValueButton.TabIndex = 1;
       this.toolTip.SetToolTip(this.clearValueButton, "Clear Value");
@@ -131,5 +131,5 @@
       this.setValueButton.Location = new System.Drawing.Point(6, 19);
       this.setValueButton.Name = "setValueButton";
-      this.setValueButton.Size = new System.Drawing.Size(23, 23);
+      this.setValueButton.Size = new System.Drawing.Size(24, 24);
       this.setValueButton.TabIndex = 0;
       this.toolTip.SetToolTip(this.setValueButton, "Set Value");
Index: /trunk/sources/HeuristicLab.Parameters/3.3/SubScopesLookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/SubScopesLookupParameter.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/SubScopesLookupParameter.cs	(revision 2796)
@@ -33,45 +33,8 @@
   /// </summary>
   [Item("SubScopesLookupParameter<T>", "A generic parameter representing instances of type T which are collected from or written to the sub-scopes of the current scope.")]
-  public class SubScopesLookupParameter<T> : Parameter, ILookupParameter<T> where T : class, IItem {
-    [Storable]
-    private string actualName;
-    public string ActualName {
-      get { return actualName; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if (!actualName.Equals(value)) {
-          actualName = value;
-          OnActualNameChanged();
-        }
-      }
-    }
-
-    public new ItemArray<T> ActualValue {
-      get { return (ItemArray<T>)GetActualValue(); }
-      set { SetActualValue(value); }
-    }
-
-    public SubScopesLookupParameter()
-      : base("Anonymous", typeof(ItemArray<T>)) {
-      actualName = Name;
-    }
-    public SubScopesLookupParameter(string name)
-      : base(name, typeof(ItemArray<T>)) {
-      actualName = Name;
-    }
-    public SubScopesLookupParameter(string name, string description)
-      : base(name, description, typeof(ItemArray<T>)) {
-      actualName = Name;
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      SubScopesLookupParameter<T> clone = (SubScopesLookupParameter<T>)base.Clone(cloner);
-      clone.actualName = actualName;
-      return clone;
-    }
-
-    public override string ToString() {
-      return string.Format("{0}: {1} ({2})", Name, ActualName, DataType.Name);
-    }
+  public class SubScopesLookupParameter<T> : LookupParameter<ItemArray<T>> where T : class, IItem {
+    public SubScopesLookupParameter() : base() { }
+    public SubScopesLookupParameter(string name) : base(name) { }
+    public SubScopesLookupParameter(string name, string description) : base(name, description) { }
 
     protected override IItem GetActualValue() {
@@ -115,11 +78,4 @@
       }
     }
-
-    public event EventHandler ActualNameChanged;
-    private void OnActualNameChanged() {
-      if (ActualNameChanged != null)
-        ActualNameChanged(this, EventArgs.Empty);
-      OnChanged();
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 2796)
@@ -47,4 +47,16 @@
       }
     }
+    IItem IValueParameter.Value {
+      get { return Value; }
+      set {
+        T val = value as T;
+        if (val == null)
+          throw new InvalidOperationException(
+            string.Format("Type mismatch. Value is not a \"{0}\".",
+                          typeof(T).GetPrettyName())
+          );
+        Value = val;
+      }
+    }
 
     public ValueLookupParameter()
Index: /trunk/sources/HeuristicLab.Parameters/3.3/ValueParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/ValueParameter.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/ValueParameter.cs	(revision 2796)
@@ -47,7 +47,15 @@
       }
     }
-    public new T ActualValue {
+    IItem IValueParameter.Value {
       get { return Value; }
-      set { Value = value; }
+      set {
+        T val = value as T;
+        if (val == null)
+          throw new InvalidOperationException(
+            string.Format("Type mismatch. Value is not a \"{0}\".",
+                          typeof(T).GetPrettyName())
+          );
+        Value = val;
+      }
     }
 
@@ -84,11 +92,5 @@
     }
     protected override void SetActualValue(IItem value) {
-      T val = value as T;
-      if (val == null)
-        throw new InvalidOperationException(
-          string.Format("Type mismatch. Value is not a \"{0}\".",
-                        typeof(T).GetPrettyName())
-        );
-      Value = val;
+      ((IValueParameter)this).Value = value;
     }
 
Index: /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/HeuristicLab.Routing.TSP.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/HeuristicLab.Routing.TSP.Views-3.3.csproj	(revision 2796)
+++ /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/HeuristicLab.Routing.TSP.Views-3.3.csproj	(revision 2796)
@@ -0,0 +1,82 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{DF2E61C4-A76D-4315-9D0B-53A077B1AC2C}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Routing.TSP.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Routing.TSP.Views-3.3</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\HeuristicLab.Routing.TSP.Views-3.3.XML</DocumentationFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HeuristicLabRoutingTSPViewsPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="HeuristicLabRoutingTSPViewsPlugin.cs.frame" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\HeuristicLabRoutingTSPViewsPlugin.cs.frame" "%25ProjectDir%25\HeuristicLabRoutingTSPViewsPlugin.cs"</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/HeuristicLabRoutingTSPViewsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/HeuristicLabRoutingTSPViewsPlugin.cs.frame	(revision 2796)
+++ /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/HeuristicLabRoutingTSPViewsPlugin.cs.frame	(revision 2796)
@@ -0,0 +1,40 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Routing.TSP.Views {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Routing.TSP.Views plugin
+  /// </summary>
+  [Plugin("HeuristicLab.Routing.TSP.Views", "3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.Routing.TSP.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.2")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.2")]
+  [PluginDependency("HeuristicLab.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Permutation", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  public class HeuristicLabRoutingTSPViewsPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/Properties/AssemblyInfo.frame	(revision 2796)
+++ /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/Properties/AssemblyInfo.frame	(revision 2796)
@@ -0,0 +1,55 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Routing.TSP.Views")]
+[assembly: AssemblyDescription("Views of the HeuristicLab Traveling Salesman Problem classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2010 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("30a47401-50c8-4ddf-a4b6-73deb16e2aa3")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.3.0.0")]
+[assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLab.Routing.TSP-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLab.Routing.TSP-3.3.csproj	(revision 2795)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLab.Routing.TSP-3.3.csproj	(revision 2796)
@@ -86,11 +86,13 @@
   <ItemGroup>
     <None Include="HeuristicLabRoutingTSPPlugin.cs.frame" />
+    <Compile Include="TSP.cs" />
     <Compile Include="HeuristicLabRoutingTSPPlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="TSPParser.cs" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
-      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
-      <Name>HeuristicLab.Core.Views-3.3</Name>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
@@ -101,12 +103,4 @@
       <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
       <Name>HeuristicLab.Data-3.3</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.2\HeuristicLab.MainForm.WindowsForms-3.2.csproj">
-      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
-      <Name>HeuristicLab.MainForm.WindowsForms-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.2\HeuristicLab.MainForm-3.2.csproj">
-      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
-      <Name>HeuristicLab.MainForm-3.2</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLabRoutingTSPPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLabRoutingTSPPlugin.cs.frame	(revision 2795)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLabRoutingTSPPlugin.cs.frame	(revision 2796)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.PluginInfrastructure;
 
@@ -31,9 +28,7 @@
   [Plugin("HeuristicLab.Routing.TSP", "3.3.0.$WCREV$")]
   [PluginFile("HeuristicLab.Routing.TSP-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
-  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
   [PluginDependency("HeuristicLab.Data", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm", "3.2")]
-  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.2")]
   [PluginDependency("HeuristicLab.Operators", "3.3")]
   [PluginDependency("HeuristicLab.Permutation", "3.3")]
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/Properties/AssemblyInfo.frame	(revision 2795)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/Properties/AssemblyInfo.frame	(revision 2796)
@@ -21,5 +21,4 @@
 
 using System.Reflection;
-using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSP.cs
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSP.cs	(revision 2796)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSP.cs	(revision 2796)
@@ -0,0 +1,39 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Data {
+  [Item("TSP", "Represents a symmetric Traveling Salesman Problem.")]
+  [Creatable("Problems")]
+  public sealed class TSP : Problem {
+    public TSP()
+      : base() {
+
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPParser.cs
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPParser.cs	(revision 2795)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPParser.cs	(revision 2796)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -21,12 +21,10 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
+using System.Globalization;
 using System.IO;
-using System.Globalization;
 
 namespace HeuristicLab.Routing.TSP {
   /// <summary>
-  /// Parses a *.tsp file and extracts its information about a TSP.
+  /// Parses a *.tsp file in the TSPLIB format and extracts its information about a TSP.
   /// </summary>
   public class TSPParser {
