Index: branches/TerminationCriteria/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
===================================================================
--- branches/TerminationCriteria/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs	(revision 12407)
+++ branches/TerminationCriteria/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs	(revision 12408)
@@ -504,4 +504,5 @@
     }
     private void ParameterizeTerminators() {
+      qualityTerminator.ComparisonValueParameter.ActualName = qualityAnalyzer.CurrentBestQualityParameter.Name;
       if (Problem != null) {
         var maximizationParameter = (IValueParameter<BoolValue>)Problem.MaximizationParameter;
@@ -509,8 +510,7 @@
           bool maximization = maximizationParameter.Value.Value;
           qualityTerminator.Comparison = maximization ? ComparisonType.Less : ComparisonType.Greater;
-          qualityTerminator.Threshold.Value = maximization ? double.MinValue : double.MaxValue;
+          qualityTerminator.Threshold.Value = maximization ? double.MaxValue : double.MinValue;
         }
       }
-      qualityTerminator.ComparisonValueParameter.ActualName = qualityAnalyzer.CurrentBestQualityParameter.Name;
     }
     private void ParameterizeComparisonFactorModifiers() {
Index: branches/TerminationCriteria/HeuristicLab.Termination/3.3/ComparisonTerminator.cs
===================================================================
--- branches/TerminationCriteria/HeuristicLab.Termination/3.3/ComparisonTerminator.cs	(revision 12407)
+++ branches/TerminationCriteria/HeuristicLab.Termination/3.3/ComparisonTerminator.cs	(revision 12408)
@@ -30,5 +30,5 @@
   [Item("ComparisonTerminator", "An termination criterion which compares two values.")]
   [StorableClass]
-  public class ComparisonTerminator<T> : ThresholdTerminator<T> where T : class, IItem, IComparable, new() {
+  public class ComparisonTerminator<T> : ThresholdTerminator<T> where T : class, IItem, IComparable, IStringConvertibleValue, new() {
     public ILookupParameter<T> ComparisonValueParameter {
       get { return (ILookupParameter<T>)Parameters["ComparisonValue"]; }
@@ -57,4 +57,7 @@
       return new ComparisonTerminator<T>(this, cloner);
     }
+
+    public ComparisonTerminator()
+      : this(new T()) { }
     public ComparisonTerminator(T threshold)
       : base(threshold) {
@@ -70,5 +73,12 @@
 
     private void Initialize() {
-      ComparisonParameter.ToStringChanged += (s, a) => OnToStringChanged();
+      ComparisonParameter.Value.ValueChanged += new EventHandler(Comparison_ValueChanged);
+    }
+
+    private void Comparison_ValueChanged(object sender, EventArgs e) {
+      OnComparisonChanged();
+    }
+    protected virtual void OnComparisonChanged() {
+      OnToStringChanged();
     }
 
Index: branches/TerminationCriteria/HeuristicLab.Termination/3.3/ThresholdTerminator.cs
===================================================================
--- branches/TerminationCriteria/HeuristicLab.Termination/3.3/ThresholdTerminator.cs	(revision 12407)
+++ branches/TerminationCriteria/HeuristicLab.Termination/3.3/ThresholdTerminator.cs	(revision 12408)
@@ -20,6 +20,8 @@
 #endregion
 
+using System;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Data;
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -29,5 +31,5 @@
   [Item("ThresholdTerminator", "Base class for all termination criteria which specifies some threshold.")]
   [StorableClass]
-  public abstract class ThresholdTerminator<T> : Terminator where T : class, IItem, new() {
+  public abstract class ThresholdTerminator<T> : Terminator where T : class, IItem, IStringConvertibleValue, new() {
     public IFixedValueParameter<T> ThresholdParameter {
       get { return (IFixedValueParameter<T>)Parameters["Threshold"]; }
@@ -48,6 +50,9 @@
       Initialize();
     }
-    protected ThresholdTerminator(T threshold = default(T))
+    protected ThresholdTerminator()
+      : this(new T()) { }
+    protected ThresholdTerminator(T threshold)
       : base() {
+      if (threshold == null) throw new ArgumentNullException("threshold");
       Parameters.Add(new FixedValueParameter<T>("Threshold", "The limit of the termiation criterion.", threshold));
       Initialize();
@@ -55,5 +60,12 @@
 
     private void Initialize() {
-      ThresholdParameter.ToStringChanged += (s, a) => OnToStringChanged();
+      Threshold.ValueChanged += new EventHandler(Threshold_ValueChanged);
+    }
+
+    private void Threshold_ValueChanged(object sender, EventArgs e) {
+      OnThresholdChanged();
+    }
+    protected virtual void OnThresholdChanged() {
+      OnToStringChanged();
     }
 
Index: branches/TerminationCriteria/HeuristicLab.Termination/3.3/Views/ThresholdTerminatorView.Designer.cs
===================================================================
--- branches/TerminationCriteria/HeuristicLab.Termination/3.3/Views/ThresholdTerminatorView.Designer.cs	(revision 12407)
+++ branches/TerminationCriteria/HeuristicLab.Termination/3.3/Views/ThresholdTerminatorView.Designer.cs	(revision 12408)
@@ -22,7 +22,8 @@
 using System;
 using HeuristicLab.Core;
+using HeuristicLab.Data;
 
 namespace HeuristicLab.Termination.Views {
-  partial class ThresholdTerminatorView<T> where T : class, IItem, IComparable, new() {
+  partial class ThresholdTerminatorView<T> where T : class, IItem, IComparable, IStringConvertibleValue, new() {
     /// <summary> 
     /// Required designer variable.
Index: branches/TerminationCriteria/HeuristicLab.Termination/3.3/Views/ThresholdTerminatorView.cs
===================================================================
--- branches/TerminationCriteria/HeuristicLab.Termination/3.3/Views/ThresholdTerminatorView.cs	(revision 12407)
+++ branches/TerminationCriteria/HeuristicLab.Termination/3.3/Views/ThresholdTerminatorView.cs	(revision 12408)
@@ -23,4 +23,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
+using HeuristicLab.Data;
 using HeuristicLab.MainForm;
 
@@ -29,5 +30,5 @@
   [View("ThresholdTerminator View")]
   [Content(typeof(ThresholdTerminator<>), true)]
-  public partial class ThresholdTerminatorView<T> : ItemView where T : class, IItem, IComparable, new() {
+  public partial class ThresholdTerminatorView<T> : ItemView where T : class, IItem, IComparable, IStringConvertibleValue, new() {
 
     public new ThresholdTerminator<T> Content {
