Index: /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/IKernel.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/IKernel.cs	(revision 15156)
+++ /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/IKernel.cs	(revision 15157)
@@ -21,8 +21,13 @@
 
 
+using System;
+
 namespace HeuristicLab.Algorithms.DataAnalysis {
   public interface IKernel : ICovarianceFunction {
     double? Beta { get; set; } // a kernel parameter
     IDistance Distance { get; set; } // the distance function to use
+
+    event EventHandler BetaChanged;
+    event EventHandler DistanceChanged;
   }
 }
Index: /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/KernelBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/KernelBase.cs	(revision 15156)
+++ /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/KernelBase.cs	(revision 15157)
@@ -34,14 +34,27 @@
     private const string DistanceParameterName = "Distance";
 
-    public ValueParameter<IDistance> DistanceParameter {
-      get { return Parameters[DistanceParameterName] as ValueParameter<IDistance>; }
+    public IValueParameter<IDistance> DistanceParameter {
+      get { return (IValueParameter<IDistance>)Parameters[DistanceParameterName]; }
     }
 
     [Storable]
-    public double? Beta { get; set; }
+    private double? beta;
+    public double? Beta {
+      get { return beta; }
+      set {
+        if (value != beta) {
+          beta = value;
+          RaiseBetaChanged();
+        }
+      }
+    }
 
     public IDistance Distance {
       get { return DistanceParameter.Value; }
-      set { DistanceParameter.Value = value; }
+      set {
+        if (DistanceParameter.Value != value) {
+          DistanceParameter.Value = value;
+        }
+      }
     }
 
@@ -51,5 +64,6 @@
     protected KernelBase(KernelBase original, Cloner cloner)
       : base(original, cloner) {
-      Beta = original.Beta;
+      beta = original.beta;
+      RegisterEvents();
     }
 
@@ -57,4 +71,14 @@
       Parameters.Add(new ValueParameter<IDistance>(DistanceParameterName, "The distance function used for kernel calculation"));
       DistanceParameter.Value = new EuclideanDistance();
+      RegisterEvents();
+    }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterEvents();
+    }
+
+    private void RegisterEvents() {
+      DistanceParameter.ValueChanged += (sender, args) => RaiseDistanceChanged();
     }
 
@@ -94,4 +118,19 @@
       return dist.Get(r1, r2);
     }
+
+    #region events
+    public event EventHandler BetaChanged;
+    public event EventHandler DistanceChanged;
+
+    protected void RaiseBetaChanged() {
+      var handler = BetaChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    protected void RaiseDistanceChanged() {
+      var handler = DistanceChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/PolysplineKernel.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/PolysplineKernel.cs	(revision 15156)
+++ /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/PolysplineKernel.cs	(revision 15157)
@@ -36,5 +36,5 @@
 
     public IFixedValueParameter<DoubleValue> DegreeParameter {
-      get { return Parameters[DegreeParameterName] as IFixedValueParameter<DoubleValue>; }
+      get { return (IFixedValueParameter<DoubleValue>)Parameters[DegreeParameterName]; }
     }
 
Index: /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/ThinPlatePolysplineKernel.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/ThinPlatePolysplineKernel.cs	(revision 15156)
+++ /trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/KernelRidgeRegression/KernelFunctions/ThinPlatePolysplineKernel.cs	(revision 15157)
@@ -36,5 +36,5 @@
 
     public IFixedValueParameter<DoubleValue> DegreeParameter {
-      get { return Parameters[DegreeParameterName] as IFixedValueParameter<DoubleValue>; }
+      get { return (IFixedValueParameter<DoubleValue>)Parameters[DegreeParameterName]; }
     }
     public DoubleValue Degree {
