Index: /trunk/sources/HeuristicLab.Algorithms.SGA.Views/3.3/SGAView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.SGA.Views/3.3/SGAView.Designer.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Algorithms.SGA.Views/3.3/SGAView.Designer.cs	(revision 2916)
@@ -45,9 +45,91 @@
     /// </summary>
     private void InitializeComponent() {
+      this.engineTabPage.SuspendLayout();
       this.tabControl.SuspendLayout();
       this.parametersTabPage.SuspendLayout();
       this.problemTabPage.SuspendLayout();
+      this.resultsTabPage.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.SuspendLayout();
+      // 
+      // createUserDefinedAlgorithmButton
+      // 
+      this.createUserDefinedAlgorithmButton.Location = new System.Drawing.Point(90, 552);
+      this.toolTip.SetToolTip(this.createUserDefinedAlgorithmButton, "Create User Defined Algorithm from this Algorithm");
+      // 
+      // engineComboBox
+      // 
+      this.engineComboBox.Size = new System.Drawing.Size(675, 21);
+      // 
+      // engineTabPage
+      // 
+      this.engineTabPage.Size = new System.Drawing.Size(736, 401);
+      // 
+      // engineViewHost
+      // 
+      this.engineViewHost.Size = new System.Drawing.Size(724, 362);
+      // 
+      // tabControl
+      // 
+      this.tabControl.Size = new System.Drawing.Size(744, 427);
+      // 
+      // parametersTabPage
+      // 
+      this.parametersTabPage.Size = new System.Drawing.Size(736, 401);
+      // 
+      // problemTabPage
+      // 
+      this.problemTabPage.Size = new System.Drawing.Size(736, 401);
+      // 
+      // parameterCollectionView
+      // 
+      this.parameterCollectionView.Size = new System.Drawing.Size(724, 389);
+      // 
+      // problemViewHost
+      // 
+      this.problemViewHost.Size = new System.Drawing.Size(724, 359);
+      // 
+      // newProblemButton
+      // 
+      this.toolTip.SetToolTip(this.newProblemButton, "New Problem");
+      // 
+      // saveProblemButton
+      // 
+      this.toolTip.SetToolTip(this.saveProblemButton, "Save Problem");
+      // 
+      // openProblemButton
+      // 
+      this.toolTip.SetToolTip(this.openProblemButton, "Open Problem");
+      // 
+      // startButton
+      // 
+      this.startButton.Location = new System.Drawing.Point(0, 552);
+      this.toolTip.SetToolTip(this.startButton, "Start Algorithm");
+      // 
+      // stopButton
+      // 
+      this.stopButton.Location = new System.Drawing.Point(30, 552);
+      this.toolTip.SetToolTip(this.stopButton, "Stop Algorithm");
+      // 
+      // resetButton
+      // 
+      this.resetButton.Location = new System.Drawing.Point(60, 552);
+      this.toolTip.SetToolTip(this.resetButton, "Reset Algorithm");
+      // 
+      // executionTimeLabel
+      // 
+      this.executionTimeLabel.Location = new System.Drawing.Point(518, 559);
+      // 
+      // executionTimeTextBox
+      // 
+      this.executionTimeTextBox.Location = new System.Drawing.Point(607, 556);
+      // 
+      // resultsTabPage
+      // 
+      this.resultsTabPage.Size = new System.Drawing.Size(736, 401);
+      // 
+      // resultsView
+      // 
+      this.resultsView.Size = new System.Drawing.Size(724, 389);
       // 
       // nameTextBox
@@ -55,4 +137,9 @@
       this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
       this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Size = new System.Drawing.Size(672, 20);
+      // 
+      // descriptionTextBox
+      // 
+      this.descriptionTextBox.Size = new System.Drawing.Size(672, 87);
       // 
       // SGAView
@@ -61,7 +148,11 @@
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.Name = "SGAView";
+      this.Size = new System.Drawing.Size(744, 576);
+      this.engineTabPage.ResumeLayout(false);
+      this.engineTabPage.PerformLayout();
       this.tabControl.ResumeLayout(false);
       this.parametersTabPage.ResumeLayout(false);
       this.problemTabPage.ResumeLayout(false);
+      this.resultsTabPage.ResumeLayout(false);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.ResumeLayout(false);
@@ -73,4 +164,5 @@
 
 
+
   }
 }
Index: /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/HeuristicLab.Algorithms.SGA-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/HeuristicLab.Algorithms.SGA-3.3.csproj	(revision 2915)
+++ /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/HeuristicLab.Algorithms.SGA-3.3.csproj	(revision 2916)
@@ -141,5 +141,4 @@
     <None Include="HeuristicLabAlgorithmsSGAPlugin.cs.frame" />
     <None Include="Properties\AssemblyInfo.frame" />
-    <None Include="SGAEngine.hl" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Index: /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/Tests/HeuristicLab.Algorithms.SGA-3.3.Tests.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/Tests/HeuristicLab.Algorithms.SGA-3.3.Tests.csproj	(revision 2915)
+++ /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/Tests/HeuristicLab.Algorithms.SGA-3.3.Tests.csproj	(revision 2916)
@@ -114,4 +114,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>
@@ -152,5 +156,5 @@
   </ItemGroup>
   <ItemGroup>
-    <None Include="SGAEngine.hl">
+    <None Include="SGA.hl">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>
Index: /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/Tests/UnitTest.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/Tests/UnitTest.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Algorithms.SGA/3.3/Tests/UnitTest.cs	(revision 2916)
@@ -1,6 +1,26 @@
-﻿using System;
-using System.Diagnostics;
+﻿#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.Threading;
-using HeuristicLab.Core;
+using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.Xml;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -58,15 +78,15 @@
 
     [TestMethod]
-    [DeploymentItem(@"SGAEngine.hl")]
+    [DeploymentItem(@"SGA.hl")]
     public void SGAPerformanceTest() {
-      IEngine engine = (IEngine)XmlParser.Deserialize("SGAEngine.hl");
-      engine.Stopped += new EventHandler(engine_Stopped);
-      engine.Prepare();
-      engine.Start();
+      IAlgorithm sga = (IAlgorithm)XmlParser.Deserialize("SGA.hl");
+      sga.Stopped += new EventHandler(sga_Stopped);
+      sga.Prepare();
+      sga.Start();
       trigger.WaitOne();
-      TestContext.WriteLine("Runtime: {0}", engine.ExecutionTime.ToString());
+      TestContext.WriteLine("Runtime: {0}", sga.ExecutionTime.ToString());
     }
 
-    private void engine_Stopped(object sender, EventArgs e) {
+    private void sga_Stopped(object sender, EventArgs e) {
       trigger.Set();
     }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/Auxiliary.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/Auxiliary.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/Auxiliary.cs	(revision 2916)
@@ -55,11 +55,12 @@
     /// <param name="ex">The exception to format.</param>
     /// <returns>The formated message.</returns>
-    private static string BuildErrorMessage(Exception ex) {
+    public static string BuildErrorMessage(Exception ex) {
+      string nl = Environment.NewLine;
       StringBuilder sb = new StringBuilder();
-      sb.Append("Sorry, but something went wrong!\n\n" + ex.Message + "\n\n" + ex.StackTrace);
+      sb.Append("Sorry, but something went wrong!" + nl + ex.Message + nl + ex.StackTrace);
 
       while (ex.InnerException != null) {
         ex = ex.InnerException;
-        sb.Append("\n\n-----\n\n" + ex.Message + "\n\n" + ex.StackTrace);
+        sb.Append(nl + "-----" + nl + ex.Message + nl + ex.StackTrace);
       }
       return sb.ToString();
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.Designer.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.Designer.cs	(revision 2916)
@@ -33,5 +33,4 @@
     protected override void Dispose(bool disposing) {
       if (disposing) {
-        if (typeSelectorDialog != null) typeSelectorDialog.Dispose();
         if (components != null) components.Dispose();
       }
@@ -49,21 +48,8 @@
       this.executionTimeTextBox = new System.Windows.Forms.TextBox();
       this.executionTimeLabel = new System.Windows.Forms.Label();
-      this.scopeView = new HeuristicLab.Core.Views.ScopeView();
-      this.resetButton = new System.Windows.Forms.Button();
       this.stopButton = new System.Windows.Forms.Button();
       this.startButton = new System.Windows.Forms.Button();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.newOperatorGraphButton = new System.Windows.Forms.Button();
-      this.openOperatorGraphButton = new System.Windows.Forms.Button();
-      this.saveOperatorGraphButton = new System.Windows.Forms.Button();
-      this.tabControl = new System.Windows.Forms.TabControl();
-      this.operatorGraphTabPage = new System.Windows.Forms.TabPage();
-      this.operatorGraphViewHost = new HeuristicLab.Core.Views.ViewHost();
-      this.globalScopeTabPage = new System.Windows.Forms.TabPage();
-      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
-      this.tabControl.SuspendLayout();
-      this.operatorGraphTabPage.SuspendLayout();
-      this.globalScopeTabPage.SuspendLayout();
+      this.logTextBox = new System.Windows.Forms.TextBox();
       this.SuspendLayout();
       // 
@@ -86,28 +72,4 @@
       this.executionTimeLabel.TabIndex = 4;
       this.executionTimeLabel.Text = "&Execution Time:";
-      // 
-      // scopeView
-      // 
-      this.scopeView.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.scopeView.Caption = "Scope";
-      this.scopeView.Content = null;
-      this.scopeView.Location = new System.Drawing.Point(6, 6);
-      this.scopeView.Name = "scopeView";
-      this.scopeView.Size = new System.Drawing.Size(782, 572);
-      this.scopeView.TabIndex = 0;
-      // 
-      // resetButton
-      // 
-      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.resetButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Restart;
-      this.resetButton.Location = new System.Drawing.Point(60, 616);
-      this.resetButton.Name = "resetButton";
-      this.resetButton.Size = new System.Drawing.Size(24, 24);
-      this.resetButton.TabIndex = 3;
-      this.toolTip.SetToolTip(this.resetButton, "Reset Engine");
-      this.resetButton.UseVisualStyleBackColor = true;
-      this.resetButton.Click += new System.EventHandler(this.resetButton_Click);
       // 
       // stopButton
@@ -136,101 +98,17 @@
       this.startButton.Click += new System.EventHandler(this.startButton_Click);
       // 
-      // newOperatorGraphButton
+      // logTextBox
       // 
-      this.newOperatorGraphButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.NewDocument;
-      this.newOperatorGraphButton.Location = new System.Drawing.Point(6, 6);
-      this.newOperatorGraphButton.Name = "newOperatorGraphButton";
-      this.newOperatorGraphButton.Size = new System.Drawing.Size(24, 24);
-      this.newOperatorGraphButton.TabIndex = 0;
-      this.toolTip.SetToolTip(this.newOperatorGraphButton, "Create New Operator Graph");
-      this.newOperatorGraphButton.UseVisualStyleBackColor = true;
-      this.newOperatorGraphButton.Click += new System.EventHandler(this.newOperatorGraphButton_Click);
-      // 
-      // openOperatorGraphButton
-      // 
-      this.openOperatorGraphButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Open;
-      this.openOperatorGraphButton.Location = new System.Drawing.Point(36, 6);
-      this.openOperatorGraphButton.Name = "openOperatorGraphButton";
-      this.openOperatorGraphButton.Size = new System.Drawing.Size(24, 24);
-      this.openOperatorGraphButton.TabIndex = 1;
-      this.toolTip.SetToolTip(this.openOperatorGraphButton, "Open Operator Graph");
-      this.openOperatorGraphButton.UseVisualStyleBackColor = true;
-      this.openOperatorGraphButton.Click += new System.EventHandler(this.openOperatorGraphButton_Click);
-      // 
-      // saveOperatorGraphButton
-      // 
-      this.saveOperatorGraphButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Save;
-      this.saveOperatorGraphButton.Location = new System.Drawing.Point(66, 6);
-      this.saveOperatorGraphButton.Name = "saveOperatorGraphButton";
-      this.saveOperatorGraphButton.Size = new System.Drawing.Size(24, 24);
-      this.saveOperatorGraphButton.TabIndex = 2;
-      this.toolTip.SetToolTip(this.saveOperatorGraphButton, "Save Operator Graph");
-      this.saveOperatorGraphButton.UseVisualStyleBackColor = true;
-      this.saveOperatorGraphButton.Click += new System.EventHandler(this.saveOperatorGraphButton_Click);
-      // 
-      // tabControl
-      // 
-      this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+      this.logTextBox.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.tabControl.Controls.Add(this.operatorGraphTabPage);
-      this.tabControl.Controls.Add(this.globalScopeTabPage);
-      this.tabControl.Location = new System.Drawing.Point(0, 0);
-      this.tabControl.Name = "tabControl";
-      this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(802, 610);
-      this.tabControl.TabIndex = 3;
-      // 
-      // operatorGraphTabPage
-      // 
-      this.operatorGraphTabPage.Controls.Add(this.operatorGraphViewHost);
-      this.operatorGraphTabPage.Controls.Add(this.saveOperatorGraphButton);
-      this.operatorGraphTabPage.Controls.Add(this.openOperatorGraphButton);
-      this.operatorGraphTabPage.Controls.Add(this.newOperatorGraphButton);
-      this.operatorGraphTabPage.Location = new System.Drawing.Point(4, 22);
-      this.operatorGraphTabPage.Name = "operatorGraphTabPage";
-      this.operatorGraphTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.operatorGraphTabPage.Size = new System.Drawing.Size(794, 584);
-      this.operatorGraphTabPage.TabIndex = 0;
-      this.operatorGraphTabPage.Text = "Operator Graph";
-      this.operatorGraphTabPage.UseVisualStyleBackColor = true;
-      // 
-      // operatorGraphViewHost
-      // 
-      this.operatorGraphViewHost.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.operatorGraphViewHost.Content = null;
-      this.operatorGraphViewHost.Location = new System.Drawing.Point(6, 36);
-      this.operatorGraphViewHost.Name = "operatorGraphViewHost";
-      this.operatorGraphViewHost.Size = new System.Drawing.Size(782, 542);
-      this.operatorGraphViewHost.TabIndex = 3;
-      this.operatorGraphViewHost.ViewType = null;
-      // 
-      // globalScopeTabPage
-      // 
-      this.globalScopeTabPage.Controls.Add(this.scopeView);
-      this.globalScopeTabPage.Location = new System.Drawing.Point(4, 22);
-      this.globalScopeTabPage.Name = "globalScopeTabPage";
-      this.globalScopeTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.globalScopeTabPage.Size = new System.Drawing.Size(794, 584);
-      this.globalScopeTabPage.TabIndex = 1;
-      this.globalScopeTabPage.Text = "Global Scope";
-      this.globalScopeTabPage.UseVisualStyleBackColor = true;
-      // 
-      // openFileDialog
-      // 
-      this.openFileDialog.DefaultExt = "hl";
-      this.openFileDialog.FileName = "Item";
-      this.openFileDialog.Filter = "HeuristicLab Files|*.hl|All Files|*.*";
-      this.openFileDialog.Title = "Open File";
-      // 
-      // saveFileDialog
-      // 
-      this.saveFileDialog.DefaultExt = "hl";
-      this.saveFileDialog.FileName = "Item";
-      this.saveFileDialog.Filter = "Uncompressed HeuristicLab Files|*.hl|HeuristicLab Files|*.hl|All Files|*.*";
-      this.saveFileDialog.FilterIndex = 2;
-      this.saveFileDialog.Title = "Save File";
+      this.logTextBox.Location = new System.Drawing.Point(0, 0);
+      this.logTextBox.Multiline = true;
+      this.logTextBox.Name = "logTextBox";
+      this.logTextBox.ReadOnly = true;
+      this.logTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+      this.logTextBox.Size = new System.Drawing.Size(802, 610);
+      this.logTextBox.TabIndex = 6;
+      this.logTextBox.WordWrap = false;
       // 
       // EngineView
@@ -238,15 +116,11 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tabControl);
+      this.Controls.Add(this.logTextBox);
       this.Controls.Add(this.executionTimeTextBox);
       this.Controls.Add(this.stopButton);
       this.Controls.Add(this.executionTimeLabel);
-      this.Controls.Add(this.resetButton);
       this.Controls.Add(this.startButton);
       this.Name = "EngineView";
       this.Size = new System.Drawing.Size(802, 640);
-      this.tabControl.ResumeLayout(false);
-      this.operatorGraphTabPage.ResumeLayout(false);
-      this.globalScopeTabPage.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -258,18 +132,8 @@
     protected System.Windows.Forms.TextBox executionTimeTextBox;
     protected System.Windows.Forms.Label executionTimeLabel;
-    protected System.Windows.Forms.Button resetButton;
     protected System.Windows.Forms.Button stopButton;
     protected System.Windows.Forms.Button startButton;
-    protected HeuristicLab.Core.Views.ScopeView scopeView;
     protected System.Windows.Forms.ToolTip toolTip;
-    protected System.Windows.Forms.TabControl tabControl;
-    protected System.Windows.Forms.TabPage globalScopeTabPage;
-    protected System.Windows.Forms.OpenFileDialog openFileDialog;
-    protected System.Windows.Forms.SaveFileDialog saveFileDialog;
-    protected System.Windows.Forms.TabPage operatorGraphTabPage;
-    protected System.Windows.Forms.Button saveOperatorGraphButton;
-    protected System.Windows.Forms.Button openOperatorGraphButton;
-    protected System.Windows.Forms.Button newOperatorGraphButton;
-    protected ViewHost operatorGraphViewHost;
+    protected System.Windows.Forms.TextBox logTextBox;
 
   }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/EngineView.cs	(revision 2916)
@@ -21,8 +21,6 @@
 
 using System;
-using System.Windows.Forms;
 using HeuristicLab.Common;
 using HeuristicLab.MainForm;
-using HeuristicLab.Persistence.Default.Xml;
 
 namespace HeuristicLab.Core.Views {
@@ -33,5 +31,4 @@
   [Content(typeof(IEngine), false)]
   public partial class EngineView : ItemView {
-    protected TypeSelectorDialog typeSelectorDialog;
     private int executionTimeCounter;
 
@@ -61,5 +58,4 @@
     /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
     protected override void DeregisterContentEvents() {
-      Content.OperatorGraphChanged -= new EventHandler(Content_OperatorGraphChanged);
       Content.Prepared -= new EventHandler(Content_Prepared);
       Content.Started -= new EventHandler(Content_Started);
@@ -76,5 +72,4 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.OperatorGraphChanged += new EventHandler(Content_OperatorGraphChanged);
       Content.Prepared += new EventHandler(Content_Prepared);
       Content.Started += new EventHandler(Content_Started);
@@ -91,18 +86,12 @@
       base.OnContentChanged();
       stopButton.Enabled = false;
+      logTextBox.Clear();
       if (Content == null) {
-        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = false;
-        operatorGraphViewHost.Enabled = false;
-        scopeView.Enabled = false;
-        startButton.Enabled = resetButton.Enabled = false;
+        logTextBox.Enabled = false;
+        startButton.Enabled = false;
         executionTimeTextBox.Enabled = false;
       } else {
-        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = true;
-        operatorGraphViewHost.Content = Content.OperatorGraph;
-        operatorGraphViewHost.Enabled = true;
-        scopeView.Content = Content.GlobalScope;
-        scopeView.Enabled = true;
+        logTextBox.Enabled = true;
         startButton.Enabled = !Content.Finished;
-        resetButton.Enabled = true;
         UpdateExecutionTimeTextBox();
         executionTimeTextBox.Enabled = true;
@@ -111,21 +100,13 @@
 
     #region Content Events
-    protected virtual void Content_OperatorGraphChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_OperatorGraphChanged), sender, e);
-      else
-        operatorGraphViewHost.Content = Content.OperatorGraph;
-    }
     protected virtual void Content_Prepared(object sender, EventArgs e) {
       if (InvokeRequired)
         Invoke(new EventHandler(Content_Prepared), sender, e);
       else {
-        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = true;
-        operatorGraphViewHost.Enabled = true;
-        scopeView.Enabled = true;
         startButton.Enabled = !Content.Finished;
         stopButton.Enabled = false;
-        resetButton.Enabled = true;
         UpdateExecutionTimeTextBox();
+        logTextBox.Clear();
+        Log("Engine prepared");
       }
     }
@@ -135,11 +116,8 @@
         Invoke(new EventHandler(Content_Started), sender, e);
       else {
-        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = false;
-        operatorGraphViewHost.Enabled = false;
-        scopeView.Enabled = false;
         startButton.Enabled = false;
         stopButton.Enabled = true;
-        resetButton.Enabled = false;
         UpdateExecutionTimeTextBox();
+        Log("Engine started");
       }
     }
@@ -148,11 +126,9 @@
         Invoke(new EventHandler(Content_Stopped), sender, e);
       else {
-        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = true;
-        operatorGraphViewHost.Enabled = true;
-        scopeView.Enabled = true;
         startButton.Enabled = !Content.Finished;
         stopButton.Enabled = false;
-        resetButton.Enabled = true;
         UpdateExecutionTimeTextBox();
+        if (Content.Finished) Log("Engine finished");
+        else Log("Engine stopped");
       }
     }
@@ -168,42 +144,9 @@
         Invoke(new EventHandler<EventArgs<Exception>>(Content_ExceptionOccurred), sender, e);
       else
-        Auxiliary.ShowErrorMessageBox(e.Value);
+        Log(Auxiliary.BuildErrorMessage(e.Value));
     }
     #endregion
 
     #region Button events
-    protected void newOperatorGraphButton_Click(object sender, EventArgs e) {
-      Content.OperatorGraph = new OperatorGraph();
-    }
-    protected void openOperatorGraphButton_Click(object sender, EventArgs e) {
-      openFileDialog.Title = "Open Operator Graph";
-      if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
-        OperatorGraph operatorGraph = null;
-        try {
-          operatorGraph = XmlParser.Deserialize(openFileDialog.FileName) as OperatorGraph;
-        }
-        catch (Exception ex) {
-          Auxiliary.ShowErrorMessageBox(ex);
-        }
-        if (operatorGraph == null)
-          MessageBox.Show(this, "Selected file does not contain an operator graph.", "Invalid File", MessageBoxButtons.OK, MessageBoxIcon.Error);
-        else
-          Content.OperatorGraph = operatorGraph;
-      }
-    }
-    protected void saveOperatorGraphButton_Click(object sender, EventArgs e) {
-      saveFileDialog.Title = "Save Operator Graph";
-      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          if (saveFileDialog.FilterIndex == 1)
-            XmlGenerator.Serialize(Content.OperatorGraph, saveFileDialog.FileName, 0);
-          else
-            XmlGenerator.Serialize(Content.OperatorGraph, saveFileDialog.FileName, 9);
-        }
-        catch (Exception ex) {
-          Auxiliary.ShowErrorMessageBox(ex);
-        }
-      }
-    }
     protected virtual void startButton_Click(object sender, EventArgs e) {
       Content.Start();
@@ -211,7 +154,4 @@
     protected virtual void stopButton_Click(object sender, EventArgs e) {
       Content.Stop();
-    }
-    protected virtual void resetButton_Click(object sender, EventArgs e) {
-      Content.Prepare();
     }
     #endregion
@@ -224,4 +164,16 @@
         executionTimeTextBox.Text = Content.ExecutionTime.ToString();
     }
+    protected virtual void Log(string message) {
+      if (InvokeRequired)
+        Invoke(new Action<string>(Log), message);
+      else {
+        message = DateTime.Now.ToString() + "\t" + message;
+        string[] newLines = message.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
+        string[] lines = new string[logTextBox.Lines.Length + newLines.Length];
+        logTextBox.Lines.CopyTo(lines, 0);
+        newLines.CopyTo(lines, logTextBox.Lines.Length);
+        logTextBox.Lines = lines;
+      }
+    }
     #endregion
   }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemView.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/NamedItemView.cs	(revision 2916)
@@ -92,5 +92,5 @@
 
     protected virtual void nameTextBox_Validating(object sender, CancelEventArgs e) {
-      if (Content.CanChangeName) {
+      if ((Content != null) && (Content.CanChangeName)) {
         Content.Name = nameTextBox.Text;
 
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs	(revision 2916)
@@ -82,5 +82,5 @@
       this.viewsLabel.Size = new System.Drawing.Size(16, 16);
       this.viewsLabel.TabIndex = 0;
-      this.toolTip.SetToolTip(this.viewsLabel, "Double-click to open a new window of the current view.\r\nRight-click to change current view.");
+      this.toolTip.SetToolTip(this.viewsLabel, "Double-click to open a new window of the current view." + System.Environment.NewLine + "Right-click to change current view.");
       this.viewsLabel.DoubleClick += new System.EventHandler(this.viewsLabel_DoubleClick);
       // 
Index: /trunk/sources/HeuristicLab.Core/3.3/Engine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Engine.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Core/3.3/Engine.cs	(revision 2916)
@@ -39,35 +39,4 @@
     }
 
-    private OperatorGraph operatorGraph;
-    /// <summary>
-    /// Gets or sets the current operator graph.
-    /// </summary>
-    [Storable]
-    public OperatorGraph OperatorGraph {
-      get { return operatorGraph; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if (value != operatorGraph) {
-          if (operatorGraph != null) operatorGraph.InitialOperatorChanged -= new EventHandler(operatorGraph_InitialOperatorChanged);
-          operatorGraph = value;
-          if (operatorGraph != null) operatorGraph.InitialOperatorChanged += new EventHandler(operatorGraph_InitialOperatorChanged);
-          OnOperatorGraphChanged();
-          Prepare();
-        }
-      }
-    }
-
-    /// <summary>
-    /// Field of the current instance that represent the global scope.
-    /// </summary>
-    [Storable]
-    private IScope globalScope;
-    /// <summary>
-    /// Gets the current global scope.
-    /// </summary>
-    public IScope GlobalScope {
-      get { return globalScope; }
-    }
-
     [Storable]
     private TimeSpan executionTime;
@@ -134,7 +103,5 @@
     /// </summary>
     protected Engine() {
-      globalScope = new Scope("Global");
       executionStack = new Stack<IOperation>();
-      OperatorGraph = new OperatorGraph();
     }
 
@@ -148,6 +115,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       Engine clone = (Engine)base.Clone(cloner);
-      clone.OperatorGraph = (OperatorGraph)cloner.Clone(operatorGraph);
-      clone.globalScope = (Scope)cloner.Clone(globalScope);
       clone.executionTime = executionTime;
       IOperation[] contexts = executionStack.ToArray();
@@ -162,5 +127,4 @@
       Canceled = false;
       running = false;
-      globalScope.Clear();
       ExecutionTime = new TimeSpan();
       executionStack.Clear();
@@ -168,13 +132,4 @@
         executionStack.Push(initialOperation);
       OnPrepared();
-    }
-    /// <inheritdoc/>
-    /// <remarks>Sets <c>myCanceled</c> and <c>myRunning</c> to <c>false</c>. The global scope is cleared,
-    /// the execution time is reset, the execution stack is cleared and a new <see cref="AtomicOperation"/>
-    /// with the initial operator is added. <br/>
-    /// Calls <see cref="OnPrepared"/>.</remarks>
-    public void Prepare() {
-      if (OperatorGraph.InitialOperator != null)
-        Prepare(new ExecutionContext(null, OperatorGraph.InitialOperator, GlobalScope));
     }
     /// <inheritdoc/>
@@ -229,19 +184,4 @@
     protected abstract void ProcessNextOperator();
 
-    private void operatorGraph_InitialOperatorChanged(object sender, EventArgs e) {
-      Prepare();
-    }
-
-    /// <summary>
-    /// Occurs when the operator graph was changed.
-    /// </summary>
-    public event EventHandler OperatorGraphChanged;
-    /// <summary>
-    /// Fires a new <c>OperatorGraphChanged</c> event.
-    /// </summary>
-    protected virtual void OnOperatorGraphChanged() {
-      if (OperatorGraphChanged != null)
-        OperatorGraphChanged(this, EventArgs.Empty);
-    }
     /// <summary>
     /// Occurs when the execution time changed.
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEngine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEngine.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEngine.cs	(revision 2916)
@@ -31,13 +31,4 @@
   public interface IEngine : IItem {
     /// <summary>
-    /// Gets the operator graph of the current instance.
-    /// </summary>
-    OperatorGraph OperatorGraph { get; set; }
-    /// <summary>
-    /// Gets the global scope of the current instance.
-    /// </summary>
-    IScope GlobalScope { get; }
-
-    /// <summary>
     /// Gets the execution time of the current instance.
     /// </summary>
@@ -53,8 +44,4 @@
     bool Finished { get; }
 
-    /// <summary>
-    /// Prepares the engine for a new run.
-    /// </summary>
-    void Prepare();
     /// <summary>
     /// Prepares the engine with a given initial operation.
@@ -74,8 +61,4 @@
     void Stop();
 
-    /// <summary>
-    /// Occurs when the operator graph was changed.
-    /// </summary>
-    event EventHandler OperatorGraphChanged;
     /// <summary>
     /// Occurs when the execution time was changed.
Index: /trunk/sources/HeuristicLab.MainForm.WindowsForms/3.2/ContentView.cs
===================================================================
--- /trunk/sources/HeuristicLab.MainForm.WindowsForms/3.2/ContentView.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.MainForm.WindowsForms/3.2/ContentView.cs	(revision 2916)
@@ -53,6 +53,6 @@
             if (this.content != null) this.DeregisterContentEvents();
             this.content = value;
+            if (this.content != null) this.RegisterContentEvents();
             this.OnContentChanged();
-            if (this.content != null) this.RegisterContentEvents();
           }
         }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.Designer.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.Designer.cs	(revision 2916)
@@ -104,5 +104,5 @@
       this.parametersTabPage.Name = "parametersTabPage";
       this.parametersTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.parametersTabPage.Size = new System.Drawing.Size(482, 178);
+      this.parametersTabPage.Size = new System.Drawing.Size(671, 307);
       this.parametersTabPage.TabIndex = 0;
       this.parametersTabPage.Text = "Parameters";
@@ -118,5 +118,5 @@
       this.parameterCollectionView.Location = new System.Drawing.Point(6, 6);
       this.parameterCollectionView.Name = "parameterCollectionView";
-      this.parameterCollectionView.Size = new System.Drawing.Size(470, 166);
+      this.parameterCollectionView.Size = new System.Drawing.Size(659, 295);
       this.parameterCollectionView.TabIndex = 0;
       // 
@@ -186,5 +186,5 @@
       this.resultsTabPage.Name = "resultsTabPage";
       this.resultsTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.resultsTabPage.Size = new System.Drawing.Size(482, 178);
+      this.resultsTabPage.Size = new System.Drawing.Size(671, 307);
       this.resultsTabPage.TabIndex = 2;
       this.resultsTabPage.Text = "Results";
@@ -200,5 +200,5 @@
       this.resultsView.Location = new System.Drawing.Point(6, 6);
       this.resultsView.Name = "resultsView";
-      this.resultsView.Size = new System.Drawing.Size(470, 166);
+      this.resultsView.Size = new System.Drawing.Size(659, 295);
       this.resultsView.TabIndex = 0;
       // 
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.cs	(revision 2916)
@@ -21,4 +21,5 @@
 
 using System;
+using System.Collections.Generic;
 using System.Windows.Forms;
 using HeuristicLab.Common;
@@ -55,4 +56,18 @@
       : this() {
       Content = content;
+    }
+
+    protected override void OnInitialized(EventArgs e) {
+      // Set order of tab pages according to z order.
+      // NOTE: This is required due to a bug in the VS designer.
+      List<Control> tabPages = new List<Control>();
+      for (int i = 0; i < tabControl.Controls.Count; i++) {
+        tabPages.Add(tabControl.Controls[i]);
+      }
+      tabControl.Controls.Clear();
+      foreach (Control control in tabPages)
+        tabControl.Controls.Add(control);
+
+      base.OnInitialized(e);
     }
 
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.Designer.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.Designer.cs	(revision 2916)
@@ -33,5 +33,4 @@
     protected override void Dispose(bool disposing) {
       if (disposing) {
-        if (engineTypeSelectorDialog != null) engineTypeSelectorDialog.Dispose();
         if (components != null) components.Dispose();
       }
@@ -47,59 +46,85 @@
     private void InitializeComponent() {
       this.engineLabel = new System.Windows.Forms.Label();
-      this.engineTextBox = new System.Windows.Forms.TextBox();
-      this.setEngineButton = new System.Windows.Forms.Button();
       this.createUserDefinedAlgorithmButton = new System.Windows.Forms.Button();
+      this.engineComboBox = new System.Windows.Forms.ComboBox();
+      this.engineTabPage = new System.Windows.Forms.TabPage();
+      this.engineViewHost = new HeuristicLab.Core.Views.ViewHost();
       this.tabControl.SuspendLayout();
       this.parametersTabPage.SuspendLayout();
       this.problemTabPage.SuspendLayout();
+      this.resultsTabPage.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.engineTabPage.SuspendLayout();
       this.SuspendLayout();
       // 
       // tabControl
       // 
-      this.tabControl.Location = new System.Drawing.Point(0, 149);
-      this.tabControl.Size = new System.Drawing.Size(656, 278);
-      this.tabControl.TabIndex = 7;
+      this.tabControl.Controls.Add(this.engineTabPage);
+      this.tabControl.Size = new System.Drawing.Size(713, 400);
+      this.tabControl.Controls.SetChildIndex(this.resultsTabPage, 0);
+      this.tabControl.Controls.SetChildIndex(this.engineTabPage, 0);
+      this.tabControl.Controls.SetChildIndex(this.problemTabPage, 0);
+      this.tabControl.Controls.SetChildIndex(this.parametersTabPage, 0);
       // 
       // parametersTabPage
       // 
-      this.parametersTabPage.Size = new System.Drawing.Size(648, 252);
+      this.parametersTabPage.Size = new System.Drawing.Size(705, 374);
       // 
       // problemTabPage
       // 
-      this.problemTabPage.Size = new System.Drawing.Size(648, 252);
+      this.problemTabPage.Size = new System.Drawing.Size(705, 374);
       // 
       // parameterCollectionView
       // 
-      this.parameterCollectionView.Size = new System.Drawing.Size(636, 240);
+      this.parameterCollectionView.Size = new System.Drawing.Size(693, 362);
       // 
       // problemViewHost
       // 
-      this.problemViewHost.Size = new System.Drawing.Size(470, 106);
+      this.problemViewHost.Size = new System.Drawing.Size(693, 332);
+      // 
+      // newProblemButton
+      // 
+      this.toolTip.SetToolTip(this.newProblemButton, "New Problem");
+      // 
+      // saveProblemButton
+      // 
+      this.toolTip.SetToolTip(this.saveProblemButton, "Save Problem");
+      // 
+      // openProblemButton
+      // 
+      this.toolTip.SetToolTip(this.openProblemButton, "Open Problem");
       // 
       // startButton
       // 
-      this.startButton.Location = new System.Drawing.Point(0, 433);
-      this.startButton.TabIndex = 8;
+      this.startButton.Location = new System.Drawing.Point(0, 525);
+      this.toolTip.SetToolTip(this.startButton, "Start Algorithm");
       // 
       // stopButton
       // 
-      this.stopButton.Location = new System.Drawing.Point(30, 433);
-      this.stopButton.TabIndex = 9;
+      this.stopButton.Location = new System.Drawing.Point(30, 525);
+      this.toolTip.SetToolTip(this.stopButton, "Stop Algorithm");
       // 
       // resetButton
       // 
-      this.resetButton.Location = new System.Drawing.Point(60, 433);
-      this.resetButton.TabIndex = 10;
+      this.resetButton.Location = new System.Drawing.Point(60, 525);
+      this.toolTip.SetToolTip(this.resetButton, "Reset Algorithm");
       // 
       // executionTimeLabel
       // 
-      this.executionTimeLabel.Location = new System.Drawing.Point(430, 440);
-      this.executionTimeLabel.TabIndex = 12;
+      this.executionTimeLabel.Location = new System.Drawing.Point(487, 532);
+      this.executionTimeLabel.TabIndex = 9;
       // 
       // executionTimeTextBox
       // 
-      this.executionTimeTextBox.Location = new System.Drawing.Point(519, 437);
-      this.executionTimeTextBox.TabIndex = 13;
+      this.executionTimeTextBox.Location = new System.Drawing.Point(576, 529);
+      this.executionTimeTextBox.TabIndex = 10;
+      // 
+      // resultsTabPage
+      // 
+      this.resultsTabPage.Size = new System.Drawing.Size(705, 374);
+      // 
+      // resultsView
+      // 
+      this.resultsView.Size = new System.Drawing.Size(693, 362);
       // 
       // nameTextBox
@@ -107,49 +132,26 @@
       this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
       this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Size = new System.Drawing.Size(584, 20);
+      this.nameTextBox.Size = new System.Drawing.Size(641, 20);
       // 
       // descriptionTextBox
       // 
-      this.descriptionTextBox.Size = new System.Drawing.Size(584, 87);
+      this.descriptionTextBox.Size = new System.Drawing.Size(641, 87);
       // 
       // engineLabel
       // 
       this.engineLabel.AutoSize = true;
-      this.engineLabel.Location = new System.Drawing.Point(3, 124);
+      this.engineLabel.Location = new System.Drawing.Point(6, 9);
       this.engineLabel.Name = "engineLabel";
       this.engineLabel.Size = new System.Drawing.Size(43, 13);
-      this.engineLabel.TabIndex = 4;
+      this.engineLabel.TabIndex = 0;
       this.engineLabel.Text = "&Engine:";
       // 
-      // engineTextBox
-      // 
-      this.engineTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.engineTextBox.Location = new System.Drawing.Point(72, 121);
-      this.engineTextBox.Name = "engineTextBox";
-      this.engineTextBox.ReadOnly = true;
-      this.engineTextBox.Size = new System.Drawing.Size(554, 20);
-      this.engineTextBox.TabIndex = 6;
-      this.engineTextBox.DoubleClick += new System.EventHandler(this.engineTextBox_DoubleClick);
-      // 
-      // setEngineButton
-      // 
-      this.setEngineButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.setEngineButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Add;
-      this.setEngineButton.Location = new System.Drawing.Point(632, 119);
-      this.setEngineButton.Name = "setEngineButton";
-      this.setEngineButton.Size = new System.Drawing.Size(24, 24);
-      this.setEngineButton.TabIndex = 5;
-      this.toolTip.SetToolTip(this.setEngineButton, "Set Engine");
-      this.setEngineButton.UseVisualStyleBackColor = true;
-      this.setEngineButton.Click += new System.EventHandler(this.setEngineButton_Click);
-      // 
       // createUserDefinedAlgorithmButton
       // 
       this.createUserDefinedAlgorithmButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.createUserDefinedAlgorithmButton.Location = new System.Drawing.Point(90, 433);
+      this.createUserDefinedAlgorithmButton.Location = new System.Drawing.Point(90, 525);
       this.createUserDefinedAlgorithmButton.Name = "createUserDefinedAlgorithmButton";
       this.createUserDefinedAlgorithmButton.Size = new System.Drawing.Size(254, 24);
-      this.createUserDefinedAlgorithmButton.TabIndex = 11;
+      this.createUserDefinedAlgorithmButton.TabIndex = 8;
       this.createUserDefinedAlgorithmButton.Text = "&Create User Defined Algorithm";
       this.toolTip.SetToolTip(this.createUserDefinedAlgorithmButton, "Create User Defined Algorithm from this Algorithm");
@@ -157,18 +159,49 @@
       this.createUserDefinedAlgorithmButton.Click += new System.EventHandler(this.createUserDefinedAlgorithmButton_Click);
       // 
+      // engineComboBox
+      // 
+      this.engineComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.engineComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.engineComboBox.FormattingEnabled = true;
+      this.engineComboBox.Location = new System.Drawing.Point(55, 6);
+      this.engineComboBox.Name = "engineComboBox";
+      this.engineComboBox.Size = new System.Drawing.Size(644, 21);
+      this.engineComboBox.TabIndex = 1;
+      this.engineComboBox.SelectedIndexChanged += new System.EventHandler(this.engineComboBox_SelectedIndexChanged);
+      // 
+      // engineTabPage
+      // 
+      this.engineTabPage.Controls.Add(this.engineViewHost);
+      this.engineTabPage.Controls.Add(this.engineComboBox);
+      this.engineTabPage.Controls.Add(this.engineLabel);
+      this.engineTabPage.Location = new System.Drawing.Point(4, 22);
+      this.engineTabPage.Name = "engineTabPage";
+      this.engineTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.engineTabPage.Size = new System.Drawing.Size(705, 374);
+      this.engineTabPage.TabIndex = 3;
+      this.engineTabPage.Text = "Engine";
+      this.engineTabPage.UseVisualStyleBackColor = true;
+      // 
+      // engineViewHost
+      // 
+      this.engineViewHost.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.engineViewHost.Content = null;
+      this.engineViewHost.Location = new System.Drawing.Point(6, 33);
+      this.engineViewHost.Name = "engineViewHost";
+      this.engineViewHost.Size = new System.Drawing.Size(693, 335);
+      this.engineViewHost.TabIndex = 2;
+      this.engineViewHost.ViewType = null;
+      // 
       // EngineAlgorithmView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.setEngineButton);
-      this.Controls.Add(this.engineTextBox);
-      this.Controls.Add(this.engineLabel);
       this.Controls.Add(this.createUserDefinedAlgorithmButton);
       this.Name = "EngineAlgorithmView";
-      this.Size = new System.Drawing.Size(656, 457);
+      this.Size = new System.Drawing.Size(713, 549);
       this.Controls.SetChildIndex(this.createUserDefinedAlgorithmButton, 0);
-      this.Controls.SetChildIndex(this.engineLabel, 0);
-      this.Controls.SetChildIndex(this.engineTextBox, 0);
-      this.Controls.SetChildIndex(this.setEngineButton, 0);
       this.Controls.SetChildIndex(this.resetButton, 0);
       this.Controls.SetChildIndex(this.executionTimeLabel, 0);
@@ -184,5 +217,8 @@
       this.parametersTabPage.ResumeLayout(false);
       this.problemTabPage.ResumeLayout(false);
+      this.resultsTabPage.ResumeLayout(false);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.engineTabPage.ResumeLayout(false);
+      this.engineTabPage.PerformLayout();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -193,8 +229,8 @@
 
     protected System.Windows.Forms.Label engineLabel;
-    protected System.Windows.Forms.TextBox engineTextBox;
-    protected System.Windows.Forms.Button setEngineButton;
     protected System.Windows.Forms.Button createUserDefinedAlgorithmButton;
-
+    protected System.Windows.Forms.ComboBox engineComboBox;
+    protected System.Windows.Forms.TabPage engineTabPage;
+    protected HeuristicLab.Core.Views.ViewHost engineViewHost;
 
   }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.cs	(revision 2916)
@@ -21,8 +21,10 @@
 
 using System;
-using System.Windows.Forms;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
+using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Optimization.Views {
@@ -32,5 +34,5 @@
   [Content(typeof(EngineAlgorithm), true)]
   public partial class EngineAlgorithmView : AlgorithmView {
-    private TypeSelectorDialog engineTypeSelectorDialog;
+    private List<Type> engineTypes;
 
     public new EngineAlgorithm Content {
@@ -45,4 +47,5 @@
       InitializeComponent();
     }
+
     /// <summary>
     /// Intializes a new instance of <see cref="ItemBaseView"/> with the given <paramref name="item"/>.
@@ -65,12 +68,33 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
+
+      if (engineTypes == null) {
+        engineTypes = ApplicationManager.Manager.GetTypes(typeof(IEngine)).
+                      OrderBy(x => {
+                        string name = ItemAttribute.GetName(x);
+                        if (name != null) return name;
+                        else return x.GetPrettyName();
+                      }).ToList();
+        foreach (Type t in engineTypes) {
+          string name = ItemAttribute.GetName(t);
+          if (name == null) name = t.GetPrettyName();
+          engineComboBox.Items.Add(name);
+        }
+        engineTypes.Insert(0, null);
+        engineComboBox.Items.Insert(0, "-");
+      }
+
       if (Content == null) {
-        engineTextBox.Text = "-";
-        engineTextBox.Enabled = false;
-        setEngineButton.Enabled = false;
+        engineComboBox.Enabled = false;
+        engineViewHost.Content = null;
+        engineViewHost.Enabled = false;
       } else {
-        engineTextBox.Text = Content.Engine == null ? "-" : Content.Engine.ToString();
-        engineTextBox.Enabled = true;
-        setEngineButton.Enabled = true;
+        engineComboBox.Enabled = true;
+        if (Content.Engine == null)
+          engineComboBox.SelectedIndex = engineTypes.IndexOf(null);
+        else
+          engineComboBox.SelectedIndex = engineTypes.IndexOf(Content.Engine.GetType());
+        engineViewHost.Enabled = true;
+        engineViewHost.Content = Content.Engine;
       }
     }
@@ -79,22 +103,21 @@
       if (InvokeRequired)
         Invoke(new EventHandler(Content_EngineChanged), sender, e);
-      else
-        engineTextBox.Text = Content.Engine == null ? "-" : Content.Engine.ToString();
-    }
-
-    protected void setEngineButton_Click(object sender, System.EventArgs e) {
-      if (engineTypeSelectorDialog == null) {
-        engineTypeSelectorDialog = new TypeSelectorDialog();
-        engineTypeSelectorDialog.Caption = "Select Engine";
-        engineTypeSelectorDialog.TypeSelector.Configure(typeof(IEngine), false, false);
-      }
-      if (engineTypeSelectorDialog.ShowDialog(this) == DialogResult.OK) {
-        Content.Engine = (IEngine)engineTypeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
+      else {
+        if (Content.Engine == null)
+          engineComboBox.SelectedIndex = engineTypes.IndexOf(null);
+        else
+          engineComboBox.SelectedIndex = engineTypes.IndexOf(Content.Engine.GetType());
+        engineViewHost.Content = Content.Engine;
       }
     }
 
-    protected void engineTextBox_DoubleClick(object sender, System.EventArgs e) {
-      if (Content.Engine != null)
-        MainFormManager.CreateDefaultView(Content.Engine).Show();
+    protected void engineComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      if (Content != null) {
+        Type t = engineTypes[engineComboBox.SelectedIndex];
+        if (t == null)
+          Content.Engine = null;
+        else
+          Content.Engine = (IEngine)Activator.CreateInstance(t);
+      }
     }
 
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/UserDefinedAlgorithmView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/UserDefinedAlgorithmView.Designer.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/UserDefinedAlgorithmView.Designer.cs	(revision 2916)
@@ -52,4 +52,5 @@
       this.globalScopeTabPage = new System.Windows.Forms.TabPage();
       this.globalScopeView = new HeuristicLab.Core.Views.ScopeView();
+      this.engineTabPage.SuspendLayout();
       this.tabControl.SuspendLayout();
       this.parametersTabPage.SuspendLayout();
@@ -61,8 +62,4 @@
       this.SuspendLayout();
       // 
-      // setEngineButton
-      // 
-      this.toolTip.SetToolTip(this.setEngineButton, "Set Engine");
-      // 
       // createUserDefinedAlgorithmButton
       // 
@@ -73,7 +70,8 @@
       this.tabControl.Controls.Add(this.operatorGraphTabPage);
       this.tabControl.Controls.Add(this.globalScopeTabPage);
-      this.tabControl.Controls.SetChildIndex(this.resultsTabPage, 0);
       this.tabControl.Controls.SetChildIndex(this.globalScopeTabPage, 0);
       this.tabControl.Controls.SetChildIndex(this.operatorGraphTabPage, 0);
+      this.tabControl.Controls.SetChildIndex(this.resultsTabPage, 0);
+      this.tabControl.Controls.SetChildIndex(this.engineTabPage, 0);
       this.tabControl.Controls.SetChildIndex(this.problemTabPage, 0);
       this.tabControl.Controls.SetChildIndex(this.parametersTabPage, 0);
@@ -102,12 +100,4 @@
       // 
       this.toolTip.SetToolTip(this.resetButton, "Reset Algorithm");
-      // 
-      // resultsTabPage
-      // 
-      this.resultsTabPage.Size = new System.Drawing.Size(648, 252);
-      // 
-      // resultsView
-      // 
-      this.resultsView.Size = new System.Drawing.Size(636, 240);
       // 
       // nameTextBox
@@ -124,5 +114,5 @@
       this.operatorGraphTabPage.Location = new System.Drawing.Point(4, 22);
       this.operatorGraphTabPage.Name = "operatorGraphTabPage";
-      this.operatorGraphTabPage.Size = new System.Drawing.Size(648, 252);
+      this.operatorGraphTabPage.Size = new System.Drawing.Size(705, 374);
       this.operatorGraphTabPage.TabIndex = 2;
       this.operatorGraphTabPage.Text = "Operator Graph";
@@ -170,5 +160,5 @@
       this.operatorGraphViewHost.Location = new System.Drawing.Point(3, 33);
       this.operatorGraphViewHost.Name = "operatorGraphViewHost";
-      this.operatorGraphViewHost.Size = new System.Drawing.Size(642, 216);
+      this.operatorGraphViewHost.Size = new System.Drawing.Size(699, 338);
       this.operatorGraphViewHost.TabIndex = 0;
       this.operatorGraphViewHost.ViewType = null;
@@ -179,5 +169,5 @@
       this.globalScopeTabPage.Location = new System.Drawing.Point(4, 22);
       this.globalScopeTabPage.Name = "globalScopeTabPage";
-      this.globalScopeTabPage.Size = new System.Drawing.Size(648, 252);
+      this.globalScopeTabPage.Size = new System.Drawing.Size(705, 374);
       this.globalScopeTabPage.TabIndex = 3;
       this.globalScopeTabPage.Text = "Global Scope";
@@ -193,5 +183,5 @@
       this.globalScopeView.Location = new System.Drawing.Point(3, 3);
       this.globalScopeView.Name = "globalScopeView";
-      this.globalScopeView.Size = new System.Drawing.Size(642, 246);
+      this.globalScopeView.Size = new System.Drawing.Size(699, 368);
       this.globalScopeView.TabIndex = 0;
       // 
@@ -201,4 +191,6 @@
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.Name = "UserDefinedAlgorithmView";
+      this.engineTabPage.ResumeLayout(false);
+      this.engineTabPage.PerformLayout();
       this.tabControl.ResumeLayout(false);
       this.parametersTabPage.ResumeLayout(false);
Index: /trunk/sources/HeuristicLab.Optimization/3.3/EngineAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/EngineAlgorithm.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/EngineAlgorithm.cs	(revision 2916)
@@ -21,8 +21,10 @@
 
 using System;
+using System.Linq;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Optimization {
@@ -97,4 +99,5 @@
       globalScope.Variables.Add(new Variable("Results", new VariableCollection()));
       OperatorGraph = new OperatorGraph();
+      InitializeEngine();
     }
     protected EngineAlgorithm(string name)
@@ -103,4 +106,5 @@
       globalScope.Variables.Add(new Variable("Results", new VariableCollection()));
       OperatorGraph = new OperatorGraph();
+      InitializeEngine();
     }
     protected EngineAlgorithm(string name, ParameterCollection parameters)
@@ -109,4 +113,5 @@
       globalScope.Variables.Add(new Variable("Results", new VariableCollection()));
       OperatorGraph = new OperatorGraph();
+      InitializeEngine();
     }
     protected EngineAlgorithm(string name, string description)
@@ -115,4 +120,5 @@
       globalScope.Variables.Add(new Variable("Results", new VariableCollection()));
       OperatorGraph = new OperatorGraph();
+      InitializeEngine();
     }
     protected EngineAlgorithm(string name, string description, ParameterCollection parameters)
@@ -121,4 +127,12 @@
       globalScope.Variables.Add(new Variable("Results", new VariableCollection()));
       OperatorGraph = new OperatorGraph();
+      InitializeEngine();
+    }
+
+    private void InitializeEngine() {
+      var types = ApplicationManager.Manager.GetTypes(typeof(IEngine));
+      Type t = types.FirstOrDefault(x => x.Name.Equals("SequentialEngine"));
+      if (t == null) t = types.FirstOrDefault();
+      if (t != null) Engine = (IEngine)Activator.CreateInstance(t);
     }
 
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Main.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Main.cs	(revision 2915)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Main.cs	(revision 2916)
@@ -99,10 +99,11 @@
 
     private static string BuildErrorMessage(Exception ex) {
+      string nl = Environment.NewLine;
       StringBuilder sb = new StringBuilder();
-      sb.Append("Sorry, but something went wrong!\n\n" + ex.Message + "\n\n" + ex.StackTrace);
+      sb.Append("Sorry, but something went wrong!" +  nl + ex.Message + nl + ex.StackTrace);
 
       while (ex.InnerException != null) {
         ex = ex.InnerException;
-        sb.Append("\n\n-----\n\n" + ex.Message + "\n\n" + ex.StackTrace);
+        sb.Append(nl + "-----" + nl + ex.Message + nl + ex.StackTrace);
       }
       return sb.ToString();
