Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3.csproj
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3.csproj	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3.csproj	(revision 8644)
@@ -119,9 +119,7 @@
     <Compile Include="Operators\Crossovers\DoubleValue\AverageDoubleValueCrossover.cs" />
     <Compile Include="Operators\Crossovers\DoubleValue\DiscreteDoubleValueCrossover.cs" />
-    <Compile Include="Operators\Crossovers\DoubleValue\MultiDoubleValueCrossover.cs" />
     <Compile Include="Operators\Crossovers\DoubleValue\NormalDoubleValueCrossover.cs" />
     <Compile Include="Operators\Crossovers\IntValue\AverageIntValueCrossover.cs" />
     <Compile Include="Operators\Crossovers\IntValue\DiscreteIntValueCrossover.cs" />
-    <Compile Include="Operators\Crossovers\IntValue\MultiIntValueCrossover.cs" />
     <Compile Include="Operators\Crossovers\IntValue\NormalIntValueCrossover.cs" />
     <Compile Include="Operators\Interfaces\IDoubleValueCrossover.cs" />
@@ -129,5 +127,4 @@
     <Compile Include="Operators\Interfaces\IIntValueCrossover.cs" />
     <Compile Include="Operators\Interfaces\IIntValueManipulator.cs" />
-    <Compile Include="Operators\Interfaces\IValueManipulator.cs" />
     <Compile Include="Operators\Manipulators\DoubleValue\NormalDoubleValueManipulator.cs" />
     <Compile Include="Operators\Manipulators\DoubleValue\UniformDoubleValueManipulator.cs" />
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/AverageDoubleValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/AverageDoubleValueCrossover.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/AverageDoubleValueCrossover.cs	(revision 8644)
@@ -23,7 +23,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -34,9 +31,5 @@
   [Item("AverageDoubleValueCrossover", "An operator which crosses two double values. TODO")]
   [StorableClass]
-  public class AverageDoubleValueCrossover : SingleSuccessorOperator, IDoubleValueCrossover, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class AverageDoubleValueCrossover : Item, IDoubleValueCrossover {
     #region Constructors and Cloning
     public AverageDoubleValueCrossover() : base() { }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/DiscreteDoubleValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/DiscreteDoubleValueCrossover.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/DiscreteDoubleValueCrossover.cs	(revision 8644)
@@ -23,7 +23,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -34,9 +31,5 @@
   [Item("DiscreteDoubleValueCrossover", "An operator which crosses two double values. TODO")]
   [StorableClass]
-  public class DiscreteDoubleValueCrossover : SingleSuccessorOperator, IDoubleValueCrossover, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class DiscreteDoubleValueCrossover : Item, IDoubleValueCrossover {
     #region Constructors and Cloning
     public DiscreteDoubleValueCrossover() : base() { }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/MultiDoubleValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/MultiDoubleValueCrossover.cs	(revision 8590)
+++ 	(revision )
@@ -1,72 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 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;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Encodings.ParameterConfigurationEncoding {
-  /// <summary>
-  /// An operator which crosses two double values. TODO
-  /// </summary>
-  [Item("MultiDoubleValueCrossover", "An operator which crosses two double values. It randomly selects and applies one of its crossovers every time it is called.")]
-  [StorableClass]
-  public class MultiDoubleValueCrossover : StochasticMultiBranch<IDoubleValueCrossover>, IDoubleValueCrossover, IStochasticOperator {
-    public override bool CanChangeName {
-      get { return false; }
-    }
-    protected override bool CreateChildOperation {
-      get { return true; }
-    }
-
-    #region Constructors and Cloning
-    public MultiDoubleValueCrossover()
-      : base() {
-      foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IDoubleValueCrossover)).OrderBy(op => op.Name)) {
-        if (!typeof(MultiOperator<IDoubleValueCrossover>).IsAssignableFrom(type))
-          Operators.Add((IDoubleValueCrossover)Activator.CreateInstance(type), true);
-      }
-    }
-
-    [StorableConstructor]
-    protected MultiDoubleValueCrossover(bool deserializing) : base(deserializing) { }
-    protected MultiDoubleValueCrossover(MultiDoubleValueCrossover original, Cloner cloner) : base(original, cloner) { }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new MultiDoubleValueCrossover(this, cloner);
-    }
-    #endregion
-
-    public override IOperation Apply() {
-      if (Operators.Count == 0) throw new InvalidOperationException(Name + ": Please add at least one crossover to choose from.");
-      return base.Apply();
-    }
-
-    public void Apply(IRandom random, DoubleValue value, DoubleValue other, DoubleValueRange range) {
-      Operators[random.Next(Operators.Count)].Apply(random, value, other, range);
-    }
-  }
-}
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/NormalDoubleValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/NormalDoubleValueCrossover.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/DoubleValue/NormalDoubleValueCrossover.cs	(revision 8644)
@@ -24,7 +24,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Random;
@@ -36,9 +33,5 @@
   [Item("NormalDoubleValueCrossover", "An operator which crosses two double values. TODO")]
   [StorableClass]
-  public class NormalDoubleValueCrossover : SingleSuccessorOperator, IDoubleValueCrossover, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class NormalDoubleValueCrossover : Item, IDoubleValueCrossover {
     #region Constructors and Cloning
     public NormalDoubleValueCrossover() : base() { }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/AverageIntValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/AverageIntValueCrossover.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/AverageIntValueCrossover.cs	(revision 8644)
@@ -23,7 +23,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -34,9 +31,5 @@
   [Item("AverageIntValueCrossover", "An operator which crosses two integer values. TODO")]
   [StorableClass]
-  public class AverageIntValueCrossover : SingleSuccessorOperator, IIntValueCrossover, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class AverageIntValueCrossover : Item, IIntValueCrossover {
     #region Constructors and Cloning
     public AverageIntValueCrossover() : base() { }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/DiscreteIntValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/DiscreteIntValueCrossover.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/DiscreteIntValueCrossover.cs	(revision 8644)
@@ -23,7 +23,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -34,9 +31,5 @@
   [Item("DiscreteIntValueCrossover", "An operator which crosses two integer values. TODO")]
   [StorableClass]
-  public class DiscreteIntValueCrossover : SingleSuccessorOperator, IIntValueCrossover, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class DiscreteIntValueCrossover : Item, IIntValueCrossover {
     #region Constructors and Cloning
     public DiscreteIntValueCrossover() : base() { }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/MultiIntValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/MultiIntValueCrossover.cs	(revision 8590)
+++ 	(revision )
@@ -1,72 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 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;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Encodings.ParameterConfigurationEncoding {
-  /// <summary>
-  /// An operator which crosses two integer values. TODO
-  /// </summary>
-  [Item("MultiIntValueCrossover", "An operator which crosses two integer values. It randomly selects and applies one of its crossovers every time it is called.")]
-  [StorableClass]
-  public class MultiIntValueCrossover : StochasticMultiBranch<IIntValueCrossover>, IIntValueCrossover, IStochasticOperator {
-    public override bool CanChangeName {
-      get { return false; }
-    }
-    protected override bool CreateChildOperation {
-      get { return true; }
-    }
-
-    #region Constructors and Cloning
-    public MultiIntValueCrossover()
-      : base() {
-      foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IIntValueCrossover)).OrderBy(op => op.Name)) {
-        if (!typeof(MultiOperator<IIntValueCrossover>).IsAssignableFrom(type))
-          Operators.Add((IIntValueCrossover)Activator.CreateInstance(type), true);
-      }
-    }
-
-    [StorableConstructor]
-    protected MultiIntValueCrossover(bool deserializing) : base(deserializing) { }
-    protected MultiIntValueCrossover(MultiIntValueCrossover original, Cloner cloner) : base(original, cloner) { }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new MultiIntValueCrossover(this, cloner);
-    }
-    #endregion
-
-    public override IOperation Apply() {
-      if (Operators.Count == 0) throw new InvalidOperationException(Name + ": Please add at least one crossover to choose from.");
-      return base.Apply();
-    }
-
-    public void Apply(IRandom random, IntValue value, IntValue other, IntValueRange range) {
-      Operators[random.Next(Operators.Count)].Apply(random, value, other, range);
-    }
-  }
-}
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/NormalIntValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/NormalIntValueCrossover.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Crossovers/IntValue/NormalIntValueCrossover.cs	(revision 8644)
@@ -24,7 +24,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Random;
@@ -36,9 +33,5 @@
   [Item("NormalIntValueCrossover", "An operator which crosses two integer values. TODO")]
   [StorableClass]
-  public class NormalIntValueCrossover : SingleSuccessorOperator, IIntValueCrossover, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class NormalIntValueCrossover : Item, IIntValueCrossover {
     #region Constructors and Cloning
     public NormalIntValueCrossover() : base() { }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IDoubleValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IDoubleValueCrossover.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IDoubleValueCrossover.cs	(revision 8644)
@@ -22,5 +22,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
-using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Encodings.ParameterConfigurationEncoding {
@@ -28,5 +27,5 @@
   /// An interface which represents a crossover operator for double values.
   /// </summary>
-  public interface IDoubleValueCrossover : ICrossover {
+  public interface IDoubleValueCrossover : IItem {
     void Apply(IRandom random, DoubleValue value, DoubleValue other, DoubleValueRange range);
   }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IDoubleValueManipulator.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IDoubleValueManipulator.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IDoubleValueManipulator.cs	(revision 8644)
@@ -27,5 +27,5 @@
   /// An interface which represents a manipulation operator for double values.
   /// </summary>
-  public interface IDoubleValueManipulator : IValueManipulator {
+  public interface IDoubleValueManipulator : IItem {
     void Apply(IRandom random, DoubleValue value, DoubleValueRange range);
   }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IIntValueCrossover.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IIntValueCrossover.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IIntValueCrossover.cs	(revision 8644)
@@ -28,5 +28,5 @@
   /// An interface which represents a crossover operator for integer values.
   /// </summary>
-  public interface IIntValueCrossover : ICrossover {
+  public interface IIntValueCrossover : IItem {
     void Apply(IRandom random, IntValue value, IntValue other, IntValueRange range);
   }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IIntValueManipulator.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IIntValueManipulator.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IIntValueManipulator.cs	(revision 8644)
@@ -27,5 +27,5 @@
   /// An interface which represents a manipulation operator for integer values.
   /// </summary>
-  public interface IIntValueManipulator : IValueManipulator {
+  public interface IIntValueManipulator : IItem {
     void Apply(IRandom random, IntValue value, IntValueRange range);
   }
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IValueManipulator.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Interfaces/IValueManipulator.cs	(revision 8590)
+++ 	(revision )
@@ -1,30 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 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 HeuristicLab.Optimization;
-
-namespace HeuristicLab.Encodings.ParameterConfigurationEncoding {
-  /// <summary>
-  /// An interface which represents a manipulation operator for values.
-  /// </summary>
-  public interface IValueManipulator : IManipulator {
-  }
-}
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/DoubleValue/NormalDoubleValueManipulator.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/DoubleValue/NormalDoubleValueManipulator.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/DoubleValue/NormalDoubleValueManipulator.cs	(revision 8644)
@@ -24,7 +24,4 @@
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.RealVectorEncoding;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -35,9 +32,5 @@
   [Item("NormalDoubleValueManipulator", "An operator which manipulates two double values. TODO")]
   [StorableClass]
-  public class NormalDoubleValueManipulator : SingleSuccessorOperator, IDoubleValueManipulator, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class NormalDoubleValueManipulator : Item, IDoubleValueManipulator {
     #region Constructors and Cloning
     public NormalDoubleValueManipulator() : base() { }
@@ -51,5 +44,4 @@
     #endregion
 
-    // TODO: override Apply
     public void Apply(IRandom random, DoubleValue value, DoubleValueRange range) {
       ApplyStatic(random, value, range);
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/DoubleValue/UniformDoubleValueManipulator.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/DoubleValue/UniformDoubleValueManipulator.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/DoubleValue/UniformDoubleValueManipulator.cs	(revision 8644)
@@ -24,7 +24,4 @@
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.RealVectorEncoding;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -35,9 +32,5 @@
   [Item("UniformDoubleValueManipulator", "An operator which manipulates two double values. TODO")]
   [StorableClass]
-  public class UniformDoubleValueManipulator : SingleSuccessorOperator, IDoubleValueManipulator, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class UniformDoubleValueManipulator : Item, IDoubleValueManipulator {
     #region Constructors and Cloning
     public UniformDoubleValueManipulator() : base() { }
@@ -51,5 +44,4 @@
     #endregion
 
-    // TODO: override Apply
     public void Apply(IRandom random, DoubleValue value, DoubleValueRange range) {
       ApplyStatic(random, value, range);
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/IntValue/NormalIntValueManipulator.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/IntValue/NormalIntValueManipulator.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/IntValue/NormalIntValueManipulator.cs	(revision 8644)
@@ -24,7 +24,4 @@
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.RealVectorEncoding;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -35,9 +32,5 @@
   [Item("NormalIntValueManipulator", "An operator which manipulates two integer values. TODO")]
   [StorableClass]
-  public class NormalIntValueManipulator : SingleSuccessorOperator, IIntValueManipulator, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class NormalIntValueManipulator : Item, IIntValueManipulator {
     #region Constructors and Cloning
     public NormalIntValueManipulator() : base() { }
@@ -51,5 +44,4 @@
     #endregion
 
-    // TODO: override Apply
     public void Apply(IRandom random, IntValue value, IntValueRange range) {
       ApplyStatic(random, value, range);
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/IntValue/UniformIntValueManipulator.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/IntValue/UniformIntValueManipulator.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Operators/Manipulators/IntValue/UniformIntValueManipulator.cs	(revision 8644)
@@ -24,7 +24,4 @@
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.IntegerVectorEncoding;
-using HeuristicLab.Operators;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -35,9 +32,5 @@
   [Item("UniformIntValueManipulator", "An operator which manipulates two integer values. TODO")]
   [StorableClass]
-  public class UniformIntValueManipulator : SingleSuccessorOperator, IIntValueManipulator, IStochasticOperator {
-    public ILookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-
+  public class UniformIntValueManipulator : Item, IIntValueManipulator {
     #region Constructors and Cloning
     public UniformIntValueManipulator() : base() { }
@@ -51,5 +44,4 @@
     #endregion
 
-    // TODO: override Apply
     public void Apply(IRandom random, IntValue value, IntValueRange range) {
       ApplyStatic(random, value, range);
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/RangeConstraints/Range.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/RangeConstraints/Range.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/RangeConstraints/Range.cs	(revision 8644)
@@ -206,5 +206,4 @@
     }
     public bool Validate(string value, out string errorMessage) {
-      // TODO: check that stepsize < upper - lower
       T lower = (T)lowerBound.Clone();
       T upper = (T)upperBound.Clone();
Index: branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ValueConfigurations/CheckedValueConfigurationCollection.cs
===================================================================
--- branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ValueConfigurations/CheckedValueConfigurationCollection.cs	(revision 8590)
+++ branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ValueConfigurations/CheckedValueConfigurationCollection.cs	(revision 8644)
@@ -29,5 +29,5 @@
 namespace HeuristicLab.Encodings.ParameterConfigurationEncoding {
   // TODO: check that at least 1 element needs to be selected
-  // TODO: control creatable item types
+  // TODO: control creatable item types ### EDIT: done?
   [StorableClass]
   public class CheckedValueConfigurationList : CheckedItemList<IValueConfiguration>, ICheckedValueConfigurationList {
@@ -81,14 +81,17 @@
     private void RegisterEvents() {
       this.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<IValueConfiguration>>(CheckedValueConfigurationList_ItemsAdded);
+      this.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<IValueConfiguration>>(CheckedValueConfigurationList_CheckedItemsChanged);
     }
 
     private void DeregisterEvents() {
+      this.CheckedItemsChanged -= new CollectionItemsChangedEventHandler<IndexedItem<IValueConfiguration>>(CheckedValueConfigurationList_CheckedItemsChanged);
       this.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<IValueConfiguration>>(CheckedValueConfigurationList_ItemsAdded);
     }
 
+    #region Events
     private void CheckedValueConfigurationList_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<IValueConfiguration>> e) {
       foreach (var item in e.Items) {
         var matchingItems = this.Where(x => x != item.Value && x.ActualValue.ValueDataType == item.Value.ActualValue.ValueDataType);
-        if (matchingItems.Count() > 0) {
+        if (matchingItems.Any()) {
           int maxNumber = matchingItems.Select(x => x.Number).Max();
           item.Value.Number = maxNumber + 1;
@@ -96,4 +99,10 @@
       }
     }
+    private void CheckedValueConfigurationList_CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<IValueConfiguration>> e) {
+      // TODO: view does not get notified
+      if (!this.CheckedItems.Any()) this.SetItemCheckedState(e.Items.Single().Value, true);
+    }
+    #endregion
+
   }
 }
