Index: branches/PerformanceComparison/HeuristicLab.Analysis.FitnessLandscape/3.3/CharacteristicCalculator/AdaptiveWalkCalculator.cs
===================================================================
--- branches/PerformanceComparison/HeuristicLab.Analysis.FitnessLandscape/3.3/CharacteristicCalculator/AdaptiveWalkCalculator.cs	(revision 13583)
+++ branches/PerformanceComparison/HeuristicLab.Analysis.FitnessLandscape/3.3/CharacteristicCalculator/AdaptiveWalkCalculator.cs	(revision 13594)
@@ -22,4 +22,5 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Data;
 using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -33,4 +34,17 @@
   [StorableClass]
   public class AdaptiveWalkCalculator : NamedItem, ICharacteristicCalculator {
+
+    [Storable]
+    private IProblem problem;
+    public IProblem Problem {
+      get { return problem; }
+      set {
+        if (problem == value) return;
+        problem = value;
+        var soProblem = problem as ISingleObjectiveHeuristicOptimizationProblem;
+        walker.Problem = soProblem;
+      }
+    }
+
     [Storable]
     private AdaptiveWalk walker;
@@ -40,5 +54,7 @@
     private AdaptiveWalkCalculator(AdaptiveWalkCalculator original, Cloner cloner)
       : base(original, cloner) {
+      problem = cloner.Clone(original.problem);
       walker = cloner.Clone(original.walker);
+      characteristics = cloner.Clone(original.characteristics);
     }
     public AdaptiveWalkCalculator() {
@@ -46,4 +62,9 @@
       Description = ItemDescription;
       walker = new AdaptiveWalk();
+      characteristics = new CheckedItemList<StringValue>(
+        new[] { "AutoCorrelation1", "CorrelationLength", "InformationContent",
+        "PartialInformationContent", "DensityBasinInformation", "InformationStability", 
+        "Diversity", "Regularity", "TotalEntropy", "PeakInformationContent",
+        "PeakDensityBasinInformation" }.Select(x => new StringValue(x)));
     }
 
@@ -52,21 +73,15 @@
     }
 
-    public IEnumerable<string> Characteristics {
-      get {
-        return new[] { "AutoCorrelation1", "CorrelationLength", "InformationContent",
-        "PartialInformationContent", "DensityBasinInformation", "InformationStability", 
-        "Diversity", "Regularity", "TotalEntropy", "PeakInformationContent",
-        "PeakDensityBasinInformation" };
-      }
+    private CheckedItemList<StringValue> characteristics;
+    public ReadOnlyCheckedItemList<StringValue> Characteristics {
+      get { return characteristics.AsReadOnly(); }
     }
 
-    public bool CanCalculate(IProblem problem) {
-      return problem is ISingleObjectiveHeuristicOptimizationProblem
-        && problem.Operators.Any(x => x is IManipulator);
+    public bool CanCalculate() {
+      return Problem is ISingleObjectiveHeuristicOptimizationProblem
+        && Problem.Operators.Any(x => x is IManipulator);
     }
 
-    public IEnumerable<KeyValuePair<string, IItem>> Calculate(IProblem problem, IEnumerable<string> characteristics = null) {
-      var soProb = (ISingleObjectiveHeuristicOptimizationProblem)problem;
-      walker.Problem = soProb;
+    public IEnumerable<IResult> Calculate() {
       walker.Prepare(true);
       using (var waitHandle = new AutoResetEvent(false)) {
@@ -80,10 +95,17 @@
         walker.ExecutionStateChanged -= evHandle;
       }
-      var props = (characteristics ?? Characteristics).ToList();
-      foreach (var p in props) {
-        yield return new KeyValuePair<string, IItem>(p, walker.Results[p].Value);
+      foreach (var p in characteristics.CheckedItems) {
+        yield return new Result("AdaptiveWalk." + walker.MutatorParameter.Value.Name + "." + p.Value.Value, walker.Results[p.Value.Value].Value);
       }
       walker.Prepare(true);
     }
+
+    public void CollectParameterValues(IDictionary<string, IItem> values) {
+      walker.CollectParameterValues(values);
+    }
+
+    public IKeyedItemCollection<string, IParameter> Parameters {
+      get { return ((IParameterizedItem)walker).Parameters; }
+    }
   }
 }
