Index: /trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- /trunk/sources/HeuristicLab 3.3.sln	(revision 2833)
+++ /trunk/sources/HeuristicLab 3.3.sln	(revision 2834)
@@ -151,4 +151,8 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.SGA-3.3.Tests", "HeuristicLab.SGA\3.3\Tests\HeuristicLab.SGA-3.3.Tests.csproj", "{F42F3576-7233-4B28-90F7-36AE15F30F92}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Optimization-3.3", "HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj", "{14AB8D24-25BC-400C-A846-4627AA945192}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Optimization.Views-3.3", "HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj", "{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}"
 EndProject
 Global
@@ -675,4 +679,20 @@
 		{F42F3576-7233-4B28-90F7-36AE15F30F92}.Release|x64.ActiveCfg = Release|Any CPU
 		{F42F3576-7233-4B28-90F7-36AE15F30F92}.Release|x86.ActiveCfg = Release|Any CPU
+		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{14AB8D24-25BC-400C-A846-4627AA945192}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|Any CPU.Build.0 = Release|Any CPU
+		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|x64.ActiveCfg = Release|Any CPU
+		{14AB8D24-25BC-400C-A846-4627AA945192}.Release|x86.ActiveCfg = Release|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.Release|x64.ActiveCfg = Release|Any CPU
+		{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}.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 2833)
+++ /trunk/sources/HeuristicLab 3.3/Files.txt	(revision 2834)
@@ -23,4 +23,6 @@
 HeuristicLab.Operators.Views.GraphVisualization\3.3:HeuristicLab.Operators.Views.GraphVisualization-3.3.dll 
 HeuristicLab.Operators.Programmable\3.3:HeuristicLab.Operators.Programmable-3.3.dll 
+HeuristicLab.Optimization\3.3:HeuristicLab.Optimization-3.3.dll 
+HeuristicLab.Optimization.Views\3.3:HeuristicLab.Optimization.Views-3.3.dll 
 HeuristicLab.Optimizer\3.3:HeuristicLab.Optimizer-3.3.dll 
 HeuristicLab.Parameters\3.3:HeuristicLab.Parameters-3.3.dll 
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.Designer.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.Designer.cs	(revision 2834)
@@ -54,7 +54,4 @@
       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();
@@ -64,6 +61,4 @@
       this.operatorGraphViewHost = new HeuristicLab.Core.Views.ViewHost();
       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();
@@ -71,5 +66,4 @@
       this.operatorGraphTabPage.SuspendLayout();
       this.globalScopeTabPage.SuspendLayout();
-      this.problemTabPage.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -142,37 +136,4 @@
       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
       // 
@@ -215,5 +176,4 @@
       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";
@@ -258,30 +218,4 @@
       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;
-      this.problemViewHost.ViewType = null;
       // 
       // openFileDialog
@@ -315,5 +249,4 @@
       this.operatorGraphTabPage.ResumeLayout(false);
       this.globalScopeTabPage.ResumeLayout(false);
-      this.problemTabPage.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -332,9 +265,4 @@
     protected System.Windows.Forms.TabControl tabControl;
     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 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 2833)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.cs	(revision 2834)
@@ -62,5 +62,4 @@
     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);
@@ -78,5 +77,4 @@
       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);
@@ -97,6 +95,4 @@
         operatorGraphViewHost.Enabled = false;
         scopeView.Enabled = false;
-        newProblemButton.Enabled = openProblemButton.Enabled = saveProblemButton.Enabled = false;
-        problemViewHost.Enabled = false;
         startButton.Enabled = resetButton.Enabled = false;
         executionTimeTextBox.Enabled = false;
@@ -107,8 +103,4 @@
         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;
@@ -124,12 +116,4 @@
       else
         operatorGraphViewHost.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) {
@@ -140,7 +124,4 @@
         operatorGraphViewHost.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;
@@ -157,6 +138,4 @@
         operatorGraphViewHost.Enabled = false;
         scopeView.Enabled = false;
-        newProblemButton.Enabled = openProblemButton.Enabled = saveProblemButton.Enabled = false;
-        problemViewHost.Enabled = false;
         startButton.Enabled = false;
         stopButton.Enabled = true;
@@ -172,7 +151,4 @@
         operatorGraphViewHost.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;
@@ -230,45 +206,4 @@
       }
     }
-    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 2833)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2834)
@@ -131,10 +131,4 @@
       <DependentUpon>OperatorTreeView.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">
       <SubType>Form</SubType>
Index: unk/sources/HeuristicLab.Core.Views/3.3/ProblemView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ProblemView.Designer.cs	(revision 2833)
+++ 	(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.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
-
-    protected ValueParameterCollectionView valueParameterCollectionView;
-
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/ProblemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ProblemView.cs	(revision 2833)
+++ 	(revision )
@@ -1,59 +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 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/3.3/Engine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Engine.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Core/3.3/Engine.cs	(revision 2834)
@@ -71,21 +71,4 @@
 
     [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>
@@ -105,9 +88,9 @@
     /// </summary>
     [Storable]
-    private Stack<IExecutionSequence> executionStack;
+    private Stack<IOperation> executionStack;
     /// <summary>
     /// Gets the current execution stack.
     /// </summary>
-    protected Stack<IExecutionSequence> ExecutionStack {
+    protected Stack<IOperation> ExecutionStack {
       get { return executionStack; }
     }
@@ -146,6 +129,5 @@
     protected Engine() {
       globalScope = new Scope("Global");
-      problem = null;
-      executionStack = new Stack<IExecutionSequence>();
+      executionStack = new Stack<IOperation>();
       OperatorGraph = new OperatorGraph();
     }
@@ -162,9 +144,8 @@
       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();
+      IOperation[] contexts = executionStack.ToArray();
       for (int i = contexts.Length - 1; i >= 0; i--)
-        clone.executionStack.Push((IExecutionSequence)cloner.Clone(contexts[i]));
+        clone.executionStack.Push((IOperation)cloner.Clone(contexts[i]));
       clone.running = running;
       clone.canceled = canceled;
@@ -172,4 +153,14 @@
     }
 
+    public void Prepare(IOperation initialOperation) {
+      canceled = false;
+      running = false;
+      globalScope.Clear();
+      ExecutionTime = new TimeSpan();
+      executionStack.Clear();
+      if (initialOperation != null)
+        executionStack.Push(initialOperation);
+      OnPrepared();
+    }
     /// <inheritdoc/>
     /// <remarks>Sets <c>myCanceled</c> and <c>myRunning</c> to <c>false</c>. The global scope is cleared,
@@ -178,12 +169,6 @@
     /// Calls <see cref="OnPrepared"/>.</remarks>
     public void Prepare() {
-      canceled = false;
-      running = false;
-      globalScope.Clear();
-      ExecutionTime = new TimeSpan();
-      executionStack.Clear();
-      if ((OperatorGraph.InitialOperator != null) && (Problem != null))
-        executionStack.Push(new ExecutionContext(null, OperatorGraph.InitialOperator, GlobalScope, Problem));
-      OnPrepared();
+      if (OperatorGraph.InitialOperator != null)
+        Prepare(new ExecutionContext(null, OperatorGraph.InitialOperator, GlobalScope));
     }
     /// <inheritdoc/>
@@ -254,15 +239,4 @@
     }
     /// <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>
     /// Occurs when the execution time changed.
     /// </summary>
Index: /trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs	(revision 2834)
@@ -21,20 +21,24 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
+using HeuristicLab.Collections;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Core {
-  public class ExecutionContext : DeepCloneable, IExecutionSequence {
+  public class ExecutionContext : DeepCloneable, IExecutionContext, IAtomicOperation {
     [Storable]
-    private ExecutionContext parent;
-    public ExecutionContext Parent {
+    private IParameterizedItem parameterizedItem;
+
+    [Storable]
+    private IExecutionContext parent;
+    public IExecutionContext Parent {
       get { return parent; }
     }
 
-    [Storable]
-    private IOperator op;
+    public IObservableKeyedCollection<string, IParameter> Parameters {
+      get { return parameterizedItem.Parameters; }
+    }
+
     public IOperator Operator {
-      get { return op; }
+      get { return parameterizedItem as IOperator; }
     }
 
@@ -45,22 +49,14 @@
     }
 
-    [Storable]
-    private IProblem problem;
-    public IProblem Problem {
-      get { return problem; }
-    }
-
     private ExecutionContext() {
       parent = null;
-      op = null;
+      parameterizedItem = null;
       scope = null;
-      problem = null;
     }
-    public ExecutionContext(ExecutionContext parent, IOperator op, IScope scope, IProblem problem) {
-      if ((op == null) || (scope == null) || (problem == null)) throw new ArgumentNullException();
+    public ExecutionContext(IExecutionContext parent, IParameterizedItem parameterizedItem, IScope scope) {
+      if ((parameterizedItem == null) || (scope == null)) throw new ArgumentNullException();
       this.parent = parent;
-      this.op = op;
+      this.parameterizedItem = parameterizedItem;
       this.scope = scope;
-      this.problem = problem;
     }
 
@@ -68,22 +64,21 @@
       ExecutionContext clone = new ExecutionContext();
       cloner.RegisterClonedObject(this, clone);
-      clone.parent = (ExecutionContext)cloner.Clone(parent);
-      clone.op = (IOperator)cloner.Clone(op);
+      clone.parent = (IExecutionContext)cloner.Clone(parent);
+      clone.parameterizedItem = (IParameterizedItem)cloner.Clone(parameterizedItem);
       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 IAtomicOperation CreateOperation(IOperator op) {
+      return new ExecutionContext(parent, op, scope);
     }
-    public ExecutionContext CreateContext(IOperator op, IScope scope) {
-      return new ExecutionContext(parent, op, scope, problem);
+    public IAtomicOperation CreateOperation(IOperator op, IScope scope) {
+      return new ExecutionContext(parent, op, scope);
     }
-    public ExecutionContext CreateChildContext(IOperator op) {
-      return new ExecutionContext(this, op, scope, problem);
+    public IAtomicOperation CreateChildOperation(IOperator op) {
+      return new ExecutionContext(this, op, scope);
     }
-    public ExecutionContext CreateChildContext(IOperator op, IScope scope) {
-      return new ExecutionContext(this, op, scope, problem);
+    public IAtomicOperation CreateChildOperation(IOperator op, IScope scope) {
+      return new ExecutionContext(this, op, scope);
     }
   }
Index: unk/sources/HeuristicLab.Core/3.3/ExecutionContextCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ExecutionContextCollection.cs	(revision 2833)
+++ 	(revision )
@@ -1,115 +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.Linq;
-using System.Text;
-using System.Xml;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Core {
-  public class ExecutionContextCollection : DeepCloneable, IList<IExecutionSequence>, IExecutionSequence {
-    [Storable]
-    private IList<IExecutionSequence> contexts;
-
-    [Storable]
-    private bool parallel;
-    public bool Parallel {
-      get { return parallel; }
-      set { parallel = value; }
-    }
-
-    public ExecutionContextCollection() {
-      contexts = new List<IExecutionSequence>();
-      parallel = false;
-    }
-    public ExecutionContextCollection(IEnumerable<IExecutionSequence> collection) {
-      contexts = new List<IExecutionSequence>(collection.Where(e => e != null));
-      parallel = false;
-    }
-    public ExecutionContextCollection(params IExecutionSequence[] list) {
-      contexts = new List<IExecutionSequence>(list.Where(e => e != null));
-      parallel = false;
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      ExecutionContextCollection clone = new ExecutionContextCollection();
-      cloner.RegisterClonedObject(this, clone);
-      clone.parallel = parallel;
-      for (int i = 0; i < contexts.Count; i++)
-        clone.contexts.Add((IExecutionSequence)cloner.Clone(contexts[i]));
-      return clone;
-    }
-
-    #region IList<IExecutionContext> Members
-    public int IndexOf(IExecutionSequence item) {
-      return contexts.IndexOf(item);
-    }
-    public void Insert(int index, IExecutionSequence item) {
-      if (item != null) contexts.Insert(index, item);
-    }
-    public void RemoveAt(int index) {
-      contexts.RemoveAt(index);
-    }
-    public IExecutionSequence this[int index] {
-      get { return contexts[index]; }
-      set { if (value != null) contexts[index] = value; }
-    }
-    #endregion
-
-    #region ICollection<IExecutionContext> Members
-    public void Add(IExecutionSequence item) {
-      if (item != null) contexts.Add(item);
-    }
-    public void Clear() {
-      contexts.Clear();
-    }
-    public bool Contains(IExecutionSequence item) {
-      return contexts.Contains(item);
-    }
-    public void CopyTo(IExecutionSequence[] array, int arrayIndex) {
-      contexts.CopyTo(array, arrayIndex);
-    }
-    public int Count {
-      get { return contexts.Count; }
-    }
-    public bool IsReadOnly {
-      get { return contexts.IsReadOnly; }
-    }
-    public bool Remove(IExecutionSequence item) {
-      return contexts.Remove(item);
-    }
-    #endregion
-
-    #region IEnumerable<IExecutionContext> Members
-    public IEnumerator<IExecutionSequence> GetEnumerator() {
-      return contexts.GetEnumerator();
-    }
-    #endregion
-
-    #region IEnumerable Members
-    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
-      return contexts.GetEnumerator();
-    }
-    #endregion
-  }
-}
Index: /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2833)
+++ /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2834)
@@ -104,7 +104,10 @@
     <Compile Include="ChangedEventArgs.cs" />
     <None Include="HeuristicLabCorePlugin.cs.frame" />
+    <Compile Include="Interfaces\IParameterizedItem.cs" />
+    <Compile Include="Interfaces\IAtomicOperation.cs" />
+    <Compile Include="Interfaces\IExecutionContext.cs" />
+    <Compile Include="Interfaces\IOperation.cs" />
+    <Compile Include="OperationCollection.cs" />
     <Compile Include="ValueParameterCollection.cs" />
-    <Compile Include="Interfaces\IProblem.cs" />
-    <Compile Include="Interfaces\IExecutionSequence.cs" />
     <Compile Include="Interfaces\IValueLookupParameter.cs" />
     <Compile Include="Interfaces\IValueParameter.cs" />
@@ -117,5 +120,4 @@
     <Compile Include="Item.cs" />
     <Compile Include="NamedItem.cs" />
-    <Compile Include="Problem.cs" />
     <Compile Include="OperatorGraph.cs" />
     <Compile Include="Interfaces\IParameter.cs" />
@@ -128,5 +130,4 @@
       <SubType>Code</SubType>
     </Compile>
-    <Compile Include="ExecutionContextCollection.cs" />
     <Compile Include="ExecutionContext.cs" />
     <Compile Include="OperatorList.cs" />
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IAtomicOperation.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IAtomicOperation.cs	(revision 2834)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IAtomicOperation.cs	(revision 2834)
@@ -0,0 +1,30 @@
+#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 {
+  /// <summary>
+  /// Interface which represents an atomic operation.
+  /// </summary>
+  public interface IAtomicOperation : IOperation {
+    IOperator Operator { get; }
+    IScope Scope { get; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEngine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEngine.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEngine.cs	(revision 2834)
@@ -38,8 +38,4 @@
     /// </summary>
     IScope GlobalScope { get; }
-    /// <summary>
-    /// Gets the problem of the current instance.
-    /// </summary>
-    IProblem Problem { get; set; }
 
     /// <summary>
@@ -62,4 +58,8 @@
     void Prepare();
     /// <summary>
+    /// Prepares the engine with a given initial operation.
+    /// </summary>
+    void Prepare(IOperation initialOperation);
+    /// <summary>
     /// Executes the whole run.
     /// </summary>
@@ -78,8 +78,4 @@
     /// </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/IExecutionContext.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IExecutionContext.cs	(revision 2834)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IExecutionContext.cs	(revision 2834)
@@ -0,0 +1,38 @@
+#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 which represents an execution context.
+  /// </summary>
+  public interface IExecutionContext : IDeepCloneable {
+    IExecutionContext Parent { get; }
+    IObservableKeyedCollection<string, IParameter> Parameters { get; }
+    IScope Scope { get; }
+
+    IAtomicOperation CreateOperation(IOperator op);
+    IAtomicOperation CreateOperation(IOperator op, IScope scope);
+    IAtomicOperation CreateChildOperation(IOperator op);
+    IAtomicOperation CreateChildOperation(IOperator op, IScope scope);
+  }
+}
Index: unk/sources/HeuristicLab.Core/3.3/Interfaces/IExecutionSequence.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IExecutionSequence.cs	(revision 2833)
+++ 	(revision )
@@ -1,33 +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.Text;
-using System.Drawing;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Interface which represents an execution context.
-  /// </summary>
-  public interface IExecutionSequence : IDeepCloneable { }
-}
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperation.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperation.cs	(revision 2834)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperation.cs	(revision 2834)
@@ -0,0 +1,27 @@
+#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 {
+  /// <summary>
+  /// Interface which represents an operation.
+  /// </summary>
+  public interface IOperation : IDeepCloneable { }
+}
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperator.cs	(revision 2834)
@@ -21,8 +21,4 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
-using HeuristicLab.Common;
-using HeuristicLab.Collections;
 
 namespace HeuristicLab.Core {
@@ -31,7 +27,5 @@
   /// a basic instruction of an algorithm.
   /// </summary>
-  public interface IOperator : INamedItem {
-    IObservableKeyedCollection<string, IParameter> Parameters { get; }
-
+  public interface IOperator : INamedItem, IParameterizedItem {
     /// <summary>
     /// Gets or sets a boolean value whether the engine should stop here during the run.
@@ -44,5 +38,5 @@
     /// <param name="scope">The scope where to execute the current instance.</param>
     /// <returns>The next operation.</returns>
-    IExecutionSequence Execute(ExecutionContext context);
+    IOperation Execute(IExecutionContext context);
     /// <summary>
     /// Aborts the current operator.
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IParameter.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IParameter.cs	(revision 2834)
@@ -21,8 +21,4 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
-using HeuristicLab.Common;
 
 namespace HeuristicLab.Core {
@@ -30,5 +26,5 @@
     Type DataType { get; }
     IItem ActualValue { get; set; }
-    ExecutionContext ExecutionContext { get; set; }
+    IExecutionContext ExecutionContext { get; set; }
   }
 }
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IParameterizedItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IParameterizedItem.cs	(revision 2834)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IParameterizedItem.cs	(revision 2834)
@@ -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>
+  /// An interface which represents an item which contains parameters.
+  /// </summary>
+  public interface IParameterizedItem : IItem {
+    IObservableKeyedCollection<string, IParameter> Parameters { get; }
+  }
+}
Index: unk/sources/HeuristicLab.Core/3.3/Interfaces/IProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IProblem.cs	(revision 2833)
+++ 	(revision )
@@ -1,31 +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 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/NamedItemCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/NamedItemCollection.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Core/3.3/NamedItemCollection.cs	(revision 2834)
@@ -21,7 +21,7 @@
 
 using System;
-using System.Linq;
 using System.Collections.Generic;
 using System.Drawing;
+using System.Linq;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
Index: /trunk/sources/HeuristicLab.Core/3.3/OperationCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/OperationCollection.cs	(revision 2834)
+++ /trunk/sources/HeuristicLab.Core/3.3/OperationCollection.cs	(revision 2834)
@@ -0,0 +1,110 @@
+#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 System.Linq;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Core {
+  public class OperationCollection : DeepCloneable, IList<IOperation>, IOperation {
+    [Storable]
+    private IList<IOperation> operations;
+
+    [Storable]
+    private bool parallel;
+    public bool Parallel {
+      get { return parallel; }
+      set { parallel = value; }
+    }
+
+    public OperationCollection() {
+      operations = new List<IOperation>();
+      parallel = false;
+    }
+    public OperationCollection(IEnumerable<IOperation> collection) {
+      operations = new List<IOperation>(collection.Where(e => e != null));
+      parallel = false;
+    }
+    public OperationCollection(params IOperation[] list) {
+      operations = new List<IOperation>(list.Where(e => e != null));
+      parallel = false;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      OperationCollection clone = new OperationCollection(this.Select(x => (IOperation)cloner.Clone(x)));
+      cloner.RegisterClonedObject(this, clone);
+      clone.parallel = parallel;
+      return clone;
+    }
+
+    #region IList<IOperation> Members
+    public int IndexOf(IOperation item) {
+      return operations.IndexOf(item);
+    }
+    public void Insert(int index, IOperation item) {
+      if (item != null) operations.Insert(index, item);
+    }
+    public void RemoveAt(int index) {
+      operations.RemoveAt(index);
+    }
+    public IOperation this[int index] {
+      get { return operations[index]; }
+      set { if (value != null) operations[index] = value; }
+    }
+    #endregion
+
+    #region ICollection<IOperation> Members
+    public void Add(IOperation item) {
+      if (item != null) operations.Add(item);
+    }
+    public void Clear() {
+      operations.Clear();
+    }
+    public bool Contains(IOperation item) {
+      return operations.Contains(item);
+    }
+    public void CopyTo(IOperation[] array, int arrayIndex) {
+      operations.CopyTo(array, arrayIndex);
+    }
+    public int Count {
+      get { return operations.Count; }
+    }
+    public bool IsReadOnly {
+      get { return operations.IsReadOnly; }
+    }
+    public bool Remove(IOperation item) {
+      return operations.Remove(item);
+    }
+    #endregion
+
+    #region IEnumerable<IOperation> Members
+    public IEnumerator<IOperation> GetEnumerator() {
+      return operations.GetEnumerator();
+    }
+    #endregion
+
+    #region IEnumerable Members
+    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
+      return operations.GetEnumerator();
+    }
+    #endregion
+  }
+}
Index: unk/sources/HeuristicLab.Core/3.3/Problem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Problem.cs	(revision 2833)
+++ 	(revision )
@@ -1,72 +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.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.Evolutionary/3.3/ChildrenCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Evolutionary/3.3/ChildrenCreator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Evolutionary/3.3/ChildrenCreator.cs	(revision 2834)
@@ -60,5 +60,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       int parentsPerChild = ParentsPerChildParameter.ActualValue.Value;
       int parents = CurrentScope.SubScopes.Count;
Index: /trunk/sources/HeuristicLab.Evolutionary/3.3/PopulationCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Evolutionary/3.3/PopulationCreator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Evolutionary/3.3/PopulationCreator.cs	(revision 2834)
@@ -59,5 +59,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       int size = PopulationSizeParameter.ActualValue.Value;
       IOperator creator = SolutionCreatorParameter.ActualValue;
@@ -69,8 +69,8 @@
         CurrentScope.SubScopes.Add(new Scope(i.ToString()));
 
-      ExecutionContextCollection next = new ExecutionContextCollection();
+      OperationCollection next = new OperationCollection();
       for (int i = 0; i < CurrentScope.SubScopes.Count; i++) {
-        if (creator != null) next.Add(ExecutionContext.CreateContext(creator, CurrentScope.SubScopes[i]));
-        if (evaluator != null) next.Add(ExecutionContext.CreateContext(evaluator, CurrentScope.SubScopes[i]));
+        if (creator != null) next.Add(ExecutionContext.CreateOperation(creator, CurrentScope.SubScopes[i]));
+        if (evaluator != null) next.Add(ExecutionContext.CreateOperation(evaluator, CurrentScope.SubScopes[i]));
       }
       next.Add(base.Apply());
Index: /trunk/sources/HeuristicLab.Operators.Views/3.3/AlgorithmOperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views/3.3/AlgorithmOperatorView.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators.Views/3.3/AlgorithmOperatorView.cs	(revision 2834)
@@ -28,5 +28,5 @@
   /// The base class for visual representations of items.
   /// </summary>
-  [Content(typeof(CombinedOperator), true)]
+  [Content(typeof(AlgorithmOperator), true)]
   public partial class AlgorithmOperatorView : NamedItemView {
     public new AlgorithmOperator Content {
Index: /trunk/sources/HeuristicLab.Operators/3.3/AlgorithmOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/AlgorithmOperator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/AlgorithmOperator.cs	(revision 2834)
@@ -50,8 +50,8 @@
     }
 
-    public override IExecutionSequence Apply() {
-      ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
+    public override IOperation Apply() {
+      OperationCollection next = new OperationCollection(base.Apply());
       if (operatorGraph.InitialOperator != null)
-        next.Insert(0, ExecutionContext.CreateChildContext(operatorGraph.InitialOperator));
+        next.Insert(0, ExecutionContext.CreateChildOperation(operatorGraph.InitialOperator));
       return next;
     }
Index: /trunk/sources/HeuristicLab.Operators/3.3/Assigner.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Assigner.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Assigner.cs	(revision 2834)
@@ -45,5 +45,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       LeftSideParameter.ActualValue = (IItem)RightSideParameter.ActualValue.Clone();
       return base.Apply();
Index: /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs	(revision 2834)
@@ -20,8 +20,6 @@
 #endregion
 
-using System.Drawing;
 using HeuristicLab.Collections;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Operators {
@@ -31,5 +29,5 @@
   [Item("CombinedOperator", "An operator which contains an operator graph.")]
   [Creatable("Test")]
-  public sealed class CombinedOperator : AlgorithmOperator, IOperator {
+  public sealed class CombinedOperator : AlgorithmOperator, IParameterizedItem {
     public new ParameterCollection Parameters {
       get {
@@ -37,5 +35,5 @@
       }
     }
-    IObservableKeyedCollection<string, IParameter> IOperator.Parameters {
+    IObservableKeyedCollection<string, IParameter> IParameterizedItem.Parameters {
       get { return Parameters; }
     }
Index: /trunk/sources/HeuristicLab.Operators/3.3/Comparator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Comparator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Comparator.cs	(revision 2834)
@@ -59,5 +59,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       IItem left = LeftSideParameter.ActualValue;
       IItem right = RightSideParameter.ActualValue;
Index: /trunk/sources/HeuristicLab.Operators/3.3/ConditionalBranch.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/ConditionalBranch.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/ConditionalBranch.cs	(revision 2834)
@@ -58,10 +58,10 @@
     }
 
-    public override IExecutionSequence Apply() {
-      ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
+    public override IOperation Apply() {
+      OperationCollection next = new OperationCollection(base.Apply());
       if (ConditionParameter.ActualValue.Value) {
-        if (TrueBranch != null) next.Insert(0, ExecutionContext.CreateContext(TrueBranch));
+        if (TrueBranch != null) next.Insert(0, ExecutionContext.CreateOperation(TrueBranch));
       } else {
-        if (FalseBranch != null) next.Insert(0, ExecutionContext.CreateContext(FalseBranch));
+        if (FalseBranch != null) next.Insert(0, ExecutionContext.CreateOperation(FalseBranch));
       }
       return next;
Index: /trunk/sources/HeuristicLab.Operators/3.3/DoubleCounter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/DoubleCounter.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/DoubleCounter.cs	(revision 2834)
@@ -50,5 +50,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       if (ValueParameter.ActualValue == null) ValueParameter.ActualValue = new DoubleData();
       ValueParameter.ActualValue.Value += IncrementParameter.ActualValue.Value;
Index: /trunk/sources/HeuristicLab.Operators/3.3/IntCounter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/IntCounter.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/IntCounter.cs	(revision 2834)
@@ -50,5 +50,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       if (ValueParameter.ActualValue == null) ValueParameter.ActualValue = new IntData();
       ValueParameter.ActualValue.Value += IncrementParameter.ActualValue.Value;
Index: /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs	(revision 2834)
@@ -51,5 +51,5 @@
     }
     private ReadOnlyObservableKeyedCollection<string, IParameter> readOnlyParameters;
-    IObservableKeyedCollection<string, IParameter> IOperator.Parameters {
+    IObservableKeyedCollection<string, IParameter> IParameterizedItem.Parameters {
       get {
         if (readOnlyParameters == null) readOnlyParameters = parameters.AsReadOnly();
@@ -59,6 +59,6 @@
 
     [Storable]
-    private ExecutionContext executionContext;
-    protected ExecutionContext ExecutionContext {
+    private IExecutionContext executionContext;
+    protected IExecutionContext ExecutionContext {
       get { return executionContext; }
       private set {
@@ -122,10 +122,10 @@
       clone.canceled = canceled;
       clone.breakpoint = breakpoint;
-      clone.executionContext = (ExecutionContext)cloner.Clone(executionContext);
+      clone.executionContext = (IExecutionContext)cloner.Clone(executionContext);
       return clone;
     }
 
     /// <inheritdoc/>
-    public virtual IExecutionSequence Execute(ExecutionContext context) {
+    public virtual IOperation Execute(IExecutionContext context) {
       try {
         Canceled = false;
@@ -133,5 +133,5 @@
         foreach (IParameter param in Parameters)
           param.ExecutionContext = context;
-        IExecutionSequence next = Apply();
+        IOperation next = Apply();
         OnExecuted();
         return next;
@@ -153,5 +153,5 @@
     /// <param name="scope">The scope where to execute the operator</param>
     /// <returns><c>null</c>.</returns>
-    public abstract IExecutionSequence Apply();
+    public abstract IOperation Apply();
 
     protected virtual void OnExecutionContextChanged() { }
Index: /trunk/sources/HeuristicLab.Operators/3.3/ParallelSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/ParallelSubScopesProcessor.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/ParallelSubScopesProcessor.cs	(revision 2834)
@@ -33,11 +33,11 @@
     }
 
-    public override IExecutionSequence Apply() {
-      ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
+    public override IOperation Apply() {
+      OperationCollection next = new OperationCollection(base.Apply());
       if (Operators.Count > 0) {
-        ExecutionContextCollection inner = new ExecutionContextCollection();
+        OperationCollection inner = new OperationCollection();
         inner.Parallel = true;
         for (int i = 0; (i < ExecutionContext.Scope.SubScopes.Count) && (i < Operators.Count); i++)
-          if (Operators[i] != null) inner.Add(ExecutionContext.CreateContext(Operators[i], ExecutionContext.Scope.SubScopes[i]));
+          if (Operators[i] != null) inner.Add(ExecutionContext.CreateOperation(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 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Placeholder.cs	(revision 2834)
@@ -41,9 +41,9 @@
     }
 
-    public override IExecutionSequence Apply() {
-      ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
+    public override IOperation Apply() {
+      OperationCollection next = new OperationCollection(base.Apply());
       IOperator op = OperatorParameter.ActualValue;
       if (op != null)
-        next.Insert(0, ExecutionContext.CreateContext(op));
+        next.Insert(0, ExecutionContext.CreateOperation(op));
       return next;
     }
Index: /trunk/sources/HeuristicLab.Operators/3.3/ScopeCleaner.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/ScopeCleaner.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/ScopeCleaner.cs	(revision 2834)
@@ -44,5 +44,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       CurrentScope.Variables.Clear();
       CurrentScope.SubScopes.Clear();
Index: /trunk/sources/HeuristicLab.Operators/3.3/SequentialSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SequentialSubScopesProcessor.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SequentialSubScopesProcessor.cs	(revision 2834)
@@ -33,10 +33,10 @@
     }
 
-    public override IExecutionSequence Apply() {
-      ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
+    public override IOperation Apply() {
+      OperationCollection next = new OperationCollection(base.Apply());
       if (Operators.Count > 0) {
-        ExecutionContextCollection inner = new ExecutionContextCollection();
+        OperationCollection inner = new OperationCollection();
         for (int i = 0; (i < ExecutionContext.Scope.SubScopes.Count) && (i < Operators.Count); i++)
-          if (Operators[i] != null) inner.Add(ExecutionContext.CreateContext(Operators[i], ExecutionContext.Scope.SubScopes[i]));
+          if (Operators[i] != null) inner.Add(ExecutionContext.CreateOperation(Operators[i], ExecutionContext.Scope.SubScopes[i]));
         next.Insert(0, inner);
       }
Index: /trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs	(revision 2834)
@@ -45,7 +45,7 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       if (Successor != null)
-        return ExecutionContext.CreateContext(Successor);
+        return ExecutionContext.CreateOperation(Successor);
       else
         return null;
Index: /trunk/sources/HeuristicLab.Operators/3.3/StochasticBranch.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/StochasticBranch.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/StochasticBranch.cs	(revision 2834)
@@ -62,10 +62,10 @@
     }
 
-    public override IExecutionSequence Apply() {
-      ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
+    public override IOperation Apply() {
+      OperationCollection next = new OperationCollection(base.Apply());
       if (RandomParameter.ActualValue.NextDouble() < ProbabilityParameter.ActualValue.Value) {
-        if (FirstBranch != null) next.Insert(0, ExecutionContext.CreateContext(FirstBranch));
+        if (FirstBranch != null) next.Insert(0, ExecutionContext.CreateOperation(FirstBranch));
       } else {
-        if (SecondBranch != null) next.Insert(0, ExecutionContext.CreateContext(SecondBranch));
+        if (SecondBranch != null) next.Insert(0, ExecutionContext.CreateOperation(SecondBranch));
       }
       return next;
Index: /trunk/sources/HeuristicLab.Operators/3.3/SubScopesCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SubScopesCreator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SubScopesCreator.cs	(revision 2834)
@@ -49,5 +49,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       int n = NumberOfSubScopesParameter.ActualValue.Value;
       for (int i = 0; i < n; i++)
Index: /trunk/sources/HeuristicLab.Operators/3.3/SubScopesRemover.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SubScopesRemover.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SubScopesRemover.cs	(revision 2834)
@@ -58,5 +58,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       if (RemoveAllSubScopes)
         CurrentScope.SubScopes.Clear();
Index: /trunk/sources/HeuristicLab.Operators/3.3/SubScopesSorter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SubScopesSorter.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SubScopesSorter.cs	(revision 2834)
@@ -56,5 +56,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       descending = DescendingParameter.ActualValue.Value;
       actualName = LookupParameter<ItemArray<DoubleData>>.TranslateName(ValueParameter.Name, ExecutionContext);
Index: /trunk/sources/HeuristicLab.Operators/3.3/UniformParallelSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/UniformParallelSubScopesProcessor.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/UniformParallelSubScopesProcessor.cs	(revision 2834)
@@ -45,11 +45,11 @@
     }
 
-    public override IExecutionSequence Apply() {
-      ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
+    public override IOperation Apply() {
+      OperationCollection next = new OperationCollection(base.Apply());
       if (Operator != null) {
-        ExecutionContextCollection inner = new ExecutionContextCollection();
+        OperationCollection inner = new OperationCollection();
         inner.Parallel = true;
         for (int i = 0; i < ExecutionContext.Scope.SubScopes.Count; i++)
-          inner.Add(ExecutionContext.CreateContext(Operator, ExecutionContext.Scope.SubScopes[i]));
+          inner.Add(ExecutionContext.CreateOperation(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 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/UniformSequentialSubScopesProcessor.cs	(revision 2834)
@@ -45,10 +45,10 @@
     }
 
-    public override IExecutionSequence Apply() {
-      ExecutionContextCollection next = new ExecutionContextCollection(base.Apply());
+    public override IOperation Apply() {
+      OperationCollection next = new OperationCollection(base.Apply());
       if (Operator != null) {
-        ExecutionContextCollection inner = new ExecutionContextCollection();
+        OperationCollection inner = new OperationCollection();
         for (int i = 0; i < ExecutionContext.Scope.SubScopes.Count; i++)
-          inner.Add(ExecutionContext.CreateContext(Operator, ExecutionContext.Scope.SubScopes[i]));
+          inner.Add(ExecutionContext.CreateOperation(Operator, ExecutionContext.Scope.SubScopes[i]));
         next.Insert(0, inner);
       }
Index: /trunk/sources/HeuristicLab.Operators/3.3/VariableCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/VariableCreator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Operators/3.3/VariableCreator.cs	(revision 2834)
@@ -44,5 +44,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       IVariable var;
       foreach (IParameter param in CollectedValues) {
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 2834)
@@ -0,0 +1,114 @@
+﻿<?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>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Optimization.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Optimization.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.Optimization.Views-3.3.XML</DocumentationFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <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>
+    <None Include="HeuristicLabOptimizationViewsPlugin.cs.frame" />
+    <Compile Include="HeuristicLabOptimizationViewsPlugin.cs" />
+    <Compile Include="ProblemView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProblemView.Designer.cs">
+      <DependentUpon>ProblemView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <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.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
+      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
+      <Name>HeuristicLab.Core.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-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.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+    </ProjectReference>
+    <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\HeuristicLabOptimizationViewsPlugin.cs.frame" "%25ProjectDir%25\HeuristicLabOptimizationViewsPlugin.cs"</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLabOptimizationViewsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLabOptimizationViewsPlugin.cs.frame	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/HeuristicLabOptimizationViewsPlugin.cs.frame	(revision 2834)
@@ -0,0 +1,38 @@
+#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.Optimization.Views {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Optimization.Views plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Optimization.Views", "3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.Optimization.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.2")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.2")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  public class HeuristicLabOptimizationViewsPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/ProblemView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/ProblemView.Designer.cs	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/ProblemView.Designer.cs	(revision 2834)
@@ -0,0 +1,98 @@
+#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.Optimization.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.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.Content = null;
+      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;
+      // 
+      // ProblemView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.parameterCollectionView);
+      this.Name = "ProblemView";
+      this.Size = new System.Drawing.Size(490, 353);
+      this.Controls.SetChildIndex(this.parameterCollectionView, 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
+
+    protected HeuristicLab.Core.Views.ParameterCollectionView parameterCollectionView;
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/ProblemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/ProblemView.cs	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/ProblemView.cs	(revision 2834)
@@ -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.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Optimization.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)
+        parameterCollectionView.Content = null;
+      else
+        parameterCollectionView.Content = ((IProblem)Content).Parameters;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/Properties/AssemblyInfo.frame	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/Properties/AssemblyInfo.frame	(revision 2834)
@@ -0,0 +1,56 @@
+#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.CompilerServices;
+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.Optimization.Views")]
+[assembly: AssemblyDescription("Views of the HeuristicLab optimization 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("53eb21a9-b086-4341-ae53-2ee34cefae3e")]
+
+// 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.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 2834)
@@ -0,0 +1,101 @@
+﻿<?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>{14AB8D24-25BC-400C-A846-4627AA945192}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Optimization</RootNamespace>
+    <AssemblyName>HeuristicLab.Optimization-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.Optimization-3.3.XML</DocumentationFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <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>
+    <None Include="HeuristicLabOptimizationPlugin.cs.frame" />
+    <Compile Include="HeuristicLabOptimizationPlugin.cs" />
+    <Compile Include="IProblem.cs" />
+    <Compile Include="Problem.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <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.Common.Resources\3.2\HeuristicLab.Common.Resources-3.2.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</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">
+      <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\HeuristicLabOptimizationPlugin.cs.frame" "%25ProjectDir%25\HeuristicLabOptimizationPlugin.cs"</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLabOptimizationPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLabOptimizationPlugin.cs.frame	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLabOptimizationPlugin.cs.frame	(revision 2834)
@@ -0,0 +1,36 @@
+#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.Optimization {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Optimization plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Optimization", "3.3.0.$WCREV$")]
+  [PluginFile("HeuristicLab.Optimization-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.2")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  public class HeuristicLabOptimizationPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimization/3.3/IProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/IProblem.cs	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/IProblem.cs	(revision 2834)
@@ -0,0 +1,29 @@
+#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.Core;
+
+namespace HeuristicLab.Optimization {
+  /// <summary>
+  /// Interface to represent a problem.
+  /// </summary>
+  public interface IProblem : INamedItem, IParameterizedItem { }
+}
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Problem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Problem.cs	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Problem.cs	(revision 2834)
@@ -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.Optimization {
+  /// <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 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> IParameterizedItem.Parameters {
+      get {
+        if (readOnlyParameters == null) readOnlyParameters = parameters.AsReadOnly();
+        return readOnlyParameters;
+      }
+    }
+
+    protected Problem() {
+      Name = ItemName;
+      Parameters = new ParameterCollection();
+      readOnlyParameters = null;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      Problem clone = (Problem)base.Clone(cloner);
+      clone.Parameters = (ParameterCollection)cloner.Clone(parameters);
+      return clone;
+    }
+
+    private void Parameters_Changed(object sender, ChangedEventArgs e) {
+      OnChanged(e);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Properties/AssemblyInfo.frame	(revision 2834)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Properties/AssemblyInfo.frame	(revision 2834)
@@ -0,0 +1,56 @@
+#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.CompilerServices;
+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.Optimization")]
+[assembly: AssemblyDescription("HeuristicLab optimization 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("4b3c29b7-1df7-41d2-aebf-b20fab8de1ee")]
+
+// 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.Parameters/3.3/LookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/LookupParameter.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/LookupParameter.cs	(revision 2834)
@@ -74,5 +74,5 @@
       IValueParameter valueParam = this as IValueParameter;
       ILookupParameter lookupParam = this as ILookupParameter;
-      ExecutionContext current = ExecutionContext;
+      IExecutionContext current = ExecutionContext;
 
       name = Name;
@@ -82,10 +82,10 @@
 
         current = current.Parent;
-        while ((current != null) && !current.Operator.Parameters.ContainsKey(name))
+        while ((current != null) && !current.Parameters.ContainsKey(name))
           current = current.Parent;
 
         if (current != null) {
-          valueParam = current.Operator.Parameters[name] as IValueParameter;
-          lookupParam = current.Operator.Parameters[name] as ILookupParameter;
+          valueParam = current.Parameters[name] as IValueParameter;
+          lookupParam = current.Parameters[name] as ILookupParameter;
           if ((valueParam == null) && (lookupParam == null))
             throw new InvalidOperationException(
@@ -108,17 +108,17 @@
       return scope != null ? scope.Variables[actualName] : null;
     }
-    private IValueParameter GetProblemParameter(string name) {
-      IValueParameter param = null;
-      if (ExecutionContext.Problem.Parameters.ContainsKey(name)) {
-        param = ExecutionContext.Problem.Parameters[name] as IValueParameter;
-        if (param == null)
-          throw new InvalidOperationException(
-            string.Format("Parameter look-up chain broken. Parameter \"{0}\" is not an \"{1}\".",
-                          name,
-                          typeof(IValueParameter).GetPrettyName())
-          );
-      }
-      return param;
-    }
+    //private IValueParameter GetProblemParameter(string name) {
+    //  IValueParameter param = null;
+    //  if (ExecutionContext.Problem.Parameters.ContainsKey(name)) {
+    //    param = ExecutionContext.Problem.Parameters[name] as IValueParameter;
+    //    if (param == null)
+    //      throw new InvalidOperationException(
+    //        string.Format("Parameter look-up chain broken. Parameter \"{0}\" is not an \"{1}\".",
+    //                      name,
+    //                      typeof(IValueParameter).GetPrettyName())
+    //      );
+    //  }
+    //  return param;
+    //}
     protected override IItem GetActualValue() {
       string name;
@@ -141,6 +141,6 @@
 
       // try to get value from problem
-      IValueParameter problemParam = GetProblemParameter(name);
-      if (problemParam != null) return problemParam.Value;
+      //IValueParameter problemParam = GetProblemParameter(name);
+      //if (problemParam != null) return problemParam.Value;
 
       return null;
@@ -169,9 +169,9 @@
 
       // try to set value in problem
-      IValueParameter problemParam = GetProblemParameter(name);
-      if (problemParam != null) {
-        problemParam.Value = val;
-        return;
-      }
+      //IValueParameter problemParam = GetProblemParameter(name);
+      //if (problemParam != null) {
+      //  problemParam.Value = val;
+      //  return;
+      //}
 
       // create new variable
@@ -186,12 +186,12 @@
     }
 
-    public static string TranslateName(string name, ExecutionContext context) {
+    public static string TranslateName(string name, IExecutionContext context) {
       string currentName = name;
-      ExecutionContext currentContext = context;
+      IExecutionContext currentContext = context;
       IParameter param;
       ILookupParameter lookupParam;
 
       while (currentContext != null) {
-        currentContext.Operator.Parameters.TryGetValue(currentName, out param);
+        currentContext.Parameters.TryGetValue(currentName, out param);
         if (param != null) {
           lookupParam = param as ILookupParameter;
Index: /trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs	(revision 2834)
@@ -48,6 +48,6 @@
     }
     [Storable]
-    private ExecutionContext executionContext;
-    public ExecutionContext ExecutionContext {
+    private IExecutionContext executionContext;
+    public IExecutionContext ExecutionContext {
       get { return executionContext; }
       set {
@@ -77,5 +77,5 @@
       Parameter clone = (Parameter)base.Clone(cloner);
       clone.dataType = dataType;
-      clone.executionContext = (ExecutionContext)cloner.Clone(executionContext);
+      clone.executionContext = (IExecutionContext)cloner.Clone(executionContext);
       return clone;
     }
Index: /trunk/sources/HeuristicLab.Permutation/3.3/PermutationCrossover.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/PermutationCrossover.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/PermutationCrossover.cs	(revision 2834)
@@ -49,5 +49,5 @@
     }
 
-    public sealed override IExecutionSequence Apply() {
+    public sealed override IOperation Apply() {
       ChildParameter.ActualValue = Cross(RandomParameter.ActualValue, ParentsParameter.ActualValue);
       return base.Apply();
Index: /trunk/sources/HeuristicLab.Permutation/3.3/PermutationManipulator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/PermutationManipulator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/PermutationManipulator.cs	(revision 2834)
@@ -45,5 +45,5 @@
     }
 
-    public sealed override IExecutionSequence Apply() {
+    public sealed override IOperation Apply() {
       Manipulate(RandomParameter.ActualValue, PermutationParameter.ActualValue);
       return base.Apply();
Index: /trunk/sources/HeuristicLab.Permutation/3.3/RandomPermutationCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/RandomPermutationCreator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/RandomPermutationCreator.cs	(revision 2834)
@@ -51,5 +51,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       PermutationParameter.ActualValue = new Permutation(LengthParameter.ActualValue.Value, RandomParameter.ActualValue);
       return base.Apply();
Index: /trunk/sources/HeuristicLab.Random/3.3/RandomCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Random/3.3/RandomCreator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Random/3.3/RandomCreator.cs	(revision 2834)
@@ -59,5 +59,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       if (SetSeedRandomlyParameter.ActualValue == null) SetSeedRandomlyParameter.ActualValue = new BoolData(true);
       bool setSeedRandomly = SetSeedRandomlyParameter.ActualValue.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 2833)
+++ /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/HeuristicLab.Routing.TSP.Views-3.3.csproj	(revision 2834)
@@ -86,4 +86,12 @@
       <Name>HeuristicLab.MainForm-3.2</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj">
+      <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
+      <Name>HeuristicLab.Optimization.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</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 2833)
+++ /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/HeuristicLabRoutingTSPViewsPlugin.cs.frame	(revision 2834)
@@ -33,4 +33,6 @@
   [PluginDependency("HeuristicLab.MainForm", "3.2")]
   [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.2")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]
   [PluginDependency("HeuristicLab.Routing.TSP", "3.3")]
   public class HeuristicLabRoutingTSPViewsPlugin : PluginBase {
Index: /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/TSPView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/TSPView.Designer.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/TSPView.Designer.cs	(revision 2834)
@@ -50,7 +50,7 @@
       this.SuspendLayout();
       // 
-      // valueParameterCollectionView
+      // parameterCollectionView
       // 
-      this.valueParameterCollectionView.Size = new System.Drawing.Size(490, 205);
+      this.parameterCollectionView.Size = new System.Drawing.Size(490, 205);
       // 
       // nameTextBox
@@ -85,5 +85,5 @@
       this.Name = "TSPView";
       this.Controls.SetChildIndex(this.importButton, 0);
-      this.Controls.SetChildIndex(this.valueParameterCollectionView, 0);
+      this.Controls.SetChildIndex(this.parameterCollectionView, 0);
       this.Controls.SetChildIndex(this.nameLabel, 0);
       this.Controls.SetChildIndex(this.descriptionLabel, 0);
Index: /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/TSPView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/TSPView.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Routing.TSP.Views/3.3/TSPView.cs	(revision 2834)
@@ -24,4 +24,5 @@
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
+using HeuristicLab.Optimization.Views;
 
 namespace HeuristicLab.Routing.TSP.Views {
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 2833)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLab.Routing.TSP-3.3.csproj	(revision 2834)
@@ -109,4 +109,8 @@
       <Name>HeuristicLab.Operators-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
       <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLabRoutingTSPPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLabRoutingTSPPlugin.cs.frame	(revision 2833)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLabRoutingTSPPlugin.cs.frame	(revision 2834)
@@ -32,4 +32,5 @@
   [PluginDependency("HeuristicLab.Data", "3.3")]
   [PluginDependency("HeuristicLab.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
   [PluginDependency("HeuristicLab.Parameters", "3.3")]
   [PluginDependency("HeuristicLab.Permutation", "3.3")]
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSP.cs
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSP.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSP.cs	(revision 2834)
@@ -22,4 +22,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
 using HeuristicLab.Permutation;
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPDistanceMatrixPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPDistanceMatrixPathEvaluator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPDistanceMatrixPathEvaluator.cs	(revision 2834)
@@ -51,5 +51,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       DoubleMatrixData distanceMatrix = DistanceMatrixParameter.ActualValue;
       Permutation.Permutation permutation = PermutationParameter.ActualValue;
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPPathEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPPathEvaluator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPPathEvaluator.cs	(revision 2834)
@@ -50,5 +50,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       DoubleMatrixData coordinates = CoordinatesParameter.ActualValue;
       Permutation.Permutation permutation = PermutationParameter.ActualValue;
Index: /trunk/sources/HeuristicLab.SGA/3.3/SGAOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.SGA/3.3/SGAOperator.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.SGA/3.3/SGAOperator.cs	(revision 2834)
@@ -193,5 +193,5 @@
     }
 
-    public override IExecutionSequence Apply() {
+    public override IOperation Apply() {
       int populationSize = CurrentScope.SubScopes.Count;
       // dynamically set the number of parents which are selected for reproduction
Index: /trunk/sources/HeuristicLab.Selection/3.3/Reducer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Selection/3.3/Reducer.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Selection/3.3/Reducer.cs	(revision 2834)
@@ -46,5 +46,5 @@
     }
 
-    public sealed override IExecutionSequence Apply() {
+    public sealed override IOperation Apply() {
       List<IScope> scopes = new List<IScope>(CurrentScope.SubScopes);
       List<IScope> reduced = Reduce(scopes);
Index: /trunk/sources/HeuristicLab.Selection/3.3/Selector.cs
===================================================================
--- /trunk/sources/HeuristicLab.Selection/3.3/Selector.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.Selection/3.3/Selector.cs	(revision 2834)
@@ -59,5 +59,5 @@
     }
 
-    public sealed override IExecutionSequence Apply() {
+    public sealed override IOperation Apply() {
       List<IScope> scopes = new List<IScope>(CurrentScope.SubScopes);
       IScope[] selected = Select(scopes);
Index: /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs
===================================================================
--- /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs	(revision 2833)
+++ /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs	(revision 2834)
@@ -21,6 +21,4 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -57,25 +55,25 @@
     protected override void ProcessNextOperator() {
       currentOperator = null;
-      IExecutionSequence next = ExecutionStack.Pop();
-      ExecutionContextCollection coll = next as ExecutionContextCollection;
+      IOperation next = ExecutionStack.Pop();
+      OperationCollection coll = next as OperationCollection;
       while (coll != null) {
         for (int i = coll.Count - 1; i >= 0; i--)
           ExecutionStack.Push(coll[i]);
         next = ExecutionStack.Count > 0 ? ExecutionStack.Pop() : null;
-        coll = next as ExecutionContextCollection;
+        coll = next as OperationCollection;
       }
-      ExecutionContext context = next as ExecutionContext;
-      if (context != null) {
+      IAtomicOperation operation = next as IAtomicOperation;
+      if (operation != null) {
         try {
-          currentOperator = context.Operator;
-          ExecutionStack.Push(context.Operator.Execute(context));
+          currentOperator = operation.Operator;
+          ExecutionStack.Push(operation.Operator.Execute((IExecutionContext)operation));
           currentOperator = null;
         }
         catch (Exception ex) {
-          ExecutionStack.Push(context);
+          ExecutionStack.Push(operation);
           Stop();
           OnExceptionOccurred(ex);
         }
-        if (context.Operator.Breakpoint)
+        if (operation.Operator.Breakpoint)
           Stop();
       }
