Index: branches/HeuristicLab.TimeSeries/HeuristicLab.Optimization/3.3/Problems/Problem.cs
===================================================================
--- branches/HeuristicLab.TimeSeries/HeuristicLab.Optimization/3.3/Problems/Problem.cs	(revision 7268)
+++ branches/HeuristicLab.TimeSeries/HeuristicLab.Optimization/3.3/Problems/Problem.cs	(revision 7460)
@@ -44,11 +44,7 @@
 
     [StorableConstructor]
-    protected Problem(bool deserializing)
-      : base(deserializing) {
-      operators = new OperatorCollection(); // operators must never be null
-    }
+    protected Problem(bool deserializing) : base(deserializing) { }
     protected Problem(Problem original, Cloner cloner)
       : base(original, cloner) {
-      operators = cloner.Clone(original.operators);
       RegisterEventHandlers();
     }
@@ -56,6 +52,5 @@
     protected Problem()
       : base() {
-      operators = new OperatorCollection();
-      Parameters.Add(new FixedValueParameter<OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", operators, false));
+      Parameters.Add(new FixedValueParameter<OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", new OperatorCollection(), false));
       OperatorsParameter.Hidden = true;
       RegisterEventHandlers();
@@ -64,11 +59,4 @@
     [StorableHook(HookType.AfterDeserialization)]
     private void AfterDeserialization() {
-      // BackwardsCompatibility3.3
-      #region Backwards compatible code, remove with 3.4
-      if (!Parameters.ContainsKey(OperatorsParameterName)) {
-        Parameters.Add(new FixedValueParameter<OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", operators, false));
-        OperatorsParameter.Hidden = true;
-      }
-      #endregion
       RegisterEventHandlers();
     }
@@ -81,14 +69,30 @@
 
     #region properties
-    private OperatorCollection operators;
+    // BackwardsCompatibility3.3
+    #region Backwards compatible code, remove with 3.4
     [Storable(Name = "Operators")]
     private IEnumerable<IOperator> StorableOperators {
-      get { return operators; }
-      set { operators = new OperatorCollection(value); }
+      get { return null; }
+      set {
+        if (!Parameters.ContainsKey(OperatorsParameterName)) {
+          Parameters.Add(new FixedValueParameter<OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", new OperatorCollection(value), false));
+          OperatorsParameter.Hidden = true;
+        }
+      }
     }
+    #endregion
     protected OperatorCollection Operators {
-      get { return this.operators; }
+      get {
+        // BackwardsCompatibility3.3
+        #region Backwards compatible code, remove with 3.4
+        if (!Parameters.ContainsKey(OperatorsParameterName)) {
+          Parameters.Add(new FixedValueParameter<OperatorCollection>(OperatorsParameterName, "The operators that the problem provides to the algorithms.", new OperatorCollection(), false));
+          OperatorsParameter.Hidden = true;
+        }
+        #endregion
+        return OperatorsParameter.Value;
+      }
     }
-    IEnumerable<IOperator> IProblem.Operators { get { return operators; } }
+    IEnumerable<IOperator> IProblem.Operators { get { return Operators; } }
     #endregion
 
Index: branches/HeuristicLab.TimeSeries/HeuristicLab.Optimization/3.3/Problems/SingleObjectiveHeuristicOptimizationProblem.cs
===================================================================
--- branches/HeuristicLab.TimeSeries/HeuristicLab.Optimization/3.3/Problems/SingleObjectiveHeuristicOptimizationProblem.cs	(revision 7268)
+++ branches/HeuristicLab.TimeSeries/HeuristicLab.Optimization/3.3/Problems/SingleObjectiveHeuristicOptimizationProblem.cs	(revision 7460)
@@ -41,5 +41,5 @@
       : base() {
       Parameters.Add(new ValueParameter<BoolValue>(MaximizationParameterName, "Set to false if the problem should be minimized.", new BoolValue()));
-      Parameters.Add(new OptionalValueParameter<DoubleValue>(BestKnownQualityParameterName, "The quality of the best known solution of this problem.", new DoubleValue()));
+      Parameters.Add(new OptionalValueParameter<DoubleValue>(BestKnownQualityParameterName, "The quality of the best known solution of this problem."));
     }
 
@@ -47,5 +47,5 @@
       : base(evaluator, solutionCreator) {
       Parameters.Add(new ValueParameter<BoolValue>(MaximizationParameterName, "Set to false if the problem should be minimized.", new BoolValue()));
-      Parameters.Add(new OptionalValueParameter<DoubleValue>(BestKnownQualityParameterName, "The quality of the best known solution of this problem.", new DoubleValue()));
+      Parameters.Add(new OptionalValueParameter<DoubleValue>(BestKnownQualityParameterName, "The quality of the best known solution of this problem."));
     }
 
@@ -68,5 +68,5 @@
     public BoolValue Maximization {
       get { return MaximizationParameter.Value; }
-      protected set { MaximizationParameter.Value = value; }
+      set { MaximizationParameter.Value = value; }
     }
 
@@ -79,5 +79,5 @@
     public DoubleValue BestKnownQuality {
       get { return BestKnownQualityParameter.Value; }
-      protected set { BestKnownQualityParameter.Value = value; }
+      set { BestKnownQualityParameter.Value = value; }
     }
 
Index: branches/HeuristicLab.TimeSeries/HeuristicLab.Optimization/3.3/Problems/UserDefinedProblem.cs
===================================================================
--- branches/HeuristicLab.TimeSeries/HeuristicLab.Optimization/3.3/Problems/UserDefinedProblem.cs	(revision 7268)
+++ branches/HeuristicLab.TimeSeries/HeuristicLab.Optimization/3.3/Problems/UserDefinedProblem.cs	(revision 7460)
@@ -121,5 +121,5 @@
     [StorableHook(HookType.AfterDeserialization)]
     private void AfterDeserialization() {
-      AttachEventHandlers();
+      RegisterEventHandlers();
     }
     public UserDefinedProblem()
@@ -132,10 +132,10 @@
       Parameters.Add(new ValueParameter<ItemList<IOperator>>("Operators", "The operators that are passed to the algorithm.", new ItemList<IOperator>()));
 
-      AttachEventHandlers();
+      RegisterEventHandlers();
     }
 
     private UserDefinedProblem(UserDefinedProblem original, Cloner cloner)
       : base(original, cloner) {
-      AttachEventHandlers();
+      RegisterEventHandlers();
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -194,5 +194,5 @@
 
     #region Helpers
-    private void AttachEventHandlers() {
+    private void RegisterEventHandlers() {
       SolutionCreatorParameter.ValueChanged += new EventHandler(SolutionCreatorParameter_ValueChanged);
       EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged);
