Index: branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs
===================================================================
--- branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs	(revision 12086)
+++ branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs	(revision 12092)
@@ -274,5 +274,4 @@
 
       layerVariableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Layer", new IntValue(0)));
-      //layerVariableCreator.CollectedValues.Add(new ValueParameter<ResultCollection>("Results", new ResultCollection()));
       layerVariableCreator.Successor = layerSolutionsCreator;
 
@@ -457,6 +456,4 @@
       MainLoop.MainOperator.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
       MainLoop.MainOperator.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
-      MainLoop.EldersEmigrator.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
-      MainLoop.EldersEmigrator.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
       MainLoop.LayerUpdator.SolutionsCreator.NumberOfSolutionsParameter.ActualName = PopulationSizeParameter.Name;
     }
Index: branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/EldersEmigrator.cs
===================================================================
--- branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/EldersEmigrator.cs	(revision 12086)
+++ branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/EldersEmigrator.cs	(revision 12092)
@@ -24,4 +24,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Operators;
+using HeuristicLab.Optimization.Operators;
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -32,12 +33,4 @@
   [StorableClass]
   public sealed class EldersEmigrator : AlgorithmOperator {
-
-    public IValueLookupParameter<BoolValue> MaximizationParameter {
-      get { return (IValueLookupParameter<BoolValue>)Parameters["Maximization"]; }
-    }
-    public IScopeTreeLookupParameter<DoubleValue> QualityParameter {
-      get { return (IScopeTreeLookupParameter<DoubleValue>)Parameters["Quality"]; }
-    }
-
     [StorableConstructor]
     private EldersEmigrator(bool deserializing)
@@ -50,7 +43,4 @@
     public EldersEmigrator()
       : base() {
-      Parameters.Add(new ValueLookupParameter<BoolValue>("Maximization", "True if the problem is a maximization problem, otherwise false."));
-      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The value which represents the quality of a solution."));
-
       var selectorProsessor = new UniformSubScopesProcessor();
       var eldersSelector = new EldersSelector();
@@ -59,7 +49,5 @@
       var mergingReducer = new MergingReducer();
       var subScopesCounter = new SubScopesCounter();
-      // TODO: if expression calculator supports int, use expression calculator
-      var countCalculator = new MergingReducerCalculator() { Name = "LayerPopulationSize = Min(LayerPopulationSize, PopulationSize)" };
-      //var countCalculator = new ExpressionCalculator() { Name = "NumSubScopes = Min(NumSubScopes, PopulationSize)" };
+      var countCalculator = new ExpressionCalculator() { Name = "LayerPopulationSize = Min(LayerPopulationSize, PopulationSize)" };
       var bestSelector = new BestSelector();
       var rightReducer = new RightReducer();
@@ -85,13 +73,11 @@
       subScopesCounter.Successor = countCalculator;
 
-      //countCalculator.CollectedValues.Add(new LookupParameter<IntValue>("PopulationSize"));
-      //countCalculator.CollectedValues.Add(new LookupParameter<IntValue>("NumSubScopes"));
-      //countCalculator.ExpressionParameter.Value = new StringValue("NumSubScopes PopulationSize NumSubScopes PopulationSize < if");
-      //countCalculator.ExpressionResultParameter.ActualName = "NumSubScopes";
+      countCalculator.CollectedValues.Add(new LookupParameter<IntValue>("PopulationSize"));
+      countCalculator.CollectedValues.Add(new LookupParameter<IntValue>("LayerPopulationSize"));
+      countCalculator.ExpressionParameter.Value = new StringValue("LayerPopulationSize PopulationSize LayerPopulationSize PopulationSize < if toint");
+      countCalculator.ExpressionResultParameter.ActualName = "LayerPopulationSize";
       countCalculator.Successor = bestSelector;
 
       bestSelector.NumberOfSelectedSubScopesParameter.ActualName = "LayerPopulationSize";
-      bestSelector.QualityParameter.ActualName = QualityParameter.Name;
-      bestSelector.MaximizationParameter.ActualName = MaximizationParameter.Name;
       bestSelector.CopySelected = new BoolValue(false);
       bestSelector.Successor = rightReducer;
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 12086)
+++ branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/HeuristicLab.Algorithms.ALPS-3.3.csproj	(revision 12092)
@@ -147,5 +147,4 @@
     <Compile Include="NumberOfSelectedSubScopesCalculator.cs" />
     <Compile Include="OpenNewLayerCalculator.cs" />
-    <Compile Include="MergingReducerCalculator.cs" />
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
Index: branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/MergingReducerCalculator.cs
===================================================================
--- branches/ALPS/HeuristicLab.Algorithms.ALPS/3.3/MergingReducerCalculator.cs	(revision 12086)
+++ 	(revision )
@@ -1,64 +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 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("MergingReducerCalculator", "")]
-  [StorableClass]
-  public class MergingReducerCalculator : SingleSuccessorOperator {
-    private ILookupParameter<IntValue> PopulationSizeParameter {
-      get { return (ILookupParameter<IntValue>)Parameters["PopulationSize"]; }
-    }
-    private ILookupParameter<IntValue> LayerPopulationSizeParameter {
-      get { return (ILookupParameter<IntValue>)Parameters["LayerPopulationSize"]; }
-    }
-
-    [StorableConstructor]
-    private MergingReducerCalculator(bool deserializing)
-      : base(deserializing) { }
-    private MergingReducerCalculator(MergingReducerCalculator original, Cloner cloner)
-      : base(original, cloner) { }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new MergingReducerCalculator(this, cloner);
-    }
-    public MergingReducerCalculator()
-      : base() {
-      Parameters.Add(new LookupParameter<IntValue>("PopulationSize"));
-      Parameters.Add(new LookupParameter<IntValue>("LayerPopulationSize"));
-    }
-
-    public override IOperation Apply() {
-      int populationSize = PopulationSizeParameter.ActualValue.Value;
-      int numSubScopes = LayerPopulationSizeParameter.ActualValue.Value;
-
-      LayerPopulationSizeParameter.ActualValue.Value = Math.Min(populationSize, numSubScopes);
-
-      return base.Apply();
-    }
-  }
-}
