Index: /branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/Alps.cs
===================================================================
--- /branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/Alps.cs	(revision 12547)
+++ /branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/Alps.cs	(revision 12548)
@@ -162,9 +162,9 @@
     #region Preconfigured Terminators
     [Storable]
-    private ComparisonTerminator<IntValue> evaluationsTerminator;
+    protected ComparisonTerminator<IntValue> evaluationsTerminator;
     [Storable]
-    private SingleObjectiveQualityTerminator qualityTerminator;
+    protected SingleObjectiveQualityTerminator qualityTerminator;
     [Storable]
-    private ExecutionTimeTerminator executionTimeTerminator;
+    protected ExecutionTimeTerminator executionTimeTerminator;
     #endregion
 
@@ -201,4 +201,8 @@
       layerQualityAnalyzer = new BestAverageWorstQualityAnalyzer();
 
+      evaluationsTerminator = new ComparisonTerminator<IntValue>("EvaluatedSolutions", ComparisonType.Less, new IntValue(int.MaxValue)) { Name = "Evaluations" };
+      qualityTerminator = new SingleObjectiveQualityTerminator() { Name = "Quality" };
+      executionTimeTerminator = new ExecutionTimeTerminator(this, new TimeSpanValue(TimeSpan.FromMinutes(5)));
+
       ParameterizeAgeLimits();
       ParameterizeAgeInheritanceReduction();
@@ -207,7 +211,5 @@
       UpdateAnalyzers();
 
-      CreateTerminators();
       ParameterizeTerminators();
-      UpdateTerminators();
 
       Initialize();
@@ -231,5 +233,4 @@
       ParameterizeTerminators();
       UpdateAnalyzers();
-      UpdateTerminators();
       Problem.Evaluator.QualityParameter.ActualNameChanged += Evaluator_QualityParameter_ActualNameChanged;
     }
@@ -262,5 +263,4 @@
         ParameterizeStochasticOperator(@operator);
       UpdateAnalyzers();
-      UpdateTerminators();
       base.Problem_OperatorsChanged(sender, e);
     }
@@ -410,25 +410,4 @@
       }
     }
-    protected virtual void UpdateTerminators() {
-      var newTerminators = new Dictionary<ITerminator, bool> {
-        {evaluationsTerminator, Terminators.Operators.Contains(evaluationsTerminator) && Terminators.Operators.ItemChecked(evaluationsTerminator)},
-        {qualityTerminator, Terminators.Operators.Contains(qualityTerminator) && Terminators.Operators.ItemChecked(qualityTerminator) },
-        {executionTimeTerminator, Terminators.Operators.Contains(executionTimeTerminator) && Terminators.Operators.ItemChecked(executionTimeTerminator)}
-      };
-      if (Problem != null) {
-        foreach (var terminator in Problem.Operators.OfType<ITerminator>())
-          newTerminators.Add(terminator, !Terminators.Operators.Contains(terminator) || Terminators.Operators.ItemChecked(terminator));
-      }
-
-      Terminators.Operators.Clear();
-
-      foreach (var newTerminator in newTerminators)
-        Terminators.Operators.Add(newTerminator.Key, newTerminator.Value);
-    }
-    protected virtual void CreateTerminators() {
-      evaluationsTerminator = new ComparisonTerminator<IntValue>("EvaluatedSolutions", ComparisonType.Less, new IntValue(int.MaxValue)) { Name = "Evaluations" };
-      qualityTerminator = new SingleObjectiveQualityTerminator() { Name = "Quality" };
-      executionTimeTerminator = new ExecutionTimeTerminator(this, new TimeSpanValue(TimeSpan.FromMinutes(5)));
-    }
     #endregion
   }
Index: /branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs
===================================================================
--- /branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs	(revision 12547)
+++ /branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs	(revision 12548)
@@ -200,5 +200,10 @@
       }
 
+      generationsTerminator = new ComparisonTerminator<IntValue>("Generations", ComparisonType.Less, new IntValue(1000)) { Name = "Generations" };
+
       ParameterizeSelectors();
+
+      UpdateTerminators();
+
       Initialize();
     }
@@ -213,4 +218,5 @@
       UpdateCrossovers();
       UpdateMutators();
+      UpdateTerminators();
     }
     protected override void Problem_SolutionCreatorChanged(object sender, EventArgs e) {
@@ -229,4 +235,5 @@
       UpdateCrossovers();
       UpdateMutators();
+      UpdateTerminators();
     }
     protected override void Evaluator_QualityParameter_ActualNameChanged(object sender, EventArgs e) {
@@ -291,17 +298,20 @@
 
     #region Updates
-    protected override void UpdateTerminators() {
+    private void UpdateTerminators() {
       var newTerminators = new Dictionary<ITerminator, bool> {
         {generationsTerminator, !Terminators.Operators.Contains(generationsTerminator) || Terminators.Operators.ItemChecked(generationsTerminator)},
+        {evaluationsTerminator, Terminators.Operators.Contains(evaluationsTerminator) && Terminators.Operators.ItemChecked(evaluationsTerminator)},
+        {qualityTerminator, Terminators.Operators.Contains(qualityTerminator) && Terminators.Operators.ItemChecked(qualityTerminator) },
+        {executionTimeTerminator, Terminators.Operators.Contains(executionTimeTerminator) && Terminators.Operators.ItemChecked(executionTimeTerminator)}
       };
-
-      base.UpdateTerminators();
+      if (Problem != null) {
+        foreach (var terminator in Problem.Operators.OfType<ITerminator>())
+          newTerminators.Add(terminator, !Terminators.Operators.Contains(terminator) || Terminators.Operators.ItemChecked(terminator));
+      }
+
+      Terminators.Operators.Clear();
 
       foreach (var newTerminator in newTerminators)
-        Terminators.Operators.Insert(0, newTerminator.Key, newTerminator.Value);
-    }
-    protected override void CreateTerminators() {
-      generationsTerminator = new ComparisonTerminator<IntValue>("Generations", ComparisonType.Less, new IntValue(1000)) { Name = "Generations" };
-      base.CreateTerminators();
+        Terminators.Operators.Add(newTerminator.Key, newTerminator.Value);
     }
     private void UpdateCrossovers() {
