Index: /branches/CloningRefactoring/HeuristicLab.Algorithms.DataAnalysis/3.3/SupportVectorMachine.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Algorithms.DataAnalysis/3.3/SupportVectorMachine.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Algorithms.DataAnalysis/3.3/SupportVectorMachine.cs	(revision 4670)
@@ -162,10 +162,4 @@
     }
 
-    public override IDeepCloneable Clone(Cloner cloner) {
-      SupportVectorMachine clone = (SupportVectorMachine)base.Clone(cloner);
-
-      return clone;
-    }
-
     public override void Prepare() {
       if (Problem != null) base.Prepare();
Index: /branches/CloningRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/PermutationCrossover.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/PermutationCrossover.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Encodings.PermutationEncoding/3.3/PermutationCrossover.cs	(revision 4670)
@@ -20,4 +20,5 @@
 #endregion
 
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Operators;
Index: /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/BatchRun.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/BatchRun.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/BatchRun.cs	(revision 4670)
@@ -172,5 +172,5 @@
     }
 
-    protected BatchRun(BatchRun original, Cloner cloner)
+    private BatchRun(BatchRun original, Cloner cloner)
       : base(original, cloner) {
       executionState = original.executionState;
Index: /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/Experiment.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/Experiment.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/Experiment.cs	(revision 4670)
@@ -132,5 +132,5 @@
       Initialize();
     }
-    protected Experiment(Experiment original, Cloner cloner)
+    private Experiment(Experiment original, Cloner cloner)
       : base(original, cloner) {
       executionState = original.executionState;
Index: /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/Result.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/Result.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/Result.cs	(revision 4670)
@@ -108,5 +108,5 @@
       Initialize();
     }
-    protected Result(Result original, Cloner cloner)
+    private Result(Result original, Cloner cloner)
       : base(original, cloner) {
       value = cloner.Clone(original.value);
Index: /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/Run.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/Run.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/Run.cs	(revision 4670)
@@ -38,5 +38,5 @@
     [StorableConstructor]
     private Run(bool deserializing) : base(deserializing) { }
-    protected Run(Run original, Cloner cloner)
+    private Run(Run original, Cloner cloner)
       : base(original, cloner) {
       color = original.color;
Index: /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/UserDefinedAlgorithm.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/UserDefinedAlgorithm.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/UserDefinedAlgorithm.cs	(revision 4670)
@@ -55,5 +55,5 @@
     [StorableConstructor]
     private UserDefinedAlgorithm(bool deserializing) : base(deserializing) { }
-    private UserDefinedAlgorithm(UserDefinedAlgorithm original, Cloner cloner)
+    internal UserDefinedAlgorithm(UserDefinedAlgorithm original, Cloner cloner)
       : base(original, cloner) {
     }
Index: /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/UserDefinedProblem.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/UserDefinedProblem.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Optimization/3.3/UserDefinedProblem.cs	(revision 4670)
@@ -222,5 +222,5 @@
     [StorableClass]
     private class EmptyUserDefinedProblemEvaluator : ParameterizedNamedItem, ISingleObjectiveEvaluator {
-      public EmptyUserDefinedProblemEvaluator() : base() { }
+
       [StorableConstructor]
       private EmptyUserDefinedProblemEvaluator(bool deserializing) : base(deserializing) { }
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/BestSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/BestSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/BestSelector.cs	(revision 4670)
@@ -22,4 +22,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -35,4 +36,13 @@
   public sealed class BestSelector : SingleObjectiveSelector, ISingleObjectiveSelector {
     public BestSelector() : base() { }
+    [StorableConstructor]
+    private BestSelector(bool deserializing) : base(deserializing) { }
+    private BestSelector(BestSelector original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BestSelector(this, cloner);
+    }
+
 
     protected override IScope[] Select(List<IScope> scopes) {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/ConditionalSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/ConditionalSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/ConditionalSelector.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -42,4 +43,12 @@
     }
 
+    [StorableConstructor]
+    protected ConditionalSelector(bool deserializing) : base(deserializing) { }
+    protected ConditionalSelector(ConditionalSelector original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ConditionalSelector(this, cloner);
+    }
     public ConditionalSelector()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/GenderSpecificSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/GenderSpecificSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/GenderSpecificSelector.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -80,5 +81,18 @@
 
     [StorableConstructor]
-    private GenderSpecificSelector(bool deserializing) : base() { }
+    private GenderSpecificSelector(bool deserializing) : base(deserializing) { }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      Initialize();
+    }
+
+    protected GenderSpecificSelector(GenderSpecificSelector original, Cloner cloner)
+      : base(original, cloner) {
+      Initialize();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new GenderSpecificSelector(this, cloner);
+    }
+
     public GenderSpecificSelector()
       : base() {
@@ -142,5 +156,4 @@
 
     #region Helpers
-    [StorableHook(HookType.AfterDeserialization)]
     private void Initialize() {
       FemaleSelectorParameter.ValueChanged += new EventHandler(SelectorParameter_ValueChanged);
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/LeftReducer.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/LeftReducer.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/LeftReducer.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Optimization;
@@ -32,4 +33,10 @@
   [StorableClass]
   public sealed class LeftReducer : Reducer, IReducer {
+    [StorableConstructor]
+    private LeftReducer(bool deserializing) : base(deserializing) { }
+    private LeftReducer(LeftReducer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new LeftReducer(this, cloner);
+    }
     public LeftReducer() : base() { }
 
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/LeftSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/LeftSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/LeftSelector.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -43,4 +44,13 @@
       get { return CopySelectedParameter.Value; }
       set { CopySelectedParameter.Value = value; }
+    }
+
+    [StorableConstructor]
+    private LeftSelector(bool deserializing) : base(deserializing) { }
+    private LeftSelector(LeftSelector original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new LeftSelector(this, cloner);
     }
 
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/LinearRankSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/LinearRankSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/LinearRankSelector.cs	(revision 4670)
@@ -22,4 +22,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -34,4 +35,12 @@
   [StorableClass]
   public sealed class LinearRankSelector : StochasticSingleObjectiveSelector, ISingleObjectiveSelector {
+    [StorableConstructor]
+    private LinearRankSelector(bool deserializing) : base(deserializing) { }
+    private LinearRankSelector(LinearRankSelector original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new LinearRankSelector(this, cloner);
+    }
     public LinearRankSelector() : base() { }
 
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/MergingReducer.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/MergingReducer.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/MergingReducer.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Optimization;
@@ -32,4 +33,12 @@
   [StorableClass]
   public sealed class MergingReducer : Reducer, IReducer {
+    [StorableConstructor]
+    private MergingReducer(bool deserializing) : base(deserializing) { }
+    private MergingReducer(MergingReducer original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new MergingReducer(this, cloner);
+    }
     public MergingReducer() : base() { }
 
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/OffspringSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/OffspringSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/OffspringSelector.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -31,5 +32,4 @@
   [StorableClass]
   public class OffspringSelector : SingleSuccessorOperator {
-
     public ValueLookupParameter<DoubleValue> MaximumSelectionPressureParameter {
       get { return (ValueLookupParameter<DoubleValue>)Parameters["MaximumSelectionPressure"]; }
@@ -62,4 +62,12 @@
     }
 
+    [StorableConstructor]
+    private OffspringSelector(bool deserializing) : base(deserializing) { }
+    private OffspringSelector(OffspringSelector original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OffspringSelector(this, cloner);
+    }
     public OffspringSelector()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/ProportionalSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/ProportionalSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/ProportionalSelector.cs	(revision 4670)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -45,4 +46,12 @@
     }
 
+    [StorableConstructor]
+    private ProportionalSelector(bool deserializing) : base(deserializing) { }
+    private ProportionalSelector(ProportionalSelector original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ProportionalSelector(this, cloner);
+    }
     public ProportionalSelector()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RandomReplacer.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RandomReplacer.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RandomReplacer.cs	(revision 4670)
@@ -20,4 +20,5 @@
 #endregion
 
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -49,4 +50,10 @@
     [StorableConstructor]
     private RandomReplacer(bool deserializing) : base(deserializing) { }
+    private RandomReplacer(RandomReplacer original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RandomReplacer(this, cloner);
+    }
     public RandomReplacer()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RandomSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RandomSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RandomSelector.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -46,4 +47,12 @@
     }
 
+    [StorableConstructor]
+    private RandomSelector(bool deserializing) : base(deserializing) { }
+    private RandomSelector(RandomSelector original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RandomSelector(this, cloner);
+    }
     public RandomSelector()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/Reducer.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/Reducer.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/Reducer.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Operators;
@@ -41,4 +42,9 @@
     }
 
+    [StorableConstructor]
+    protected Reducer(bool deserializing) : base(deserializing) { }
+    protected Reducer(Reducer original, Cloner cloner)
+      : base(original, cloner) {
+    }
     protected Reducer()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/Replacer.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/Replacer.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/Replacer.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -40,5 +41,9 @@
 
     [StorableConstructor]
-    protected Replacer(bool deserializing) : base() { }
+    protected Replacer(bool deserializing) : base(deserializing) { }
+    protected Replacer(Replacer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Replacer(this, cloner);
+    }
     public Replacer() {
       Parameters.Add(new ValueLookupParameter<ISelector>("ReplacedSelector", "The selection operator to select those scopes that are to be replaced."));
@@ -74,8 +79,8 @@
       int remaining = ExecutionContext.Scope.SubScopes[0].SubScopes.Count;
       int selected = ExecutionContext.Scope.SubScopes[1].SubScopes.Count;
-      
+
       ISelector replacedSelector = ReplacedSelectorParameter.ActualValue;
       ISelector selectedSelector = SelectedSelectorParameter.ActualValue;
-      
+
       if (replacedSelector != null) {
         replacedSelector.CopySelected = new BoolValue(false);
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RightChildReducer.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RightChildReducer.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RightChildReducer.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Optimization;
@@ -42,4 +43,11 @@
   [StorableClass]
   public class RightChildReducer : Reducer, IReducer {
+    [StorableConstructor]
+    protected RightChildReducer(bool deserializing) : base(deserializing) { }
+    protected RightChildReducer(RightChildReducer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RightChildReducer(this, cloner);
+    }
+    public RightChildReducer() : base() { }
     /// <summary>
     ///  Reduces the sub-scopes, so that the selected sub-scope contains all selected leaves
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RightReducer.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RightReducer.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RightReducer.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Optimization;
@@ -32,4 +33,10 @@
   [StorableClass]
   public sealed class RightReducer : Reducer, IReducer {
+    [StorableConstructor]
+    private RightReducer(bool deserializing) : base(deserializing) { }
+    private RightReducer(RightReducer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RightReducer(this, cloner);
+    }
     public RightReducer() : base() { }
 
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RightSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RightSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/RightSelector.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -44,4 +45,11 @@
       set { CopySelectedParameter.Value = value; }
     }
+    [StorableConstructor]
+    private RightSelector(bool deserializing) : base(deserializing) { }
+    private RightSelector(RightSelector original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new RightSelector(this, cloner);
+    }
+
     public RightSelector()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/Selector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/Selector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/Selector.cs	(revision 4670)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Operators;
@@ -43,4 +44,8 @@
       get { return CurrentScopeParameter.ActualValue; }
     }
+
+    [StorableConstructor]
+    protected Selector(bool deserializing) : base(deserializing) { }
+    protected Selector(Selector original, Cloner cloner) : base(original, cloner) { }
 
     protected Selector()
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/SingleObjectiveSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/SingleObjectiveSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/SingleObjectiveSelector.cs	(revision 4670)
@@ -20,4 +20,5 @@
 #endregion
 
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -50,4 +51,8 @@
     }
 
+    [StorableConstructor]
+    protected SingleObjectiveSelector(bool deserializing) : base(deserializing) { }
+    protected SingleObjectiveSelector(SingleObjectiveSelector original, Cloner cloner) : base(original, cloner) { }
+
     protected SingleObjectiveSelector()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/StochasticSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/StochasticSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/StochasticSelector.cs	(revision 4670)
@@ -20,4 +20,5 @@
 #endregion
 
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Optimization;
@@ -36,4 +37,7 @@
     }
 
+    [StorableConstructor]
+    protected StochasticSelector(bool deserializing) : base(deserializing) { }
+    protected StochasticSelector(StochasticSelector original, Cloner cloner) : base(original, cloner) { }
     protected StochasticSelector()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/StochasticSingleObjectiveSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/StochasticSingleObjectiveSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/StochasticSingleObjectiveSelector.cs	(revision 4670)
@@ -20,4 +20,5 @@
 #endregion
 
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Optimization;
@@ -35,5 +36,7 @@
       get { return (LookupParameter<IRandom>)Parameters["Random"]; }
     }
-
+    [StorableConstructor]
+    protected StochasticSingleObjectiveSelector(bool deserializing) : base(deserializing) { }
+    protected StochasticSingleObjectiveSelector(StochasticSingleObjectiveSelector original, Cloner cloner) : base(original, cloner) { }
     protected StochasticSingleObjectiveSelector()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/TournamentSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/TournamentSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/TournamentSelector.cs	(revision 4670)
@@ -22,4 +22,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -37,4 +38,11 @@
     public ValueLookupParameter<IntValue> GroupSizeParameter {
       get { return (ValueLookupParameter<IntValue>)Parameters["GroupSize"]; }
+    }
+
+    [StorableConstructor]
+    private TournamentSelector(bool deserializing) : base(deserializing) { }
+    private TournamentSelector(TournamentSelector original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new TournamentSelector(this, cloner);
     }
 
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/WorstReplacer.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/WorstReplacer.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/WorstReplacer.cs	(revision 4670)
@@ -20,4 +20,5 @@
 #endregion
 
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -46,4 +47,8 @@
     [StorableConstructor]
     private WorstReplacer(bool deserializing) : base(deserializing) { }
+    private WorstReplacer(WorstReplacer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new WorstReplacer(this, cloner);
+    }
     public WorstReplacer()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Selection/3.3/WorstSelector.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Selection/3.3/WorstSelector.cs	(revision 4669)
+++ /branches/CloningRefactoring/HeuristicLab.Selection/3.3/WorstSelector.cs	(revision 4670)
@@ -22,4 +22,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -34,4 +35,10 @@
   [StorableClass]
   public sealed class WorstSelector : SingleObjectiveSelector, ISingleObjectiveSelector {
+    [StorableConstructor]
+    private WorstSelector(bool deserializing) : base(deserializing) { }
+    private WorstSelector(WorstSelector original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new WorstSelector(this, cloner);
+    }
     public WorstSelector() : base() { }
 
