Index: branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs
===================================================================
--- branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs	(revision 12991)
+++ branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs	(revision 12992)
@@ -41,6 +41,6 @@
   public sealed class AlpsGeneticAlgorithm : Alps {
     #region Parameter Properties
-    private IValueParameter<IntArray> PopulationSizeParameter {
-      get { return (IValueParameter<IntArray>)Parameters["PopulationSize"]; }
+    private IValueParameter<IntValue> PopulationSizeParameter {
+      get { return (IValueParameter<IntValue>)Parameters["PopulationSize"]; }
     }
     public IConstrainedValueParameter<ISelector> SelectorParameter {
@@ -68,5 +68,5 @@
 
     #region Properties
-    public IntArray PopulationSize {
+    public IntValue PopulationSize {
       get { return PopulationSizeParameter.Value; }
       set { PopulationSizeParameter.Value = value; }
@@ -130,5 +130,5 @@
     public AlpsGeneticAlgorithm()
       : base() {
-      Parameters.Add(new ValueParameter<IntArray>("PopulationSize", "The size of the population of solutions each layer.", new IntArray(new[] { 100 })));
+      Parameters.Add(new ValueParameter<IntValue>("PopulationSize", "The size of the population of solutions each layer.", new IntValue(100)));
       Parameters.Add(new ConstrainedValueParameter<ISelector>("Selector", "The operator used to select solutions for reproduction."));
       Parameters.Add(new ConstrainedValueParameter<ICrossover>("Crossover", "The operator used to cross solutions."));
@@ -141,5 +141,5 @@
       var globalRandomCreator = new RandomCreator();
       var layer0Creator = new SubScopesCreator() { Name = "Create Layer Zero" };
-      var layer0Processor = new LayerUniformSubScopesProcessor();
+      var layer0Processor = new UniformSubScopesProcessor();
       var localRandomCreator = new LocalRandomCreator();
       var layerVariableCreator = new VariableCreator();
Index: branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithmMainLoop.cs
===================================================================
--- branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithmMainLoop.cs	(revision 12991)
+++ branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithmMainLoop.cs	(revision 12992)
@@ -90,5 +90,5 @@
       var matingPoolPreSorter = new SubScopesSorter() { Name = "MatingPoolPreSorter" };
       var matingPoolCreator = new MatingPoolCreator() { Name = "Create Mating Pools" };
-      var matingPoolProcessor = new LayerUniformSubScopesProcessor();
+      var matingPoolProcessor = new UniformSubScopesProcessor();
       var initializeLayer = new Assigner() { Name = "Reset LayerEvaluatedSolutions" };
       var mainOperator = CreatePreparedGeneticAlgorithmMainLoop();
@@ -97,5 +97,5 @@
       var eldersEmigrator = new EldersEmigrator() { Name = "Emigrate Elders" };
       var layerUpdator = new LayerUpdator(mainOperator) { Name = "Update Layers" };
-      var layerAnalyzerProcessor = new LayerUniformSubScopesProcessor();
+      var layerAnalyzerProcessor = new UniformSubScopesProcessor();
       var layerAnalyzerPlaceholder = new Placeholder() { Name = "LayerAnalyzer (Placeholder)" };
       var analyzerPlaceholder = new Placeholder() { Name = "Analyzer (Placeholder)" };
Index: branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/EldersEmigrator.cs
===================================================================
--- branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/EldersEmigrator.cs	(revision 12991)
+++ branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/EldersEmigrator.cs	(revision 12992)
@@ -46,5 +46,5 @@
       var eldersSelector = new EldersSelector();
       var shiftToRightMigrator = new ShiftToRightMigrator();
-      var mergingProsessor = new LayerUniformSubScopesProcessor();
+      var mergingProsessor = new UniformSubScopesProcessor();
       var mergingReducer = new MergingReducer();
       var subScopesCounter = new SubScopesCounter();
Index: branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/HeuristicLab.Algorithms.ALPS-3.3.csproj
===================================================================
--- branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/HeuristicLab.Algorithms.ALPS-3.3.csproj	(revision 12991)
+++ branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/HeuristicLab.Algorithms.ALPS-3.3.csproj	(revision 12992)
@@ -145,5 +145,4 @@
     <Compile Include="LayerCreator.cs" />
     <Compile Include="LayerSorter.cs" />
-    <Compile Include="LayerUniformSubScopesProcessor.cs" />
     <Compile Include="LayerUpdator.cs" />
     <Compile Include="MatingPoolCreator.cs" />
Index: branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/LayerUniformSubScopesProcessor.cs
===================================================================
--- branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/LayerUniformSubScopesProcessor.cs	(revision 12991)
+++ 	(revision )
@@ -1,120 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Operators;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Algorithms.ALPS {
-  [Item("LayerUniformSubScopesProcessor", "")]
-  [StorableClass]
-  public sealed class LayerUniformSubScopesProcessor : SingleSuccessorOperator {
-    private OperatorParameter OperatorParameter {
-      get { return (OperatorParameter)Parameters["Operator"]; }
-    }
-    public ValueLookupParameter<BoolValue> ParallelParameter {
-      get { return (ValueLookupParameter<BoolValue>)Parameters["Parallel"]; }
-    }
-
-    private ILookupParameter<IntArray> PopulationSizeParameter {
-      get { return (ILookupParameter<IntArray>)Parameters["PopulationSize"]; }
-    }
-
-    public IOperator Operator {
-      get { return OperatorParameter.Value; }
-      set { OperatorParameter.Value = value; }
-    }
-    public BoolValue Parallel {
-      get { return ParallelParameter.Value; }
-      set { ParallelParameter.Value = value; }
-    }
-
-    [StorableConstructor]
-    private LayerUniformSubScopesProcessor(bool deserializing) : base(deserializing) { }
-    private LayerUniformSubScopesProcessor(LayerUniformSubScopesProcessor original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public LayerUniformSubScopesProcessor()
-      : base() {
-      Parameters.Add(new OperatorParameter("Operator", "The operator which should be applied on all sub-scopes of the current scope."));
-      Parameters.Add(new ValueLookupParameter<BoolValue>("Parallel", "True if the operator should be applied in parallel on all sub-scopes, otherwise false.", new BoolValue(false)));
-
-      Parameters.Add(new LookupParameter<IntArray>("PopulationSize"));
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new LayerUniformSubScopesProcessor(this, cloner);
-    }
-
-    public override IOperation Apply() {
-      var next = new OperationCollection(Successor != null ? ExecutionContext.CreateOperation(Successor) : null);
-      if (Operator != null) {
-        var scopes = ExecutionContext.Scope.SubScopes;
-        var inner = new OperationCollection() {
-          Parallel = Parallel == null ? false : Parallel.Value
-        };
-        for (int i = 0; i < scopes.Count; i++) {
-          var layerParameters = new LayerIntermediateParameter {
-            new ValueParameter<IntValue>(PopulationSizeParameter.ActualName, new IntValue(PopulationSizeParameter.ActualValue[Math.Min(i, PopulationSizeParameter.ActualValue.Length - 1)]))
-          };
-          var immediateContext = new ExecutionContext(ExecutionContext.Parent, layerParameters, scopes[i]);
-          inner.Add(immediateContext.CreateChildOperation(Operator, scopes[i]));
-        }
-        next.Insert(0, inner);
-      }
-      return next;
-    }
-  }
-
-  [Item("LayerIntermediateParameter", "")]
-  [StorableClass]
-  public sealed class LayerIntermediateParameter : ParameterizedNamedItem, IEnumerable<IParameter> {
-    [StorableConstructor]
-    private LayerIntermediateParameter(bool deserializing) : base(deserializing) { }
-    private LayerIntermediateParameter(LayerIntermediateParameter original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public LayerIntermediateParameter()
-      : base("LayerIntermediateParameter") {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new LayerIntermediateParameter(this, cloner);
-    }
-
-    public void Add(IParameter parameter) {
-      Parameters.Add(parameter);
-    }
-
-    public IEnumerator<IParameter> GetEnumerator() {
-      return Parameters.GetEnumerator();
-    }
-    IEnumerator IEnumerable.GetEnumerator() {
-      return GetEnumerator();
-    }
-  }
-}
Index: branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/LayerUpdator.cs
===================================================================
--- branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/LayerUpdator.cs	(revision 12991)
+++ branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/LayerUpdator.cs	(revision 12992)
@@ -62,5 +62,5 @@
       var newLayerSelector = new RightSelector();
       var newLayerProsessor = new SubScopesProcessor() { Name = "NewLayerProcessor" };
-      var newLayerLayerProcessor = new LayerUniformSubScopesProcessor();
+      var newLayerLayerProcessor = new UniformSubScopesProcessor();
       var newLayerReducer = new MergingReducer();
       var layerInitializer = new Assigner() { Name = "Init Layer" };
@@ -71,5 +71,5 @@
       var regenerateLayerZeroSelector = new LeftSelector();
       var regenerateLayerZeroProsessor = new SubScopesProcessor() { Name = "LayerZeroProcessor" };
-      var regenerateLayerZeroLayerProsessor = new LayerUniformSubScopesProcessor();
+      var regenerateLayerZeroLayerProsessor = new UniformSubScopesProcessor();
       var regenerateLayerZeroReducer = new MergingReducer();
       var layerSorter = new LayerSorter();
