Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs	(revision 5644)
@@ -41,5 +41,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public sealed class GeneticAlgorithm : HeuristicOptimizationAlgorithm, IStorableContent {
+  public sealed class GeneticAlgorithm : HeuristicOptimizationEngineAlgorithm, IStorableContent {
     public string Filename { get; set; }
 
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs	(revision 5644)
@@ -41,5 +41,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public sealed class IslandGeneticAlgorithm : HeuristicOptimizationAlgorithm, IStorableContent {
+  public sealed class IslandGeneticAlgorithm : HeuristicOptimizationEngineAlgorithm, IStorableContent {
     public string Filename { get; set; }
 
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearch.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearch.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearch.cs	(revision 5644)
@@ -38,5 +38,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public sealed class LocalSearch : HeuristicOptimizationAlgorithm, IStorableContent {
+  public sealed class LocalSearch : HeuristicOptimizationEngineAlgorithm, IStorableContent {
     public string Filename { get; set; }
 
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.NSGA2/3.3/NSGA2.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.NSGA2/3.3/NSGA2.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.NSGA2/3.3/NSGA2.cs	(revision 5644)
@@ -41,5 +41,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public class NSGA2 : HeuristicOptimizationAlgorithm, IStorableContent {
+  public class NSGA2 : HeuristicOptimizationEngineAlgorithm, IStorableContent {
     public string Filename { get; set; }
 
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithm.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithm.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithm.cs	(revision 5644)
@@ -41,5 +41,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public sealed class IslandOffspringSelectionGeneticAlgorithm : HeuristicOptimizationAlgorithm, IStorableContent {
+  public sealed class IslandOffspringSelectionGeneticAlgorithm : HeuristicOptimizationEngineAlgorithm, IStorableContent {
     public string Filename { get; set; }
 
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs	(revision 5644)
@@ -41,5 +41,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public sealed class OffspringSelectionGeneticAlgorithm : HeuristicOptimizationAlgorithm, IStorableContent {
+  public sealed class OffspringSelectionGeneticAlgorithm : HeuristicOptimizationEngineAlgorithm, IStorableContent {
     public string Filename { get; set; }
 
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs	(revision 5644)
@@ -41,5 +41,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public sealed class SASEGASA : HeuristicOptimizationAlgorithm, IStorableContent {
+  public sealed class SASEGASA : HeuristicOptimizationEngineAlgorithm, IStorableContent {
     public string Filename { get; set; }
 
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.ParticleSwarmOptimization/3.3/ParticleSwarmOptimization.cs	(revision 5644)
@@ -39,5 +39,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public sealed class ParticleSwarmOptimization : EngineAlgorithm, IStorableContent {
+  public sealed class ParticleSwarmOptimization : HeuristicOptimizationEngineAlgorithm, IStorableContent {
 
     #region Problem Properties
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealing.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealing.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealing.cs	(revision 5644)
@@ -39,5 +39,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public sealed class SimulatedAnnealing : HeuristicOptimizationAlgorithm, IStorableContent {
+  public sealed class SimulatedAnnealing : HeuristicOptimizationEngineAlgorithm, IStorableContent {
     public string Filename { get; set; }
 
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearch.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearch.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearch.cs	(revision 5644)
@@ -38,5 +38,5 @@
   [Creatable("Algorithms")]
   [StorableClass]
-  public sealed class TabuSearch : HeuristicOptimizationAlgorithm, IStorableContent {
+  public sealed class TabuSearch : HeuristicOptimizationEngineAlgorithm, IStorableContent {
     public string Filename { get; set; }
 
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 5644)
@@ -114,4 +114,5 @@
     <Compile Include="Algorithm.cs" />
     <Compile Include="BatchRun.cs" />
+    <Compile Include="HeuristicOptimizationEngineAlgorithm.cs" />
     <Compile Include="HeuristicOptimizationAlgorithm.cs" />
     <Compile Include="MultiObjectiveHeuristicOptimizationProblem.cs" />
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Optimization/3.3/HeuristicOptimizationAlgorithm.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Optimization/3.3/HeuristicOptimizationAlgorithm.cs	(revision 5643)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Optimization/3.3/HeuristicOptimizationAlgorithm.cs	(revision 5644)
@@ -27,9 +27,9 @@
 namespace HeuristicLab.Optimization {
   /// <summary>
-  /// A base class for algorithms.
+  /// A base class for heuristic optimization algorithms.
   /// </summary>
   [Item("Heuristic Optimization Algorithm", "A base class for heuristic optimization algorithms.")]
   [StorableClass]
-  public abstract class HeuristicOptimizationAlgorithm : EngineAlgorithm {
+  public abstract class HeuristicOptimizationAlgorithm : Algorithm {
     public new IHeuristicOptimizationProblem Problem {
       get { return (IHeuristicOptimizationProblem)base.Problem; }
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Optimization/3.3/HeuristicOptimizationEngineAlgorithm.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Optimization/3.3/HeuristicOptimizationEngineAlgorithm.cs	(revision 5644)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Optimization/3.3/HeuristicOptimizationEngineAlgorithm.cs	(revision 5644)
@@ -0,0 +1,63 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 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 HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Optimization {
+  /// <summary>
+  /// A base class for heuristic optimization algorithms using an execution engine.
+  /// </summary>
+  [Item("Heuristic Optimization Enigne Algorithm", "A base class for heuristic optimization algorithms using an execution engine.")]
+  [StorableClass]
+  public abstract class HeuristicOptimizationEngineAlgorithm : EngineAlgorithm {
+    public new IHeuristicOptimizationProblem Problem {
+      get { return (IHeuristicOptimizationProblem)base.Problem; }
+      set { base.Problem = value; }
+    }
+
+    protected HeuristicOptimizationEngineAlgorithm() : base() { }
+    protected HeuristicOptimizationEngineAlgorithm(string name) : base(name) { }
+    protected HeuristicOptimizationEngineAlgorithm(string name, ParameterCollection parameters) : base(name, parameters) { }
+    protected HeuristicOptimizationEngineAlgorithm(string name, string description) : base(name, description) { }
+    protected HeuristicOptimizationEngineAlgorithm(string name, string description, ParameterCollection parameters) : base(name, description, parameters) { }
+
+    [StorableConstructor]
+    protected HeuristicOptimizationEngineAlgorithm(bool deserializing) : base(deserializing) { }
+    protected HeuristicOptimizationEngineAlgorithm(HeuristicOptimizationEngineAlgorithm original, Cloner cloner) : base(original, cloner) { }
+
+    #region Events
+    protected override void DeregisterProblemEvents() {
+      Problem.SolutionCreatorChanged -= new EventHandler(Problem_SolutionCreatorChanged);
+      Problem.EvaluatorChanged -= new EventHandler(Problem_EvaluatorChanged);
+    }
+    protected override void RegisterProblemEvents() {
+      Problem.SolutionCreatorChanged += new EventHandler(Problem_SolutionCreatorChanged);
+      Problem.EvaluatorChanged += new EventHandler(Problem_EvaluatorChanged);
+    }
+
+    protected virtual void Problem_SolutionCreatorChanged(object sender, EventArgs e) { }
+    protected virtual void Problem_EvaluatorChanged(object sender, EventArgs e) { }
+    #endregion
+  }
+}
