Index: /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs	(revision 5205)
+++ /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs	(revision 5206)
@@ -249,4 +249,7 @@
       base.Problem_OperatorsChanged(sender, e);
     }
+    void ElitesParameter_ValueChanging(object sender, EventArgs e) {
+      Elites.ValueChanged -= new EventHandler(Elites_ValueChanged);
+    }
     private void ElitesParameter_ValueChanged(object sender, EventArgs e) {
       Elites.ValueChanged += new EventHandler(Elites_ValueChanged);
@@ -256,4 +259,8 @@
       ParameterizeSelectors();
     }
+
+    void PopulationSizeParameter_ValueChanging(object sender, EventArgs e) {
+      PopulationSize.ValueChanged -= new EventHandler(PopulationSize_ValueChanged);
+    }
     private void PopulationSizeParameter_ValueChanged(object sender, EventArgs e) {
       PopulationSize.ValueChanged += new EventHandler(PopulationSize_ValueChanged);
@@ -272,6 +279,8 @@
     #region Helpers
     private void Initialize() {
+      PopulationSizeParameter.ValueChanging += new EventHandler(PopulationSizeParameter_ValueChanging);
       PopulationSizeParameter.ValueChanged += new EventHandler(PopulationSizeParameter_ValueChanged);
       PopulationSize.ValueChanged += new EventHandler(PopulationSize_ValueChanged);
+      ElitesParameter.ValueChanging += new EventHandler(ElitesParameter_ValueChanging);
       ElitesParameter.ValueChanged += new EventHandler(ElitesParameter_ValueChanged);
       Elites.ValueChanged += new EventHandler(Elites_ValueChanged);
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IValueParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IValueParameter.cs	(revision 5205)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IValueParameter.cs	(revision 5206)
@@ -26,4 +26,5 @@
     IItem Value { get; set; }
     bool GetsCollected { get; set; }
+    event EventHandler ValueChanging;
     event EventHandler ValueChanged;
     event EventHandler GetsCollectedChanged;
Index: /trunk/sources/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs	(revision 5205)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs	(revision 5206)
@@ -54,4 +54,5 @@
         if (value != this.value) {
           if ((value != null) && !validValues.Contains(value)) throw new ArgumentException("Invalid value.");
+          OnValueChanging();
           DeregisterValueEvents();
           this.value = value;
@@ -205,4 +206,9 @@
     }
 
+    public event EventHandler ValueChanging;
+    protected virtual void OnValueChanging() {
+      EventHandler handler = ValueChanging;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
     public event EventHandler ValueChanged;
     protected virtual void OnValueChanged() {
Index: /trunk/sources/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs	(revision 5205)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs	(revision 5206)
@@ -46,4 +46,5 @@
       set {
         if (value != this.value) {
+          OnValueChanging();
           DeregisterValueEvents();
           this.value = value;
@@ -187,5 +188,10 @@
       ((IValueParameter)this).Value = value;
     }
-
+    
+    public event EventHandler ValueChanging;
+    protected virtual void OnValueChanging() {
+      EventHandler handler = ValueChanging;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
     public event EventHandler ValueChanged;
     protected virtual void OnValueChanged() {
Index: /trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 5205)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 5206)
@@ -46,4 +46,5 @@
       set {
         if (value != this.value) {
+          OnValueChanging();
           DeregisterValueEvents();
           this.value = value;
@@ -159,4 +160,9 @@
     }
 
+    public event EventHandler ValueChanging;
+    protected virtual void OnValueChanging() {
+      EventHandler handler = ValueChanging;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
     public event EventHandler ValueChanged;
     protected virtual void OnValueChanged() {
