Index: branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/HeuristicOptimizationProblem.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/HeuristicOptimizationProblem.cs	(revision 17613)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/HeuristicOptimizationProblem.cs	(revision 17695)
@@ -29,13 +29,11 @@
   [Item("Heuristic Optimization Problem", "Represents the base class for a heuristic optimization problem.")]
   [StorableType("DE0478BA-3797-4AC3-9A89-3734D2643823")]
-  public abstract class HeuristicOptimizationProblem<T, U> : EncodedProblem, IHeuristicOptimizationProblem
-    where T : class, IEvaluator
-    where U : class, ISolutionCreator {
+  public abstract class HeuristicOptimizationProblem<T> : EncodedProblem, IHeuristicOptimizationProblem
+    where T : class, IEvaluator {
     private const string EvaluatorParameterName = "Evaluator";
-    private const string SolutionCreateParameterName = "SolutionCreator";
 
     [StorableConstructor]
     protected HeuristicOptimizationProblem(StorableConstructorFlag _) : base(_) { }
-    protected HeuristicOptimizationProblem(HeuristicOptimizationProblem<T, U> original, Cloner cloner)
+    protected HeuristicOptimizationProblem(HeuristicOptimizationProblem<T> original, Cloner cloner)
       : base(original, cloner) {
       RegisterEventHandlers();
@@ -45,12 +43,10 @@
       : base() {
       Parameters.Add(new ValueParameter<T>(EvaluatorParameterName, "The operator used to evaluate a solution."));
-      Parameters.Add(new ValueParameter<U>(SolutionCreateParameterName, "The operator to create a solution."));
       RegisterEventHandlers();
     }
 
-    protected HeuristicOptimizationProblem(T evaluator, U solutionCreator)
+    protected HeuristicOptimizationProblem(T evaluator)
       : base() {
       Parameters.Add(new ValueParameter<T>(EvaluatorParameterName, "The operator used to evaluate a solution.", evaluator));
-      Parameters.Add(new ValueParameter<U>(SolutionCreateParameterName, "The operator to create a solution.", solutionCreator));
       RegisterEventHandlers();
     }
@@ -63,5 +59,4 @@
     private void RegisterEventHandlers() {
       EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged);
-      SolutionCreatorParameter.ValueChanged += new EventHandler(SolutionCreatorParameter_ValueChanged);
     }
 
@@ -76,14 +71,4 @@
     IEvaluator IHeuristicOptimizationProblem.Evaluator { get { return Evaluator; } }
     IParameter IHeuristicOptimizationProblem.EvaluatorParameter { get { return EvaluatorParameter; } }
-
-    public U SolutionCreator {
-      get { return (U)SolutionCreatorParameter.Value; }
-      protected set { SolutionCreatorParameter.Value = value; }
-    }
-    public IValueParameter SolutionCreatorParameter {
-      get { return (IValueParameter)Parameters[SolutionCreateParameterName]; }
-    }
-    ISolutionCreator IHeuristicOptimizationProblem.SolutionCreator { get { return SolutionCreator; } }
-    IParameter IHeuristicOptimizationProblem.SolutionCreatorParameter { get { return SolutionCreatorParameter; } }
     #endregion
 
@@ -98,14 +83,4 @@
         handler(this, EventArgs.Empty);
     }
-
-    private void SolutionCreatorParameter_ValueChanged(object sender, EventArgs e) {
-      OnSolutionCreatorChanged();
-    }
-    public event EventHandler SolutionCreatorChanged;
-    protected virtual void OnSolutionCreatorChanged() {
-      EventHandler handler = SolutionCreatorChanged;
-      if (handler != null)
-        handler(this, EventArgs.Empty);
-    }
     #endregion
   }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/MultiObjectiveHeuristicOptimizationProblem.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/MultiObjectiveHeuristicOptimizationProblem.cs	(revision 17613)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/MultiObjectiveHeuristicOptimizationProblem.cs	(revision 17695)
@@ -30,12 +30,11 @@
   [Item("Multi-Objective Heuristic Optimization Problem", "A base class for multi-objective heuristic optimization problems.")]
   [StorableType("C46643E3-7144-4884-A30A-5329BD80DC4E")]
-  public abstract class MultiObjectiveHeuristicOptimizationProblem<T, U> : HeuristicOptimizationProblem<T, U>, IMultiObjectiveHeuristicOptimizationProblem
-    where T : class, IMultiObjectiveEvaluator
-    where U : class, ISolutionCreator {
+  public abstract class MultiObjectiveHeuristicOptimizationProblem<T> : HeuristicOptimizationProblem<T>, IMultiObjectiveHeuristicOptimizationProblem
+    where T : class, IMultiObjectiveEvaluator {
     private const string MaximizationParameterName = "Maximization";
 
     [StorableConstructor]
     protected MultiObjectiveHeuristicOptimizationProblem(StorableConstructorFlag _) : base(_) { }
-    protected MultiObjectiveHeuristicOptimizationProblem(MultiObjectiveHeuristicOptimizationProblem<T, U> original, Cloner cloner)
+    protected MultiObjectiveHeuristicOptimizationProblem(MultiObjectiveHeuristicOptimizationProblem<T> original, Cloner cloner)
       : base(original, cloner) {
       RegisterEventHandlers();
@@ -48,6 +47,6 @@
     }
 
-    protected MultiObjectiveHeuristicOptimizationProblem(T evaluator, U solutionCreator)
-      : base(evaluator, solutionCreator) {
+    protected MultiObjectiveHeuristicOptimizationProblem(T evaluator)
+      : base(evaluator) {
       Parameters.Add(new ValueParameter<BoolArray>(MaximizationParameterName, "Determines for each objective whether it should be maximized or minimized."));
 
Index: branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/SingleObjectiveHeuristicOptimizationProblem.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/SingleObjectiveHeuristicOptimizationProblem.cs	(revision 17613)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/SingleObjectiveHeuristicOptimizationProblem.cs	(revision 17695)
@@ -30,7 +30,6 @@
   [Item("Single-Objective Heuristic OptimizationProblem", "A base class for single-objective heuristic optimization problems.")]
   [StorableType("DFD5588E-6AB2-4712-9083-A405EF21226F")]
-  public abstract class SingleObjectiveHeuristicOptimizationProblem<T, U> : HeuristicOptimizationProblem<T, U>, ISingleObjectiveHeuristicOptimizationProblem
-    where T : class, ISingleObjectiveEvaluator
-    where U : class, ISolutionCreator {
+  public abstract class SingleObjectiveHeuristicOptimizationProblem<T> : HeuristicOptimizationProblem<T>, ISingleObjectiveHeuristicOptimizationProblem
+    where T : class, ISingleObjectiveEvaluator {
     private const string MaximizationParameterName = "Maximization";
     private const string BestKnownQualityParameterName = "BestKnownQuality";
@@ -38,5 +37,5 @@
     [StorableConstructor]
     protected SingleObjectiveHeuristicOptimizationProblem(StorableConstructorFlag _) : base(_) { }
-    protected SingleObjectiveHeuristicOptimizationProblem(SingleObjectiveHeuristicOptimizationProblem<T, U> original, Cloner cloner)
+    protected SingleObjectiveHeuristicOptimizationProblem(SingleObjectiveHeuristicOptimizationProblem<T> original, Cloner cloner)
       : base(original, cloner) {
       RegisterEventHandlers();
@@ -50,6 +49,6 @@
     }
 
-    protected SingleObjectiveHeuristicOptimizationProblem(T evaluator, U solutionCreator)
-      : base(evaluator, solutionCreator) {
+    protected SingleObjectiveHeuristicOptimizationProblem(T evaluator)
+      : base(evaluator) {
       Parameters.Add(new ValueParameter<BoolValue>(MaximizationParameterName, "Set to false if the problem should be minimized.", new BoolValue()));
       Parameters.Add(new OptionalValueParameter<DoubleValue>(BestKnownQualityParameterName, "The quality of the best known solution of this problem."));
Index: branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/UserDefinedProblem.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/UserDefinedProblem.cs	(revision 17613)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Optimization/3.3/Problems/UserDefinedProblem.cs	(revision 17695)
@@ -62,10 +62,4 @@
       get { return MaximizationParameter; }
     }
-    public ValueParameter<ISolutionCreator> SolutionCreatorParameter {
-      get { return (ValueParameter<ISolutionCreator>)Parameters["SolutionCreator"]; }
-    }
-    IParameter IHeuristicOptimizationProblem.SolutionCreatorParameter {
-      get { return SolutionCreatorParameter; }
-    }
     IParameter IHeuristicOptimizationProblem.EvaluatorParameter {
       get { return EvaluatorParameter; }
@@ -89,11 +83,4 @@
       get { return MaximizationParameter.Value; }
       set { MaximizationParameter.Value = value; }
-    }
-    public ISolutionCreator SolutionCreator {
-      get { return SolutionCreatorParameter.Value; }
-      set { SolutionCreatorParameter.Value = value; }
-    }
-    ISolutionCreator IHeuristicOptimizationProblem.SolutionCreator {
-      get { return SolutionCreatorParameter.Value; }
     }
     public ISingleObjectiveEvaluator Evaluator {
@@ -138,5 +125,4 @@
       : base() {
       Parameters.Add(new ValueParameter<ISingleObjectiveEvaluator>("Evaluator", "The evaluator that collects the values to exchange.", new EmptyUserDefinedProblemEvaluator()));
-      Parameters.Add(new ValueParameter<ISolutionCreator>("SolutionCreator", "An operator to create the solution components."));
       Parameters.Add(new ValueParameter<BoolValue>("Maximization", "Set to false as most test functions are minimization problems.", new BoolValue(false)));
       Parameters.Add(new OptionalValueParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this problem."));
@@ -156,9 +142,4 @@
 
     #region Events
-    public event EventHandler SolutionCreatorChanged;
-    private void OnSolutionCreatorChanged() {
-      EventHandler handler = SolutionCreatorChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler EvaluatorChanged;
     private void OnEvaluatorChanged() {
@@ -174,7 +155,4 @@
 
     #region Event handlers
-    private void SolutionCreatorParameter_ValueChanged(object sender, EventArgs e) {
-      OnSolutionCreatorChanged();
-    }
     private void EvaluatorParameter_ValueChanged(object sender, EventArgs e) {
       if (Evaluator != null)
@@ -202,5 +180,4 @@
     #region Helpers
     private void RegisterEventHandlers() {
-      SolutionCreatorParameter.ValueChanged += new EventHandler(SolutionCreatorParameter_ValueChanged);
       EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged);
       if (Evaluator != null)
