Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/BinaryVectorComparers/BinaryVectorComparer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/BinaryVectorComparers/BinaryVectorComparer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/BinaryVectorComparers/BinaryVectorComparer.cs	(revision 12569)
@@ -27,7 +27,4 @@
 
 namespace HeuristicLab.Problems.NK {
-
-  public interface IBinaryVectorComparer : INamedItem, IComparer<BinaryVector> { }
-
   [StorableClass]
   public abstract class BinaryVectorComparer : NamedItem, IBinaryVectorComparer {
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/BinaryVectorComparers/IBinaryVectorComparer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/BinaryVectorComparers/IBinaryVectorComparer.cs	(revision 12569)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/BinaryVectorComparers/IBinaryVectorComparer.cs	(revision 12569)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Collections.Generic;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.BinaryVectorEncoding;
+
+namespace HeuristicLab.Problems.NK {
+  public interface IBinaryVectorComparer : INamedItem, IComparer<BinaryVector> { }
+}
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/HeuristicLab.Problems.NK.csproj
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/HeuristicLab.Problems.NK.csproj	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/HeuristicLab.Problems.NK.csproj	(revision 12569)
@@ -158,4 +158,5 @@
   <ItemGroup>
     <Compile Include="BinaryVectorComparers\BinaryVectorComparer.cs" />
+    <Compile Include="BinaryVectorComparers\IBinaryVectorComparer.cs" />
     <Compile Include="BinaryVectorComparers\LexicographicBinaryVectorComparer.cs" />
     <Compile Include="BinaryVectorComparers\AverageBitBinaryVectorComparer.cs" />
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/InteractionInitializers/LimitedRandomInteractionsInitializer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/InteractionInitializers/LimitedRandomInteractionsInitializer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/InteractionInitializers/LimitedRandomInteractionsInitializer.cs	(revision 12569)
@@ -41,14 +41,14 @@
         Max = Math.Max(min, max);
       }
-      public int bounded(int n) {
+      public int Bounded(int n) {
         return Math.Max(Min, Math.Min(Max, n));
       }
     }
 
-    public ValueParameter<IntValue> MaximumDistanceParameter {
-      get { return (ValueParameter<IntValue>)Parameters["MaximumDistance"]; }
+    public IValueParameter<IntValue> MaximumDistanceParameter {
+      get { return (IValueParameter<IntValue>)Parameters["MaximumDistance"]; }
     }
-    public ValueParameter<DoubleValue> MaximumDistanceRatioParameter {
-      get { return (ValueParameter<DoubleValue>)Parameters["MaximumDistanceRatio"]; }
+    public IValueParameter<DoubleValue> MaximumDistanceRatioParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters["MaximumDistanceRatio"]; }
     }
 
@@ -58,5 +58,5 @@
       maxBitDist = Math.Min(
         maxBitDist == 0 ? length : maxBitDist,
-        maxDistRatio == 0 ? length : (int)Math.Round(maxDistRatio * length));
+        maxDistRatio.IsAlmost(0.0) ? length : (int)Math.Round(maxDistRatio * length));
       if (maxBitDist * 2 < nInteractions)
         maxBitDist = (int)Math.Ceiling(0.5 * nInteractions);
@@ -83,6 +83,6 @@
       var maxBounds = new Bounds(nInteractions, length - 1);
       for (int c = 0; c < m.Columns; c++) {
-        int min = minBounds.bounded(c - maxBitDistance);
-        int max = maxBounds.bounded(c + maxBitDistance);
+        int min = minBounds.Bounded(c - maxBitDistance);
+        int max = maxBounds.Bounded(c + maxBitDistance);
         var indices = Enumerable.Range(min, max - min).ToList();
         indices.Remove(c);
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/InteractionInitializers/SortedRandomInteractionsInitializer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/InteractionInitializers/SortedRandomInteractionsInitializer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/InteractionInitializers/SortedRandomInteractionsInitializer.cs	(revision 12569)
@@ -31,12 +31,10 @@
 namespace HeuristicLab.Problems.NK {
 
-  [Item("SortedRandomInteractionsInitializer", "Randomly assigned interactions across all bits and sorts components according to bit affinity.")]
+  [Item("SortedRandomInteractionsInitializer", "Randomly assigns interactions across all bits and sorts components according to bit affinity.")]
   [StorableClass]
   public class SortedRandomInteractionsInitializer : ParameterizedNamedItem, IInteractionInitializer {
-
     public IConstrainedValueParameter<IBinaryVectorComparer> ComparerParameter {
       get { return (IConstrainedValueParameter<IBinaryVectorComparer>)Parameters["Comparer"]; }
     }
-
     public IBinaryVectorComparer Comparer {
       get { return ComparerParameter.Value; }
@@ -47,9 +45,9 @@
     protected SortedRandomInteractionsInitializer(SortedRandomInteractionsInitializer original, Cloner cloner) : base(original, cloner) { }
     public SortedRandomInteractionsInitializer() {
-      AddComparerParameter();
+      Parameters.Add(new ConstrainedValueParameter<IBinaryVectorComparer>("Comparer", "Comparison for sorting of component functions."));
+      InitializeComparers();
     }
 
-    private void AddComparerParameter() {
-      Parameters.Add(new ConstrainedValueParameter<IBinaryVectorComparer>("Comparer", "Comparison for sorting of component functions"));
+    private void InitializeComparers() {
       foreach (var comparer in ApplicationManager.Manager.GetInstances<IBinaryVectorComparer>())
         ComparerParameter.ValidValues.Add(comparer);
@@ -59,15 +57,4 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       return new SortedRandomInteractionsInitializer(this, cloner);
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      try {
-        IBinaryVectorComparer comparer = Comparer;
-      }
-      catch {
-        Parameters.Remove("Comparer");
-        AddComparerParameter();
-      }
     }
 
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/NKBitFlipMoveEvaluator.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/NKBitFlipMoveEvaluator.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/NKBitFlipMoveEvaluator.cs	(revision 12569)
@@ -33,15 +33,13 @@
   [StorableClass]
   public class NKBitFlipMoveEvaluator : NKMoveEvaluator, IOneBitflipMoveOperator {
-
     public ILookupParameter<OneBitflipMove> OneBitflipMoveParameter {
       get { return (ILookupParameter<OneBitflipMove>)Parameters["OneBitflipMove"]; }
     }
-    public LookupParameter<BinaryVector> MovedBinaryVectorParameter {
-      get { return (LookupParameter<BinaryVector>)Parameters["MovedBinaryVector"]; }
+    public ILookupParameter<BinaryVector> MovedBinaryVectorParameter {
+      get { return (ILookupParameter<BinaryVector>)Parameters["MovedBinaryVector"]; }
     }
 
     [StorableConstructor]
     protected NKBitFlipMoveEvaluator(bool deserializing) : base(deserializing) { }
-
     protected NKBitFlipMoveEvaluator(NKBitFlipMoveEvaluator original, Cloner cloner)
       : base(original, cloner) { }
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/NKLandscape.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/NKLandscape.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/NKLandscape.cs	(revision 12569)
@@ -45,18 +45,18 @@
 
     #region Parameters
-    public ValueParameter<BoolMatrix> GeneInteractionsParameter {
-      get { return (ValueParameter<BoolMatrix>)Parameters["GeneInteractions"]; }
-    }
-    public ValueParameter<IntValue> InteractionSeedParameter {
-      get { return (ValueParameter<IntValue>)Parameters["InteractionSeed"]; }
-    }
-    public ValueParameter<IntValue> NrOfInteractionsParameter {
-      get { return (ValueParameter<IntValue>)Parameters["NrOfInteractions"]; }
-    }
-    public ValueParameter<IntValue> NrOfFitnessComponentsParameter {
-      get { return (ValueParameter<IntValue>)Parameters["NrOfFitnessComponents"]; }
-    }
-    public ValueParameter<DoubleArray> WeightsParameter {
-      get { return (ValueParameter<DoubleArray>)Parameters["Weights"]; }
+    public IValueParameter<BoolMatrix> GeneInteractionsParameter {
+      get { return (IValueParameter<BoolMatrix>)Parameters["GeneInteractions"]; }
+    }
+    public IValueParameter<IntValue> InteractionSeedParameter {
+      get { return (IValueParameter<IntValue>)Parameters["InteractionSeed"]; }
+    }
+    public IValueParameter<IntValue> NrOfInteractionsParameter {
+      get { return (IValueParameter<IntValue>)Parameters["NrOfInteractions"]; }
+    }
+    public IValueParameter<IntValue> NrOfFitnessComponentsParameter {
+      get { return (IValueParameter<IntValue>)Parameters["NrOfFitnessComponents"]; }
+    }
+    public IValueParameter<DoubleArray> WeightsParameter {
+      get { return (IValueParameter<DoubleArray>)Parameters["Weights"]; }
     }
     public IConstrainedValueParameter<IInteractionInitializer> InteractionInitializerParameter {
@@ -80,4 +80,13 @@
     public IntValue InteractionSeed {
       get { return InteractionSeedParameter.Value; }
+    }
+    public IntValue NrOfFitnessComponents {
+      get { return NrOfFitnessComponentsParameter.Value; }
+    }
+    public IntValue NrOfInteractions {
+      get { return NrOfInteractionsParameter.Value; }
+    }
+    public IWeightsInitializer WeightsInitializer {
+      get { return WeightsInitializerParameter.Value; }
     }
     #endregion
@@ -168,9 +177,9 @@
     }
 
-    void WeightsInitializerParameter_ValueChanged(object sender, EventArgs e) {
+    private void WeightsInitializerParameter_ValueChanged(object sender, EventArgs e) {
       InitializeWeights();
     }
 
-    void InteractionInitializerParameter_ValueChanged(object sender, EventArgs e) {
+    private void InteractionInitializerParameter_ValueChanged(object sender, EventArgs e) {
       InitializeInteractions();
     }
@@ -190,6 +199,6 @@
         GeneInteractionsParameter.Value = InteractionInitializer.InitializeInterations(
           Length,
-          NrOfFitnessComponentsParameter.Value.Value,
-          NrOfInteractionsParameter.Value.Value, Random);
+          NrOfFitnessComponents.Value,
+          NrOfInteractions.Value, Random);
     }
 
@@ -197,5 +206,5 @@
       if (WeightsInitializerParameter.Value != null)
         WeightsParameter.Value = new DoubleArray(
-          WeightsInitializerParameter.Value.GetWeights(NrOfFitnessComponentsParameter.Value.Value)
+          WeightsInitializer.GetWeights(NrOfFitnessComponents.Value)
           .ToArray());
     }
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/NKMoveEvaluator.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/NKMoveEvaluator.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/NKMoveEvaluator.cs	(revision 12569)
@@ -25,5 +25,4 @@
 using HeuristicLab.Encodings.BinaryVectorEncoding;
 using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -31,7 +30,7 @@
 namespace HeuristicLab.Problems.NK {
 
-  [Item("NKMoveEvaluator", "A base class for operators which evaluate moves on the NK Lanscape.")]
+  [Item("NKMoveEvaluator", "A base class for operators which evaluate moves on the NK Landscape.")]
   [StorableClass]
-  public abstract class NKMoveEvaluator : SingleSuccessorOperator, INKMoveEvaluator, IMoveOperator, IBinaryVectorMoveOperator {
+  public abstract class NKMoveEvaluator : SingleSuccessorOperator, INKMoveEvaluator, IBinaryVectorMoveOperator {
 
     public ILookupParameter<DoubleValue> QualityParameter {
@@ -44,12 +43,12 @@
       get { return (ILookupParameter<BinaryVector>)Parameters["BinaryVector"]; }
     }
-    public LookupParameter<BoolMatrix> GeneInteractionsParameter {
-      get { return (LookupParameter<BoolMatrix>)Parameters["GeneInteractions"]; }
+    public ILookupParameter<BoolMatrix> GeneInteractionsParameter {
+      get { return (ILookupParameter<BoolMatrix>)Parameters["GeneInteractions"]; }
     }
-    public LookupParameter<IntValue> InteractionSeedParameter {
-      get { return (LookupParameter<IntValue>)Parameters["InteractionSeed"]; }
+    public ILookupParameter<IntValue> InteractionSeedParameter {
+      get { return (ILookupParameter<IntValue>)Parameters["InteractionSeed"]; }
     }
-    public LookupParameter<DoubleArray> WeightsParameter {
-      get { return (LookupParameter<DoubleArray>)Parameters["Weights"]; }
+    public ILookupParameter<DoubleArray> WeightsParameter {
+      get { return (ILookupParameter<DoubleArray>)Parameters["Weights"]; }
     }
 
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/Properties/AssemblyInfo.cs.frame
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/Properties/AssemblyInfo.cs.frame	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/Properties/AssemblyInfo.cs.frame	(revision 12569)
@@ -27,5 +27,5 @@
 // associated with an assembly.
 [assembly: AssemblyTitle("HeuristicLab.Problems.NK")]
-[assembly: AssemblyDescription("NK Fitness Lanscape Analysis Test Problem")]
+[assembly: AssemblyDescription("NK Fitness Landscape Analysis Test Problem")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/EqualWeightsInitializer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/EqualWeightsInitializer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/EqualWeightsInitializer.cs	(revision 12569)
@@ -27,5 +27,6 @@
 namespace HeuristicLab.Problems.NK.WeightInitializers {
 
-  [Item("EqualWeightsInitializer", "Initializes all weights to 1.0")]
+  [Item("EqualWeightsInitializer", "Initializes all weights to 1.0.")]
+  [StorableClass]
   public class EqualWeightsInitializer : NamedItem, IWeightsInitializer {
 
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ExponentialDistributionWeightsInitializer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ExponentialDistributionWeightsInitializer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ExponentialDistributionWeightsInitializer.cs	(revision 12569)
@@ -30,11 +30,12 @@
 namespace HeuristicLab.Problems.NK.WeightInitializers {
 
-  [Item("ExponentialDistributionWeightsInitializer", "Assigned exponentially decreasing weights using the rate parameter lambad.")]
+  [Item("ExponentialDistributionWeightsInitializer", "Assigns exponentially decreasing weights using the rate parameter lambda.")]
+  [StorableClass]
   public class ExponentialDistributionWeightsInitializer : ParameterizedNamedItem, IWeightsInitializer {
 
     public override bool CanChangeName { get { return false; } }
     public override bool CanChangeDescription { get { return false; } }
-    public ValueParameter<DoubleValue> LambdaParameter {
-      get { return (ValueParameter<DoubleValue>)Parameters["Lambda"]; }
+    public IValueParameter<DoubleValue> LambdaParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters["Lambda"]; }
     }
 
@@ -45,5 +46,5 @@
     }
     public ExponentialDistributionWeightsInitializer() {
-      Parameters.Add(new ValueParameter<DoubleValue>("Lambda", "The rate paramter of the exponential distribution.", new DoubleValue(1.0)));
+      Parameters.Add(new ValueParameter<DoubleValue>("Lambda", "The rate parameter of the exponential distribution.", new DoubleValue(1.0)));
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -52,6 +53,6 @@
 
     public static double f(double x, double lambda) {
-      if (x < 0)
-        return 0;
+      if (x < 0.0)
+        return 0.0;
       return lambda * Math.Exp(-lambda * x);
     }
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ExponentialWeightsInitializer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ExponentialWeightsInitializer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ExponentialWeightsInitializer.cs	(revision 12569)
@@ -28,5 +28,6 @@
 namespace HeuristicLab.Problems.NK.WeightInitializers {
 
-  [Item("ExponentialWeightsInitializer", "Assigned exponentially increasing weights.")]
+  [Item("ExponentialWeightsInitializer", "Assigns exponentially increasing weights.")]
+  [StorableClass]
   public class ExponentialWeightsInitializer : NamedItem, IWeightsInitializer {
 
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/IWeightsInitializer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/IWeightsInitializer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/IWeightsInitializer.cs	(revision 12569)
@@ -24,8 +24,6 @@
 
 namespace HeuristicLab.Problems.NK {
-
   public interface IWeightsInitializer : INamedItem {
     IEnumerable<double> GetWeights(int nComponents);
   }
-
 }
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/LinearWeightsInitializer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/LinearWeightsInitializer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/LinearWeightsInitializer.cs	(revision 12569)
@@ -27,5 +27,6 @@
 namespace HeuristicLab.Problems.NK.WeightInitializers {
 
-  [Item("LinearWeightsInitializer", "Assigned linear increasing weights.")]
+  [Item("LinearWeightsInitializer", "Assigns linear increasing weights.")]
+  [StorableClass]
   public class LinearWeightsInitializer : NamedItem, IWeightsInitializer {
 
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ReverseExponentialWeightsInitializer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ReverseExponentialWeightsInitializer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ReverseExponentialWeightsInitializer.cs	(revision 12569)
@@ -28,5 +28,6 @@
 namespace HeuristicLab.Problems.NK.WeightInitializers {
 
-  [Item("ReverseExponentialWeightsInitializer", "Assigned exponentially decreasing weights.")]
+  [Item("ReverseExponentialWeightsInitializer", "Assigns exponentially decreasing weights.")]
+  [StorableClass]
   public class ReverseExponentialWeightsInitializer : NamedItem, IWeightsInitializer {
 
Index: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ReverseLinearWeightsInitializer.cs
===================================================================
--- branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ReverseLinearWeightsInitializer.cs	(revision 12566)
+++ branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/WeightInitializers/ReverseLinearWeightsInitializer.cs	(revision 12569)
@@ -27,5 +27,6 @@
 namespace HeuristicLab.Problems.NK.WeightInitializers {
 
-  [Item("ReverseLienarWeightsInitializer", "Assigned exponentially decreasing weights.")]
+  [Item("ReverseLinearWeightsInitializer", "Assigns exponentially decreasing weights.")]
+  [StorableClass]
   public class ReverseLinearWeightsInitializer : NamedItem, IWeightsInitializer {
 
