Index: /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/ClassificationProblem.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/ClassificationProblem.cs	(revision 5578)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/ClassificationProblem.cs	(revision 5579)
@@ -20,8 +20,6 @@
 #endregion
 
-using System;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -30,37 +28,14 @@
   [Item("ClassificationProblem", "")]
   [Creatable]
-  public class ClassificationProblem : DataAnalysisProblem<IClassificationProblemData>,
-    IClassificationProblem {
-    private const string ProblemDataParameterName = "ProblemData";
-    public ClassificationProblem(ClassificationProblem original, Cloner cloner)
-      : base(original, cloner) {
-      RegisterEventHandlers();
-    }
+  public class ClassificationProblem : DataAnalysisProblem<IClassificationProblemData>, IClassificationProblem {
     [StorableConstructor]
     public ClassificationProblem(bool deserializing) : base(deserializing) { }
+    public ClassificationProblem(ClassificationProblem original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) { return new ClassificationProblem(this, cloner); }
+
     public ClassificationProblem()
       : base() {
-      Parameters.Add(new ValueParameter<IClassificationProblemData>(ProblemDataParameterName, "", new ClassificationProblemData()));
-      RegisterEventHandlers();
+      ProblemData = new ClassificationProblemData();
     }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      RegisterEventHandlers();
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new ClassificationProblem(this, cloner);
-    }
-
-    private void RegisterEventHandlers() {
-      ProblemDataParameter.Value.Changed += new EventHandler(Value_Changed);
-    }
-
-    #region event propagation
-    private void Value_Changed(object sender, EventArgs e) {
-      //OnReset();
-    }
-    #endregion
   }
 }
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/ClassificationProblemData.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/ClassificationProblemData.cs	(revision 5578)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/ClassificationProblemData.cs	(revision 5579)
@@ -288,5 +288,5 @@
     public void SetClassificationPenalty(double correctClassValue, double estimatedClassValue, double penalty) {
       var key = Tuple.Create(correctClassValue, estimatedClassValue);
-      if (misclassificationMatrix[key] != penalty) {
+      if (!misclassificationMatrix.ContainsKey(key) || misclassificationMatrix[key] != penalty) {
         misclassificationMatrix[key] = penalty;
         OnClassificationPenaltyChanged();
Index: /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/RegressionProblem.cs
===================================================================
--- /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/RegressionProblem.cs	(revision 5578)
+++ /branches/DataAnalysis Refactoring/HeuristicLab.Problems.DataAnalysis/3.4/RegressionProblem.cs	(revision 5579)
@@ -28,21 +28,13 @@
   [Item("RegressionProblem", "")]
   [Creatable]
-  public class RegressionProblem : DataAnalysisProblem<IRegressionProblemData>,
-    IRegressionProblem {
-    public RegressionProblem(RegressionProblem original, Cloner cloner)
-      : base(original, cloner) {
-    }
+  public class RegressionProblem : DataAnalysisProblem<IRegressionProblemData>, IRegressionProblem {
     [StorableConstructor]
     public RegressionProblem(bool deserializing) : base(deserializing) { }
+    public RegressionProblem(RegressionProblem original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) { return new RegressionProblem(this, cloner); }
+
     public RegressionProblem()
       : base() {
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new RegressionProblem(this, cloner);
+      ProblemData = new RegressionProblemData();
     }
   }
