Index: /trunk/sources/HeuristicLab.Evolutionary/3.3/ChildrenCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Evolutionary/3.3/ChildrenCreator.cs	(revision 2794)
+++ /trunk/sources/HeuristicLab.Evolutionary/3.3/ChildrenCreator.cs	(revision 2794)
@@ -0,0 +1,80 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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 HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Evolutionary {
+  /// <summary>
+  /// An operator which is used to prepare crossover.
+  /// </summary>
+  /// <remarks>
+  /// The sub-scopes of the current scope the operator is applied on represent the parents. The operator creates
+  /// new and empty scopes for each child, adds the scopes that represent the child's parents as sub-scopes to
+  /// the child and adds the child as sub-scope to the current scope.
+  /// </remarks>
+  [Item("ChildrenCreator", "An operator which is used to prepare crossover. The sub-scopes of the current scope the operator is applied on represent the parents. The operator creates new and empty scopes for each child, adds the scopes that represent the child's parents as sub-scopes to the child and adds the child as sub-scope to the current scope.")]
+  [EmptyStorableClass]
+  [Creatable("Test")]
+  public sealed class ChildrenCreator : SingleSuccessorOperator {
+    private ScopeParameter CurrentScopeParameter {
+      get { return (ScopeParameter)Parameters["CurrentScope"]; }
+    }
+    public ValueLookupParameter<IntData> ParentsPerChildParameter {
+      get { return (ValueLookupParameter<IntData>)Parameters["ParentsPerChild"]; }
+    }
+    public IScope CurrentScope {
+      get { return CurrentScopeParameter.ActualValue; }
+    }
+    public IntData ParentsPerChild {
+      get { return ParentsPerChildParameter.Value; }
+      set { ParentsPerChildParameter.Value = value; }
+    }
+
+    public ChildrenCreator()
+      : base() {
+      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope whose sub-scopes represent the parents."));
+      Parameters.Add(new ValueLookupParameter<IntData>("ParentsPerChild", "The number of parents that should be crossed per child. Note that some of the typical crossover operators require exactly two parents.", new IntData(2)));
+    }
+
+    public override IExecutionSequence Apply() {
+      int parentsPerChild = ParentsPerChildParameter.ActualValue.Value;
+      int parents = CurrentScope.SubScopes.Count;
+      if (parents % parentsPerChild > 0) throw new InvalidOperationException("Number of parents is not an integral multiple of ParentsPerChild.");
+      int children = parents / parentsPerChild;
+
+      for (int i = 0; i < children; i++) {
+        IScope child = new Scope(i.ToString());
+        for (int j = 0; j < parents; j++) {
+          IScope parent = CurrentScope.SubScopes[0];
+          CurrentScope.SubScopes.RemoveAt(0);
+          child.SubScopes.Add(parent);
+        }
+        CurrentScope.SubScopes.Add(child);
+      }
+      return base.Apply();
+    }
+  }
+}
Index: unk/sources/HeuristicLab.Evolutionary/3.3/ChildrenInitializer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Evolutionary/3.3/ChildrenInitializer.cs	(revision 2793)
+++ 	(revision )
@@ -1,76 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2009 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.Collections.Generic;
-using System.Text;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Operators;
-
-namespace HeuristicLab.Evolutionary {
-  /// <summary>
-  /// Initializes and prepares the children for crossover
-  /// </summary>
-  public class ChildrenInitializer : OperatorBase {
-    /// <inheritdoc select="summary"/>
-    public override string Description {
-      get {
-        return @"This operator prepares the individuals for crossover.";
-      }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ChildrenInitializer"/> with one variable info: <c>ParentsPerChild</c>.
-    /// </summary>
-    public ChildrenInitializer()
-      : base() {
-      AddVariableInfo(new VariableInfo("ParentsPerChild", "Denotes the number of parents that should be crossed per child. Note that some of the typical crossover operators can only work with 2 parents.", typeof(IntData), VariableKind.In));
-      GetVariableInfo("ParentsPerChild").Local = true;
-      AddVariable(new Variable("ParentsPerChild", new IntData(2)));
-    }
-
-    /// <summary>
-    /// Initializes the children as new scopes and inserts their parents as subscopes.
-    /// </summary>
-    /// <exception cref="InvalidOperationException">Thrown when the number of selected parents is not a natural multiple of <c>ParentsPerChild</c>.</exception>
-    /// <param name="scope">The scope that houses all the selected parents as subscopes.</param>
-    /// <returns><c>null</c>.</returns>
-    public override IOperation Apply(IScope scope) {
-      int parents = GetVariableValue<IntData>("ParentsPerChild", scope, true).Data;
-      int children = scope.SubScopes.Count;
-      if (children % parents > 0) throw new InvalidOperationException("ERROR in ChildrenInitializer: The number of selected parents is not a natural multiple of ParentsPerChild");
-      children /= parents;
-
-      for (int i = 0; i < children; i++) {
-        IScope child = new Scope(i.ToString());
-        for (int y = 0; y < parents; y++) {
-          IScope parenty = scope.SubScopes[0];
-          scope.RemoveSubScope(parenty);
-          child.AddSubScope(parenty);
-        }
-        scope.AddSubScope(child);
-      }
-
-      return null;
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Evolutionary/3.3/CrossoverBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Evolutionary/3.3/CrossoverBase.cs	(revision 2793)
+++ 	(revision )
@@ -1,60 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.Text;
-using HeuristicLab.Core;
-using HeuristicLab.Operators;
-
-namespace HeuristicLab.Evolutionary {
-  /// <summary>
-  /// Base class for crossover operators.
-  /// </summary>
-  public abstract class CrossoverBase : OperatorBase {
-    /// <summary>
-    /// Initializes a new instance of <see cref="CrossoverBase"/> with one variable info (<c>Random</c>).
-    /// </summary>
-    public CrossoverBase()
-      : base() {
-      AddVariableInfo(new VariableInfo("Random", "Pseudo random number generator", typeof(IRandom), VariableKind.In));
-    }
-
-    /// <summary>
-    /// Retrieves the random number generator and calls <see cref="Cross(HeuristicLab.Core.IScope, HeuristicLab.Core.IRandom)"/>.
-    /// </summary>
-    /// <param name="scope">The current scope which represents a new child.</param>
-    /// <returns><c>null</c>.</returns>
-    public override IOperation Apply(IScope scope) {
-      IRandom random = GetVariableValue<IRandom>("Random", scope, true);
-      Cross(scope, random);
-      return null;
-    }
-
-    /// <summary>
-    /// Performs a crossover of all parents (sub-scopes) of <paramref name="scope"/> to create a new child.
-    /// Note that all children have to be prepared using the <see cref="HeuristicLab.Evolutionary.ChildrenInitializer"/>.
-    /// </summary>
-    /// <param name="scope">The current scope which represents a new child.</param>
-    /// <param name="random">A random number generator.</param>
-    protected abstract void Cross(IScope scope, IRandom random);
-  }
-}
Index: /trunk/sources/HeuristicLab.Evolutionary/3.3/HeuristicLab.Evolutionary-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Evolutionary/3.3/HeuristicLab.Evolutionary-3.3.csproj	(revision 2793)
+++ /trunk/sources/HeuristicLab.Evolutionary/3.3/HeuristicLab.Evolutionary-3.3.csproj	(revision 2794)
@@ -84,4 +84,5 @@
     <Compile Include="HeuristicLabEvolutionaryPlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ChildrenCreator.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -90,4 +91,8 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
       <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
@@ -101,4 +106,12 @@
       <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
       <Name>HeuristicLab.Operators-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
+      <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>
+      <Name>HeuristicLab.Parameters-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
Index: /trunk/sources/HeuristicLab.Evolutionary/3.3/HeuristicLabEvolutionaryPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Evolutionary/3.3/HeuristicLabEvolutionaryPlugin.cs.frame	(revision 2793)
+++ /trunk/sources/HeuristicLab.Evolutionary/3.3/HeuristicLabEvolutionaryPlugin.cs.frame	(revision 2794)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.PluginInfrastructure;
 
@@ -31,7 +28,10 @@
   [Plugin("HeuristicLab.Evolutionary", "3.3.0.$WCREV$")]
   [PluginFile("HeuristicLab.Evolutionary-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
   [PluginDependency("HeuristicLab.Data", "3.3")]
   [PluginDependency("HeuristicLab.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabEvolutionaryPlugin : PluginBase {
   }
Index: /trunk/sources/HeuristicLab.Operators/3.3/Assigner.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Assigner.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Assigner.cs	(revision 2794)
@@ -20,9 +20,5 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
-using HeuristicLab.Data;
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
Index: /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs	(revision 2794)
@@ -20,12 +20,7 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
 using System.Drawing;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Collections;
 using HeuristicLab.Core;
-using HeuristicLab.Data;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
Index: /trunk/sources/HeuristicLab.Operators/3.3/Comparator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Comparator.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Comparator.cs	(revision 2794)
@@ -21,6 +21,4 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -30,5 +28,5 @@
 namespace HeuristicLab.Operators {
   /// <summary>
-  /// Operator which increments an integer variable.
+  /// An operator which compares two items.
   /// </summary>
   [Item("Comparator", "An operator which compares two items.")]
Index: /trunk/sources/HeuristicLab.Operators/3.3/ConditionalBranch.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/ConditionalBranch.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/ConditionalBranch.cs	(revision 2794)
@@ -20,8 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
Index: /trunk/sources/HeuristicLab.Operators/3.3/DoubleCounter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/DoubleCounter.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/DoubleCounter.cs	(revision 2794)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
Index: /trunk/sources/HeuristicLab.Operators/3.3/EmptyOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/EmptyOperator.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/EmptyOperator.cs	(revision 2794)
@@ -20,10 +20,6 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
+using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Core;
 
 namespace HeuristicLab.Operators {
Index: /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj	(revision 2794)
@@ -98,4 +98,5 @@
     <Compile Include="SequentialSubScopesProcessor.cs" />
     <Compile Include="StochasticBranch.cs" />
+    <Compile Include="SubScopesCreator.cs" />
     <Compile Include="SubScopesRemover.cs" />
     <Compile Include="SubScopesSorter.cs" />
@@ -110,9 +111,6 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="SingleSuccessorOperator.cs" />
-    <Compile Include="SubScopesCreater.cs" />
     <Compile Include="ValuesCollector.cs" />
-    <Compile Include="VariableInjector.cs">
-      <SubType>Code</SubType>
-    </Compile>
+    <Compile Include="VariableCreator.cs" />
   </ItemGroup>
   <ItemGroup>
Index: /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLabOperatorsPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLabOperatorsPlugin.cs.frame	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLabOperatorsPlugin.cs.frame	(revision 2794)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.PluginInfrastructure;
 
Index: /trunk/sources/HeuristicLab.Operators/3.3/IntCounter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/IntCounter.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/IntCounter.cs	(revision 2794)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
Index: /trunk/sources/HeuristicLab.Operators/3.3/MultipleCallsOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/MultipleCallsOperator.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/MultipleCallsOperator.cs	(revision 2794)
@@ -21,8 +21,5 @@
 
 using System;
-using System.Collections.Generic;
 using System.Linq;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Collections;
 using HeuristicLab.Core;
Index: /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs	(revision 2794)
@@ -21,11 +21,8 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using System.Drawing;
+using HeuristicLab.Collections;
+using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Core;
-using HeuristicLab.Collections;
 
 namespace HeuristicLab.Operators {
Index: /trunk/sources/HeuristicLab.Operators/3.3/ParallelSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/ParallelSubScopesProcessor.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/ParallelSubScopesProcessor.cs	(revision 2794)
@@ -20,13 +20,5 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Xml;
-using HeuristicLab.Collections;
 using HeuristicLab.Core;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Operators {
Index: /trunk/sources/HeuristicLab.Operators/3.3/Placeholder.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Placeholder.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Placeholder.cs	(revision 2794)
@@ -20,8 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Core;
 using HeuristicLab.Parameters;
Index: /trunk/sources/HeuristicLab.Operators/3.3/ScopeCleaner.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/ScopeCleaner.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/ScopeCleaner.cs	(revision 2794)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
 using HeuristicLab.Parameters;
Index: /trunk/sources/HeuristicLab.Operators/3.3/SequentialSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SequentialSubScopesProcessor.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SequentialSubScopesProcessor.cs	(revision 2794)
@@ -20,13 +20,5 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Xml;
-using HeuristicLab.Collections;
 using HeuristicLab.Core;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Operators {
Index: /trunk/sources/HeuristicLab.Operators/3.3/SingleCallOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SingleCallOperator.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SingleCallOperator.cs	(revision 2794)
@@ -20,8 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Core;
 using HeuristicLab.Parameters;
Index: /trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs	(revision 2794)
@@ -20,8 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Core;
 using HeuristicLab.Parameters;
Index: /trunk/sources/HeuristicLab.Operators/3.3/StochasticBranch.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/StochasticBranch.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/StochasticBranch.cs	(revision 2794)
@@ -20,8 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
Index: unk/sources/HeuristicLab.Operators/3.3/SubScopesCreater.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SubScopesCreater.cs	(revision 2793)
+++ 	(revision )
@@ -1,61 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 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.Collections.Generic;
-using System.Text;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Operators {
-  /// <summary>
-  /// An operator which adds new and empty sub-scopes to the current scope.
-  /// </summary>
-  [Item("SubScopesCreater", "An operator which adds new and empty sub-scopes to the current scope.")]
-  [EmptyStorableClass]
-  [Creatable("Test")]
-  public class SubScopesCreater : SingleSuccessorOperator {
-    public ValueLookupParameter<IntData> NumberOfSubScopesParameter {
-      get { return (ValueLookupParameter<IntData>)Parameters["NumberOfSubScopes"]; }
-    }
-    protected ScopeParameter CurrentScopeParameter {
-      get { return (ScopeParameter)Parameters["CurrentScope"]; }
-    }
-    public IScope CurrentScope {
-      get { return CurrentScopeParameter.ActualValue; }
-    }
-
-    public SubScopesCreater()
-      : base() {
-      Parameters.Add(new ValueLookupParameter<IntData>("NumberOfSubScopes", "The number of new and empty sub-scopes which should be added to the current scope."));
-      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope to which the new and empty sub-scopes are added."));
-    }
-
-    public override IExecutionSequence Apply() {
-      int n = NumberOfSubScopesParameter.ActualValue.Value;
-      for (int i = 0; i < n; i++)
-        CurrentScope.SubScopes.Add(new Scope(i.ToString()));
-      return base.Apply();
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Operators/3.3/SubScopesCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SubScopesCreator.cs	(revision 2794)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SubScopesCreator.cs	(revision 2794)
@@ -0,0 +1,58 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Operators {
+  /// <summary>
+  /// An operator which adds new and empty sub-scopes to the current scope.
+  /// </summary>
+  [Item("SubScopesCreator", "An operator which adds new and empty sub-scopes to the current scope.")]
+  [EmptyStorableClass]
+  [Creatable("Test")]
+  public class SubScopesCreator : SingleSuccessorOperator {
+    public ValueLookupParameter<IntData> NumberOfSubScopesParameter {
+      get { return (ValueLookupParameter<IntData>)Parameters["NumberOfSubScopes"]; }
+    }
+    protected ScopeParameter CurrentScopeParameter {
+      get { return (ScopeParameter)Parameters["CurrentScope"]; }
+    }
+    public IScope CurrentScope {
+      get { return CurrentScopeParameter.ActualValue; }
+    }
+
+    public SubScopesCreator()
+      : base() {
+      Parameters.Add(new ValueLookupParameter<IntData>("NumberOfSubScopes", "The number of new and empty sub-scopes which should be added to the current scope."));
+      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope to which the new and empty sub-scopes are added."));
+    }
+
+    public override IExecutionSequence Apply() {
+      int n = NumberOfSubScopesParameter.ActualValue.Value;
+      for (int i = 0; i < n; i++)
+        CurrentScope.SubScopes.Add(new Scope(i.ToString()));
+      return base.Apply();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators/3.3/SubScopesRemover.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SubScopesRemover.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SubScopesRemover.cs	(revision 2794)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
Index: /trunk/sources/HeuristicLab.Operators/3.3/SubScopesSorter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/SubScopesSorter.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/SubScopesSorter.cs	(revision 2794)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
Index: /trunk/sources/HeuristicLab.Operators/3.3/UniformParallelSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/UniformParallelSubScopesProcessor.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/UniformParallelSubScopesProcessor.cs	(revision 2794)
@@ -20,8 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Core;
 using HeuristicLab.Parameters;
Index: /trunk/sources/HeuristicLab.Operators/3.3/UniformSequentialSubScopesProcessor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/UniformSequentialSubScopesProcessor.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/UniformSequentialSubScopesProcessor.cs	(revision 2794)
@@ -20,8 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Core;
 using HeuristicLab.Parameters;
Index: /trunk/sources/HeuristicLab.Operators/3.3/ValuesCollector.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/ValuesCollector.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Operators/3.3/ValuesCollector.cs	(revision 2794)
@@ -20,11 +20,6 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Collections;
 using HeuristicLab.Core;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
Index: /trunk/sources/HeuristicLab.Operators/3.3/VariableCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/VariableCreator.cs	(revision 2794)
+++ /trunk/sources/HeuristicLab.Operators/3.3/VariableCreator.cs	(revision 2794)
@@ -0,0 +1,58 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Core;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Operators {
+  /// <summary>
+  /// An operator which collects the actual values of parameters and clones them into the current scope.
+  /// </summary>
+  [Item("VariableCreator", "An operator which collects the actual values of parameters and clones them into the current scope.")]
+  [Creatable("Test")]
+  [EmptyStorableClass]
+  public class VariableCreator : ValuesCollector {
+    protected ScopeParameter CurrentScopeParameter {
+      get { return (ScopeParameter)Parameters["CurrentScope"]; }
+    }
+    public IScope CurrentScope {
+      get { return CurrentScopeParameter.ActualValue; }
+    }
+
+    public VariableCreator()
+      : base() {
+      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope into which the parameter values are cloned."));
+    }
+
+    public override IExecutionSequence Apply() {
+      IVariable var;
+      foreach (IParameter param in CollectedValues) {
+        CurrentScope.Variables.TryGetValue(param.Name, out var);
+        if (var != null)
+          var.Value = (IItem)param.ActualValue.Clone();
+        else
+          CurrentScope.Variables.Add(new Variable(param.Name, (IItem)param.ActualValue.Clone()));
+      }
+      return base.Apply();
+    }
+  }
+}
Index: unk/sources/HeuristicLab.Operators/3.3/VariableInjector.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/VariableInjector.cs	(revision 2793)
+++ 	(revision )
@@ -1,64 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 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.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Xml;
-using HeuristicLab.Collections;
-using HeuristicLab.Core;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Operators {
-  /// <summary>
-  /// An operator which collects the actual values of parameters and clones them into the current scope.
-  /// </summary>
-  [Item("VariableInjector", "An operator which collects the actual values of parameters and clones them into the current scope.")]
-  [Creatable("Test")]
-  [EmptyStorableClass]
-  public class VariableInjector : ValuesCollector {
-    protected ScopeParameter CurrentScopeParameter {
-      get { return (ScopeParameter)Parameters["CurrentScope"]; }
-    }
-    public IScope CurrentScope {
-      get { return CurrentScopeParameter.ActualValue; }
-    }
-
-    public VariableInjector()
-      : base() {
-      Parameters.Add(new ScopeParameter("CurrentScope", "The current scope into which the parameter values are cloned."));
-    }
-
-    public override IExecutionSequence Apply() {
-      IVariable var;
-      foreach (IParameter param in CollectedValues) {
-        CurrentScope.Variables.TryGetValue(param.Name, out var);
-        if (var != null)
-          var.Value = (IItem)param.ActualValue.Clone();
-        else
-          CurrentScope.Variables.Add(new Variable(param.Name, (IItem)param.ActualValue.Clone()));
-      }
-      return base.Apply();
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Permutation/3.3/HeuristicLab.Permutation-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/HeuristicLab.Permutation-3.3.csproj	(revision 2793)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/HeuristicLab.Permutation-3.3.csproj	(revision 2794)
@@ -82,6 +82,14 @@
   <ItemGroup>
     <None Include="HeuristicLabPermutationPlugin.cs.frame" />
+    <Compile Include="InversionManipulator.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="PermutationManipulator.cs" />
     <Compile Include="HeuristicLabPermutationPlugin.cs" />
+    <Compile Include="OrderCrossover.cs" />
+    <Compile Include="PermutationCrossover.cs" />
+    <Compile Include="Permutation.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="RandomPermutationCreator.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -90,4 +98,12 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.2\HeuristicLab.Common-3.2.csproj">
+      <Project>{1FC004FC-59AF-4249-B1B6-FF25873A20E4}</Project>
+      <Name>HeuristicLab.Common-3.2</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
       <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
@@ -98,15 +114,19 @@
       <Name>HeuristicLab.Data-3.3</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Evolutionary\3.3\HeuristicLab.Evolutionary-3.3.csproj">
-      <Project>{25087811-F74C-4128-BC86-8324271DA13E}</Project>
-      <Name>HeuristicLab.Evolutionary-3.3</Name>
+    <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
+      <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
+      <Name>HeuristicLab.Operators-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
+      <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>
+      <Name>HeuristicLab.Parameters-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
       <Name>HeuristicLab.PluginInfrastructure</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Random\3.3\HeuristicLab.Random-3.3.csproj">
-      <Project>{F4539FB6-4708-40C9-BE64-0A1390AEA197}</Project>
-      <Name>HeuristicLab.Random-3.3</Name>
     </ProjectReference>
   </ItemGroup>
Index: /trunk/sources/HeuristicLab.Permutation/3.3/HeuristicLabPermutationPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/HeuristicLabPermutationPlugin.cs.frame	(revision 2793)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/HeuristicLabPermutationPlugin.cs.frame	(revision 2794)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.PluginInfrastructure;
 
@@ -31,8 +28,11 @@
   [Plugin("HeuristicLab.Permutation", "3.3.0.$WCREV$")]
   [PluginFile("HeuristicLab.Permutation-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.2")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
   [PluginDependency("HeuristicLab.Data", "3.3")]
-  [PluginDependency("HeuristicLab.Evolutionary", "3.3")]
-  [PluginDependency("HeuristicLab.Random", "3.3")]
+  [PluginDependency("HeuristicLab.Operators", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabPermutationPlugin : PluginBase {
   }
Index: /trunk/sources/HeuristicLab.Permutation/3.3/InversionManipulator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/InversionManipulator.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/InversionManipulator.cs	(revision 2794)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -20,27 +20,24 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Permutation {
   /// <summary>
-  /// Manipulates a permutation array by reversing a randomly chosen interval.
+  /// An operator which inverts a randomly chosen part of a permutation.
   /// </summary>
-  public class InversionManipulator : PermutationManipulatorBase {
-    /// <inheritdoc select="summary"/>
-    public override string Description {
-      get { return @"TODO\r\nOperator description still missing ..."; }
-    }
+  [Item("InversionManipulator", "An operator which inverts a randomly chosen part of a permutation.")]
+  [EmptyStorableClass]
+  [Creatable("Test")]
+  public class InversionManipulator : PermutationManipulator {
 
     /// <summary>
-    /// Reverses the specified <paramref name="permutation"/> between two randomly generated positions.
+    /// Inverts a randomly chosen part of a permutation.
     /// </summary>
-    /// <param name="random">The random number generator.</param>
-    /// <param name="permutation">The permutation array to manipulate.</param>
-    /// <returns>The new permuation array with the manipulated data.</returns>
-    public static int[] Apply(IRandom random, int[] permutation) {
-      int[] result = (int[])permutation.Clone();
+    /// <param name="random">A random number generator.</param>
+    /// <param name="permutation">The permutation to manipulate.</param>
+    /// <returns>The new manipulated permutation.</returns>
+    public static Permutation Apply(IRandom random, Permutation permutation) {
+      Permutation result = (Permutation)permutation.Clone();
       int breakPoint1, breakPoint2;
 
@@ -51,5 +48,5 @@
       if (breakPoint2 < breakPoint1) { int h = breakPoint1; breakPoint1 = breakPoint2; breakPoint2 = h; }
 
-      for (int i = 0; i <= (breakPoint2 - breakPoint1); i++) {  // reverse permutation between breakpoints
+      for (int i = 0; i <= (breakPoint2 - breakPoint1); i++) {  // invert permutation between breakpoints
         result[breakPoint1 + i] = permutation[breakPoint2 - i];
       }
@@ -58,12 +55,10 @@
 
     /// <summary>
-    /// Reverses the specified <paramref name="permutation"/> between two randomly generated positions.
+    /// Inverts a randomly chosen part of a permutation.
     /// </summary>
-    /// <remarks>Calls <see cref="Apply"/>.</remarks>
-    /// <param name="scope">The current scope.</param>
-    /// <param name="random">The random number generator.</param>
-    /// <param name="permutation">The permutation array to manipulate.</param>
-    /// <returns>The new permuation array with the manipulated data.</returns>
-    protected override int[] Manipulate(IScope scope, IRandom random, int[] permutation) {
+    /// <param name="random">A random number generator.</param>
+    /// <param name="permutation">The permutation to manipulate.</param>
+    /// <returns>The new manipulated permuation.</returns>
+    protected override Permutation Manipulate(IRandom random, Permutation permutation) {
       return Apply(random, permutation);
     }
Index: /trunk/sources/HeuristicLab.Permutation/3.3/OrderCrossover.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/OrderCrossover.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/OrderCrossover.cs	(revision 2794)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -21,33 +21,29 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.Core;
-using HeuristicLab.Data;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Permutation {
   /// <summary>
-  /// Performs a cross over permutation between two permuation arrays
-  /// by taking a randomly chosen interval from the frist, preserving the positions,
-  /// then the missing values from the second array in the order they occur in the second array.
+  /// An operator which performs an order crossover of two permutations.
   /// </summary>
-  public class OrderCrossover : PermutationCrossoverBase {
-    /// <inheritdoc select="summary"/>
-    public override string Description {
-      get { return @"TODO\r\nOperator description still missing ..."; }
-    }
-
+  /// <remarks>
+  /// Crosses two permutations by taking a randomly chosen interval from the frist permutation, preserving
+  /// the positions, and then the missing values from the second permutation in the order they occur in the
+  /// second permutation.
+  /// </remarks>
+  [Item("OrderCrossover", "An operator which performs an order crossover of two permutations.")]
+  [EmptyStorableClass]
+  [Creatable("Test")]
+  public class OrderCrossover : PermutationCrossover {
     /// <summary>
-    /// Performs a cross over permutation of <paramref name="parent1"/> and 
-    /// <paramref name="parent2"/> by taking a randomly chosen interval from <paramref name="parent1"/>,
-    /// preserving the positions and then the missing values from <paramref name="parent2"/> in the 
-    /// order they occur in <paramref name="parent2"/>.
+    /// Performs an order crossover of two permutations.
     /// </summary>
-    /// <param name="random">The random number generator.</param>
-    /// <param name="parent1">The parent scope 1 to cross over.</param>
-    /// <param name="parent2">The parent scope 2 to cross over.</param>
-    /// <returns>The created cross over permutation as int array.</returns>
-    public static int[] Apply(IRandom random, int[] parent1, int[] parent2) {
-      int[] result = new int[parent1.Length];
+    /// <param name="random">A random number generator.</param>
+    /// <param name="parent1">The first parent permutation to cross.</param>
+    /// <param name="parent2">The second parent permutation to cross.</param>
+    /// <returns>The new permutation resulting from the crossover.</returns>
+    public static Permutation Apply(IRandom random, Permutation parent1, Permutation parent2) {
+      Permutation result = new Permutation(parent1.Length);
       bool[] copied = new bool[result.Length];
 
@@ -74,13 +70,12 @@
 
     /// <summary>
-    /// Performs an order crossover operation for two given parent permutations.
+    /// Performs an order crossover of two permutations.
     /// </summary>
     /// <exception cref="InvalidOperationException">Thrown if there are not exactly two parents.</exception>
-    /// <param name="scope">The current scope.</param>
     /// <param name="random">A random number generator.</param>
     /// <param name="parents">An array containing the two permutations that should be crossed.</param>
-    /// <returns>The newly created permutation, resulting from the crossover operation.</returns>
-    protected override int[] Cross(IScope scope, IRandom random, int[][] parents) {
-      if (parents.Length != 2) throw new InvalidOperationException("ERROR in OrderCrossover: The number of parents is not equal to 2");
+    /// <returns>The new permutation resulting from the crossover.</returns>
+    protected override Permutation Cross(IRandom random, ItemArray<Permutation> parents) {
+      if (parents.Length != 2) throw new InvalidOperationException("Number of parents is not equal to 2.");
       return Apply(random, parents[0], parents[1]);
     }
Index: /trunk/sources/HeuristicLab.Permutation/3.3/Permutation.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/Permutation.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/Permutation.cs	(revision 2794)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -21,41 +21,116 @@
 
 using System;
-using System.Collections.Generic;
 using System.Text;
-using System.Xml;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Permutation {
-  /// <summary>
-  /// The base class for a permutation, which is an ordered combination. 
-  /// </summary>
-  public class Permutation : IntArrayData {
-    /// <summary>
-    /// Initializes a new instance of <see cref="Permutation"/>.
-    /// </summary>
-    public Permutation()
-      : base() {
+  [EmptyStorableClass]
+  [Item("Permutation", "Represents a permutation of integer values.")]
+  [Creatable("Test")]
+  public sealed class Permutation : ValueTypeArrayData<int>, IStringConvertibleMatrixData {
+    public Permutation() : base() { }
+    public Permutation(int length)
+      : base(length) {
+      for (int i = 0; i < length; i++)
+        this[i] = i;
     }
-    /// <summary>
-    /// Initializes a new instance of <see cref="Permutation"/> with the given 
-    /// <paramref name="permutation"/> array.
-    /// </summary>
-    /// <param name="permutation">The permutation array to assign.</param>
-    public Permutation(int[] permutation)
-      : base(permutation) {
+    public Permutation(int length, IRandom random)
+      : this(length) {
+      Randomize(random);
     }
+    public Permutation(int[] elements)
+      : base(elements) {
+      if (!Validate()) throw new ArgumentException("Elements do not represent a valid permutation.");
+    }
+    private Permutation(Permutation elements) : base(elements) { }
 
-    /// <summary>
-    /// Clones the current instance.
-    /// </summary>
-    /// <param name="clonedObjects">A dictionary of all already cloned objects. (Needed to 
-    /// avoid cycles.)</param>
-    /// <returns>The cloned object as <see cref="Permutation"/>.</returns>
-    public override IItem Clone(ICloner cloner) {
-      Permutation clone = new Permutation((int[])Data.Clone());
+    public override IDeepCloneable Clone(Cloner cloner) {
+      Permutation clone = new Permutation(this);
       cloner.RegisterClonedObject(this, clone);
       return clone;
     }
+
+    public bool Validate() {
+      bool[] values = new bool[Length];
+      int value;
+
+      for (int i = 0; i < values.Length; i++)
+        values[i] = false;
+      for (int i = 0; i < Length; i++) {
+        value = this[i];
+        if ((value < 0) || (value >= values.Length)) return false;
+        if (values[value]) return false;
+        values[value] = true;
+      }
+      return true;
+    }
+
+    public void Randomize(IRandom random, int startIndex, int length) {  // Knuth shuffle
+      int index1, index2;
+      int val;
+      for (int i = length - 1; i > 0; i--) {
+        index1 = startIndex + i;
+        index2 = startIndex + random.Next(i + 1);
+        if (index1 != index2) {
+          val = this[index1];
+          this[index1] = this[index2];
+          this[index2] = val;
+        }
+      }
+    }
+    public void Randomize(IRandom random) {
+      Randomize(random, 0, Length);
+    }
+
+    #region IStringConvertibleMatrixData Members
+    StringConvertibleArrayDataDimensions IStringConvertibleMatrixData.Dimensions {
+      get { return StringConvertibleArrayDataDimensions.Rows; }
+    }
+    int IStringConvertibleMatrixData.Rows {
+      get { return Length; }
+      set { Length = value; }
+    }
+    int IStringConvertibleMatrixData.Columns {
+      get { return 1; }
+      set { throw new NotSupportedException("Columns cannot be changed."); }
+    }
+
+    bool IStringConvertibleMatrixData.Validate(string value, out string errorMessage) {
+      int val;
+      bool valid = int.TryParse(value, out val);
+      errorMessage = string.Empty;
+      if (!valid) {
+        StringBuilder sb = new StringBuilder();
+        sb.Append("Invalid Value (Valid Value Format: \"");
+        sb.Append(FormatPatterns.GetIntFormatPattern());
+        sb.Append("\")");
+        errorMessage = sb.ToString();
+      }
+      return valid;
+    }
+    string IStringConvertibleMatrixData.GetValue(int rowIndex, int columIndex) {
+      return this[rowIndex].ToString();
+    }
+    bool IStringConvertibleMatrixData.SetValue(string value, int rowIndex, int columnIndex) {
+      int val;
+      if (int.TryParse(value, out val)) {
+        this[rowIndex] = val;
+        return true;
+      } else {
+        return false;
+      }
+    }
+    event EventHandler<EventArgs<int, int>> IStringConvertibleMatrixData.ItemChanged {
+      add { base.ItemChanged += value; }
+      remove { base.ItemChanged -= value; }
+    }
+    event EventHandler IStringConvertibleMatrixData.Reset {
+      add { base.Reset += value; }
+      remove { base.Reset -= value; }
+    }
+    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.Permutation/3.3/PermutationCrossover.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/PermutationCrossover.cs	(revision 2794)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/PermutationCrossover.cs	(revision 2794)
@@ -0,0 +1,58 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Core;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Permutation {
+  /// <summary>
+  /// A base class for permutation crossover operators.
+  /// </summary>
+  [Item("PermutationCrossover", "A base class for permutation crossover operators.")]
+  [EmptyStorableClass]
+  public abstract class PermutationCrossover : SingleSuccessorOperator {
+    public LookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+    public SubScopesLookupParameter<Permutation> ParentsParameter {
+      get { return (SubScopesLookupParameter<Permutation>)Parameters["Parents"]; }
+    }
+    public LookupParameter<Permutation> ChildParameter {
+      get { return (LookupParameter<Permutation>)Parameters["Child"]; }
+    }
+
+    protected PermutationCrossover()
+      : base() {
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic crossover operators."));
+      Parameters.Add(new SubScopesLookupParameter<Permutation>("Parents", "The parent permutations which should be crossed."));
+      Parameters.Add(new LookupParameter<Permutation>("Child", "The child permutation resulting from the crossover."));
+    }
+
+    public sealed override IExecutionSequence Apply() {
+      ChildParameter.ActualValue = Cross(RandomParameter.ActualValue, ParentsParameter.ActualValue);
+      return base.Apply();
+    }
+
+    protected abstract Permutation Cross(IRandom random, ItemArray<Permutation> parents);
+  }
+}
Index: unk/sources/HeuristicLab.Permutation/3.3/PermutationCrossoverBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/PermutationCrossoverBase.cs	(revision 2793)
+++ 	(revision )
@@ -1,71 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.Text;
-using HeuristicLab.Core;
-using HeuristicLab.Evolutionary;
-
-namespace HeuristicLab.Permutation {
-  /// <summary>
-  /// Base class for all permutation crossover operators.
-  /// </summary>
-  public abstract class PermutationCrossoverBase : CrossoverBase {
-    /// <summary>
-    /// Initializes a new instance of <see cref="PermutationCrossoverBase"/> with one variable info
-    /// (<c>Permutation</c>).
-    /// </summary>
-    public PermutationCrossoverBase()
-      : base() {
-      AddVariableInfo(new VariableInfo("Permutation", "Parent and child permutations", typeof(Permutation), VariableKind.In | VariableKind.New));
-    }
-
-    /// <summary>
-    /// Performs a crossover by calling <see cref="Cross(HeuristicLab.Core.IScope, HeuristicLab.Core.IRandom, int[][]"/>
-    /// and adds the created permutation to the current scope.
-    /// </summary>
-    /// <exception cref="InvalidOperationException">Thrown if the parents have different lengths.</exception>
-    /// <param name="scope">The current scope which represents a new child.</param>
-    /// <param name="random">A random number generator.</param>
-    protected sealed override void Cross(IScope scope, IRandom random) {
-      int[][] parents = new int[scope.SubScopes.Count][];
-      int length = -1;
-      for (int i = 0; i < scope.SubScopes.Count; i++) {
-        parents[i] = scope.SubScopes[i].GetVariableValue<Permutation>("Permutation", false).Data;
-        if (i == 0) length = parents[i].Length;
-        else if (parents[i].Length != length) throw new InvalidOperationException("ERROR in PermutationCrossoverBase: Cannot apply crossover to permutations of different length");
-      }
-
-      int[] result = Cross(scope, random, parents);
-      scope.AddVariable(new Variable(scope.TranslateName("Permutation"), new Permutation(result)));
-    }
-
-    /// <summary>
-    /// Performs a crossover of multiple permutations.
-    /// </summary>
-    /// <param name="scope">The current scope.</param>
-    /// <param name="random">A random number generator.</param>
-    /// <param name="parents">An array containing all parent permutations.</param>
-    /// <returns>The newly created permutation, resulting from the crossover operation.</returns>
-    protected abstract int[] Cross(IScope scope, IRandom random, int[][] parents);
-  }
-}
Index: /trunk/sources/HeuristicLab.Permutation/3.3/PermutationManipulator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/PermutationManipulator.cs	(revision 2794)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/PermutationManipulator.cs	(revision 2794)
@@ -0,0 +1,54 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Core;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Permutation {
+  /// <summary>
+  /// A base class for permutation manipulation operators.
+  /// </summary>
+  [Item("PermutationManipulator", "A base class for permutation manipulation operators.")]
+  [EmptyStorableClass]
+  public abstract class PermutationManipulator : SingleSuccessorOperator {
+    public LookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+    public LookupParameter<Permutation> PermutationParameter {
+      get { return (LookupParameter<Permutation>)Parameters["Permutation"]; }
+    }
+
+    protected PermutationManipulator()
+      : base() {
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
+      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The permutation which should be manipulated."));
+    }
+
+    public sealed override IExecutionSequence Apply() {
+      PermutationParameter.ActualValue = Manipulate(RandomParameter.ActualValue, PermutationParameter.ActualValue);
+      return base.Apply();
+    }
+
+    protected abstract Permutation Manipulate(IRandom random, Permutation permutation);
+  }
+}
Index: unk/sources/HeuristicLab.Permutation/3.3/PermutationManipulatorBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/PermutationManipulatorBase.cs	(revision 2793)
+++ 	(revision )
@@ -1,66 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.Text;
-using HeuristicLab.Core;
-
-namespace HeuristicLab.Permutation {
-  /// <summary>
-  /// Base class for manipulation permutation.
-  /// </summary>
-  public abstract class PermutationManipulatorBase : OperatorBase {
-    /// <summary>
-    /// Initializes a new instance of <see cref="PermutationManipulatorBase"/> with two variable infos
-    /// (<c>Random</c> and <c>Permutation</c>).
-    /// </summary>
-    public PermutationManipulatorBase()
-      : base() {
-      AddVariableInfo(new VariableInfo("Random", "Pseudo random number generator", typeof(IRandom), VariableKind.In));
-      AddVariableInfo(new VariableInfo("Permutation", "Permutation to manipulate", typeof(Permutation), VariableKind.In | VariableKind.Out));
-    }
-
-    /// <summary>
-    /// Manipulates the permutation data of the given <paramref name="scope"/> according to a
-    /// specified random number generator.
-    /// </summary>
-    /// <remarks>Calls <see cref="Manipulate"/>.</remarks>
-    /// <param name="scope">The scope of the permutation data and the random number generator.</param>
-    /// <returns><c>null</c>.</returns>
-    public override IOperation Apply(IScope scope) {
-      IRandom random = GetVariableValue<IRandom>("Random", scope, true);
-      Permutation perm = GetVariableValue<Permutation>("Permutation", scope, false);
-      perm.Data = Manipulate(scope, random, perm.Data);
-      return null;
-    }
-
-    /// <summary>
-    /// Manipulates the given <paramref name="permutation"/> with the specified <paramref name="random"/> 
-    /// number generator.
-    /// </summary>
-    /// <param name="scope">The scope of the variables.</param>
-    /// <param name="random">The random number generator.</param>
-    /// <param name="permutation">The permutation to manipulate.</param>
-    /// <returns>The manipulated permutation as int array.</returns>
-    protected abstract int[] Manipulate(IScope scope, IRandom random, int[] permutation);
-  }
-}
Index: /trunk/sources/HeuristicLab.Permutation/3.3/RandomPermutationCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/RandomPermutationCreator.cs	(revision 2794)
+++ /trunk/sources/HeuristicLab.Permutation/3.3/RandomPermutationCreator.cs	(revision 2794)
@@ -0,0 +1,58 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Permutation {
+  /// <summary>
+  /// An operator which creates a new random permutation of integer values.
+  /// </summary>
+  [Item("RandomPermutationCreator", "An operator which creates a new random permutation of integer values.")]
+  [EmptyStorableClass]
+  [Creatable("Test")]
+  public sealed class RandomPermutationCreator : SingleSuccessorOperator {
+    public LookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+    public ValueLookupParameter<IntData> LengthParameter {
+      get { return (ValueLookupParameter<IntData>)Parameters["Length"]; }
+    }
+    public LookupParameter<Permutation> PermutationParameter {
+      get { return (LookupParameter<Permutation>)Parameters["Permutation"]; }
+    }
+
+    public RandomPermutationCreator()
+      : base() {
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used to initialize the new random permutation."));
+      Parameters.Add(new ValueLookupParameter<IntData>("Length", "The length of the new random permutation."));
+      Parameters.Add(new LookupParameter<Permutation>("Permutation", "The new random permutation."));
+    }
+
+    public override IExecutionSequence Apply() {
+      PermutationParameter.ActualValue = new Permutation(LengthParameter.ActualValue.Value, RandomParameter.ActualValue);
+      return base.Apply();
+    }
+  }
+}
Index: unk/sources/HeuristicLab.Permutation/3.3/RandomPermutationGenerator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Permutation/3.3/RandomPermutationGenerator.cs	(revision 2793)
+++ 	(revision )
@@ -1,88 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.Text;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.Permutation {
-  /// <summary>
-  /// Generates a randomly shuffled permuation.
-  /// </summary>
-  public class RandomPermutationGenerator : OperatorBase {
-    /// <inheritdoc select="summary"/>
-    public override string Description {
-      get { return @"TODO\r\nOperator description still missing ..."; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="RandomPermutationGenerator"/> with three variable infos
-    /// (<c>Length</c>, <c>Random</c> and <c>Permutation</c>).
-    /// </summary>
-    public RandomPermutationGenerator()
-      : base() {
-      AddVariableInfo(new VariableInfo("Length", "Permutation length", typeof(IntData), VariableKind.In));
-      AddVariableInfo(new VariableInfo("Random", "Pseudo random number generator", typeof(IRandom), VariableKind.In));
-      AddVariableInfo(new VariableInfo("Permutation", "Created random permutation", typeof(Permutation), VariableKind.New));
-    }
-
-    /// <summary>
-    /// Generates a randomly shuffled permutation.
-    /// </summary>
-    /// <param name="random">The random number generator.</param>
-    /// <param name="length">The length of the permutation to create.</param>
-    /// <returns>The generated permuation as int array.</returns>
-    public static int[] Apply(IRandom random, int length) {
-      int[] perm = new int[length];
-
-      for (int i = 0; i < length; i++)
-        perm[i] = i;
-
-      // Knuth shuffle
-      int index, tmp;
-      for (int i = 0; i < length - 1; i++) {
-        index = random.Next(i, length);
-        tmp = perm[i];
-        perm[i] = perm[index];
-        perm[index] = tmp;
-      }
-      return perm;
-    }
-
-    /// <summary>
-    /// Generates a randomly shuffled permutation.
-    /// </summary>
-    /// <remarks>Calls <see cref="Apply(HeuristicLab.Core.IRandom, int)"/>.</remarks>
-    /// <param name="scope">The current scope with the variables.</param>
-    /// <returns><c>null</c>.</returns>
-    public override IOperation Apply(IScope scope) {
-      IRandom random = GetVariableValue<IRandom>("Random", scope, true);
-      IntData length = GetVariableValue<IntData>("Length", scope, true);
-
-      int[] perm = Apply(random, length.Data);
-      scope.AddVariable(new Variable(scope.TranslateName("Permutation"), new Permutation(perm)));
-
-      return null;
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Random/3.3/HeuristicLab.Random-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Random/3.3/HeuristicLab.Random-3.3.csproj	(revision 2793)
+++ /trunk/sources/HeuristicLab.Random/3.3/HeuristicLab.Random-3.3.csproj	(revision 2794)
@@ -86,5 +86,4 @@
   <ItemGroup>
     <None Include="HeuristicLabRandomPlugin.cs.frame" />
-    <Compile Include="RandomInitializer.cs" />
     <Compile Include="HeuristicLabRandomPlugin.cs" />
     <Compile Include="MersenneTwister.cs">
@@ -95,4 +94,5 @@
     </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="RandomCreator.cs" />
   </ItemGroup>
   <ItemGroup>
Index: /trunk/sources/HeuristicLab.Random/3.3/HeuristicLabRandomPlugin.cs.frame
===================================================================
--- /trunk/sources/HeuristicLab.Random/3.3/HeuristicLabRandomPlugin.cs.frame	(revision 2793)
+++ /trunk/sources/HeuristicLab.Random/3.3/HeuristicLabRandomPlugin.cs.frame	(revision 2794)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using HeuristicLab.PluginInfrastructure;
 
Index: /trunk/sources/HeuristicLab.Random/3.3/MersenneTwister.cs
===================================================================
--- /trunk/sources/HeuristicLab.Random/3.3/MersenneTwister.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Random/3.3/MersenneTwister.cs	(revision 2794)
@@ -33,7 +33,4 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
Index: /trunk/sources/HeuristicLab.Random/3.3/NormalDistributedRandom.cs
===================================================================
--- /trunk/sources/HeuristicLab.Random/3.3/NormalDistributedRandom.cs	(revision 2793)
+++ /trunk/sources/HeuristicLab.Random/3.3/NormalDistributedRandom.cs	(revision 2794)
@@ -21,8 +21,4 @@
 
 using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
-using System.Globalization;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
Index: /trunk/sources/HeuristicLab.Random/3.3/RandomCreator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Random/3.3/RandomCreator.cs	(revision 2794)
+++ /trunk/sources/HeuristicLab.Random/3.3/RandomCreator.cs	(revision 2794)
@@ -0,0 +1,73 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Random;
+
+namespace HeuristicLab.Operators {
+  /// <summary>
+  /// An operator which creates a new pseudo random number generator.
+  /// </summary>
+  [Item("RandomCreator", "An operator which creates a new pseudo random number generator.")]
+  [EmptyStorableClass]
+  [Creatable("Test")]
+  public sealed class RandomCreator : SingleSuccessorOperator {
+    public ValueLookupParameter<BoolData> SetSeedRandomlyParameter {
+      get { return (ValueLookupParameter<BoolData>)Parameters["SetSeedRandomly"]; }
+    }
+    public ValueLookupParameter<IntData> SeedParameter {
+      get { return (ValueLookupParameter<IntData>)Parameters["Seed"]; }
+    }
+    public LookupParameter<IRandom> RandomParameter {
+      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
+    }
+    public BoolData SetSeedRandomly {
+      get { return SetSeedRandomlyParameter.Value; }
+      set { SetSeedRandomlyParameter.Value = value; }
+    }
+    public IntData Seed {
+      get { return SeedParameter.Value; }
+      set { SeedParameter.Value = value; }
+    }
+
+    public RandomCreator()
+      : base() {
+      Parameters.Add(new ValueLookupParameter<BoolData>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolData(true)));
+      Parameters.Add(new ValueLookupParameter<IntData>("Seed", "The random seed used to initialize the new pseudo random number generator.", new IntData(0)));
+      Parameters.Add(new LookupParameter<IRandom>("Random", "The new pseudo random number generator which is initialized with the given seed."));
+    }
+
+    public override IExecutionSequence Apply() {
+      bool setSeedRandomly = SetSeedRandomlyParameter.ActualValue == null ? true : SetSeedRandomlyParameter.ActualValue.Value;
+      IntData seed = SeedParameter.ActualValue;
+      IRandom random = RandomParameter.ActualValue;
+
+      if (seed == null) seed = new IntData(0);
+      if (setSeedRandomly) seed.Value = new System.Random().Next();
+      RandomParameter.ActualValue = new MersenneTwister((uint)seed.Value);
+
+      return base.Apply();
+    }
+  }
+}
Index: unk/sources/HeuristicLab.Random/3.3/RandomInitializer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Random/3.3/RandomInitializer.cs	(revision 2793)
+++ 	(revision )
@@ -1,76 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 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.Collections.Generic;
-using System.Text;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Random;
-
-namespace HeuristicLab.Operators {
-  /// <summary>
-  /// An operator which initializes a pseudo random number generator.
-  /// </summary>
-  [Item("RandomInitializer", "An operator which initializes a pseudo random number generator.")]
-  [EmptyStorableClass]
-  [Creatable("Test")]
-  public sealed class RandomInitializer : SingleSuccessorOperator {
-    public ValueLookupParameter<BoolData> SetSeedRandomlyParameter {
-      get { return (ValueLookupParameter<BoolData>)Parameters["SetSeedRandomly"]; }
-    }
-    public ValueLookupParameter<IntData> SeedParameter {
-      get { return (ValueLookupParameter<IntData>)Parameters["Seed"]; }
-    }
-    public LookupParameter<IRandom> RandomParameter {
-      get { return (LookupParameter<IRandom>)Parameters["Random"]; }
-    }
-    public BoolData SetSeedRandomly {
-      get { return SetSeedRandomlyParameter.Value; }
-      set { SetSeedRandomlyParameter.Value = value; }
-    }
-    public IntData Seed {
-      get { return SeedParameter.Value; }
-      set { SeedParameter.Value = value; }
-    }
-
-    public RandomInitializer()
-      : base() {
-      Parameters.Add(new ValueLookupParameter<BoolData>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolData(true)));
-      Parameters.Add(new ValueLookupParameter<IntData>("Seed", "The random seed used to initialize the pseudo random number generator.", new IntData(0)));
-      Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be initialized with the given seed."));
-    }
-
-    public override IExecutionSequence Apply() {
-      bool setSeedRandomly = SetSeedRandomlyParameter.ActualValue == null ? true : SetSeedRandomlyParameter.ActualValue.Value;
-      IntData seed = SeedParameter.ActualValue;
-      IRandom random = RandomParameter.ActualValue;
-
-      if (seed == null) seed = new IntData(0);
-      if (setSeedRandomly) seed.Value = new System.Random().Next();
-      RandomParameter.ActualValue = new MersenneTwister((uint)seed.Value);
-
-      return base.Apply();
-    }
-  }
-}
