Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineCrossValidationEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineCrossValidationEvaluator.cs	(revision 4543)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineCrossValidationEvaluator.cs	(revision 4722)
@@ -21,5 +21,7 @@
 
 using System;
+using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -29,5 +31,4 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using SVM;
-using System.Collections.Generic;
 
 namespace HeuristicLab.Problems.DataAnalysis.SupportVectorMachine {
@@ -126,4 +127,10 @@
     #endregion
 
+    [StorableConstructor]
+    protected SupportVectorMachineCrossValidationEvaluator(bool deserializing) : base(deserializing) { }
+
+    protected SupportVectorMachineCrossValidationEvaluator(SupportVectorMachineCrossValidationEvaluator original,
+      Cloner cloner)
+      : base(original, cloner) { }
     public SupportVectorMachineCrossValidationEvaluator()
       : base() {
@@ -143,9 +150,13 @@
     }
 
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SupportVectorMachineCrossValidationEvaluator(this, cloner);
+    }
+
     public override IOperation Apply() {
       double reductionRatio = 1.0; // TODO: make parameter
       if (ActualSamplesParameter.ActualValue != null)
         reductionRatio = ActualSamplesParameter.ActualValue.Value;
-      IEnumerable<int> rows = 
+      IEnumerable<int> rows =
         Enumerable.Range(SamplesStart.Value, SamplesEnd.Value - SamplesStart.Value)
         .Where(i => i < DataAnalysisProblemData.TestSamplesStart.Value || DataAnalysisProblemData.TestSamplesEnd.Value <= i);
@@ -153,5 +164,5 @@
       // create a new DataAnalysisProblemData instance
       DataAnalysisProblemData reducedProblemData = (DataAnalysisProblemData)DataAnalysisProblemData.Clone();
-      reducedProblemData.Dataset = 
+      reducedProblemData.Dataset =
         CreateReducedDataset(RandomParameter.ActualValue, reducedProblemData.Dataset, rows, reductionRatio);
       reducedProblemData.TrainingSamplesStart.Value = 0;
@@ -170,5 +181,5 @@
 
     private Dataset CreateReducedDataset(IRandom random, Dataset dataset, IEnumerable<int> rowIndices, double reductionRatio) {
-      
+
       // must not make a fink:
       // => select n rows randomly from start..end
@@ -191,5 +202,5 @@
       // take the first n indexes (selected n rowIndexes from start..end)
       // now order by index
-      int[] orderedRandomIndexes = 
+      int[] orderedRandomIndexes =
         rowIndexArr.Take(n)
         .OrderBy(x => x)
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModel.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModel.cs	(revision 4543)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModel.cs	(revision 4722)
@@ -36,8 +36,14 @@
   [StorableClass]
   [Item("SupportVectorMachineModel", "Represents a support vector machine model.")]
-  public class SupportVectorMachineModel : NamedItem, IDataAnalysisModel {
-    public SupportVectorMachineModel()
-      : base() {
+  public sealed class SupportVectorMachineModel : NamedItem, IDataAnalysisModel {
+    [StorableConstructor]
+    private SupportVectorMachineModel(bool deserializing) : base(deserializing) { }
+    private SupportVectorMachineModel(SupportVectorMachineModel original, Cloner cloner)
+      : base(original, cloner) {
+      // only using a shallow copy here! (gkronber)
+      this.model = original.model;
+      this.rangeTransform = original.rangeTransform;
     }
+    public SupportVectorMachineModel() : base() { }
 
     private SVM.Model model;
@@ -131,9 +137,5 @@
 
     public override IDeepCloneable Clone(Cloner cloner) {
-      SupportVectorMachineModel clone = (SupportVectorMachineModel)base.Clone(cloner);
-      // beware we are only using a shallow copy here! (gkronber)
-      clone.model = model;
-      clone.rangeTransform = rangeTransform;
-      return clone;
+      return new SupportVectorMachineModel(this, cloner);
     }
 
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModelCreator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModelCreator.cs	(revision 4543)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModelCreator.cs	(revision 4722)
@@ -21,4 +21,7 @@
 
 using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -27,6 +30,4 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using SVM;
-using System.Collections.Generic;
-using System.Linq;
 
 namespace HeuristicLab.Problems.DataAnalysis.SupportVectorMachine {
@@ -36,5 +37,5 @@
   [StorableClass]
   [Item("SupportVectorMachineModelCreator", "Represents an operator that creates a support vector machine model.")]
-  public class SupportVectorMachineModelCreator : SingleSuccessorOperator {
+  public sealed class SupportVectorMachineModelCreator : SingleSuccessorOperator {
     private const string DataAnalysisProblemDataParameterName = "DataAnalysisProblemData";
     private const string SvmTypeParameterName = "SvmType";
@@ -110,4 +111,10 @@
     #endregion
 
+    [StorableConstructor]
+    private SupportVectorMachineModelCreator(bool deserializing) : base(deserializing) { }
+    private SupportVectorMachineModelCreator(SupportVectorMachineModelCreator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SupportVectorMachineModelCreator(this, cloner);
+    }
     public SupportVectorMachineModelCreator()
       : base() {
@@ -129,6 +136,6 @@
       int start = SamplesStart.Value;
       int end = SamplesEnd.Value;
-      IEnumerable<int> rows = 
-        Enumerable.Range(start, end-start)
+      IEnumerable<int> rows =
+        Enumerable.Range(start, end - start)
         .Where(i => i < DataAnalysisProblemData.TestSamplesStart.Value || DataAnalysisProblemData.TestSamplesEnd.Value <= i);
 
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModelEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModelEvaluator.cs	(revision 4543)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/SupportVectorMachine/SupportVectorMachineModelEvaluator.cs	(revision 4722)
@@ -20,4 +20,7 @@
 #endregion
 
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -26,6 +29,4 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using SVM;
-using System.Collections.Generic;
-using System.Linq;
 
 namespace HeuristicLab.Problems.DataAnalysis.SupportVectorMachine {
@@ -70,4 +71,11 @@
     }
     #endregion
+
+    [StorableConstructor]
+    protected SupportVectorMachineModelEvaluator(bool deserializing) : base(deserializing) { }
+    protected SupportVectorMachineModelEvaluator(SupportVectorMachineModelEvaluator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SupportVectorMachineModelEvaluator(this, cloner);
+    }
     public SupportVectorMachineModelEvaluator()
       : base() {
