Index: /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs	(revision 5351)
+++ /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithm.cs	(revision 5352)
@@ -135,5 +135,5 @@
     }
     private GeneticAlgorithmMainLoop GeneticAlgorithmMainLoop {
-      get { return (GeneticAlgorithmMainLoop)((Assigner)SolutionsCreator.Successor).Successor; }
+      get { return (GeneticAlgorithmMainLoop)((SubScopesCounter)SolutionsCreator.Successor).Successor; }
     }
     [Storable]
@@ -156,5 +156,5 @@
       RandomCreator randomCreator = new RandomCreator();
       SolutionsCreator solutionsCreator = new SolutionsCreator();
-      Assigner assigner = new Assigner();
+      SubScopesCounter subScopesCounter = new SubScopesCounter();
       GeneticAlgorithmMainLoop geneticAlgorithmMainLoop = new GeneticAlgorithmMainLoop();
       OperatorGraph.InitialOperator = randomCreator;
@@ -168,10 +168,9 @@
 
       solutionsCreator.NumberOfSolutionsParameter.ActualName = PopulationSizeParameter.Name;
-      solutionsCreator.Successor = assigner;
-
-      assigner.Name = "Initialize EvaluatedSolutions";
-      assigner.LeftSideParameter.ActualName = "EvaluatedSolutions";
-      assigner.RightSideParameter.ActualName = PopulationSizeParameter.Name;
-      assigner.Successor = geneticAlgorithmMainLoop;
+      solutionsCreator.Successor = subScopesCounter;
+
+      subScopesCounter.Name = "Initialize EvaluatedSolutions";
+      subScopesCounter.ValueParameter.ActualName = "EvaluatedSolutions";
+      subScopesCounter.Successor = geneticAlgorithmMainLoop;
 
       geneticAlgorithmMainLoop.SelectorParameter.ActualName = SelectorParameter.Name;
Index: /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithmMainLoop.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithmMainLoop.cs	(revision 5351)
+++ /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/GeneticAlgorithmMainLoop.cs	(revision 5352)
@@ -134,10 +134,10 @@
       UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor();
       Placeholder evaluator = new Placeholder();
-      IntCounter intCounter1 = new IntCounter();
+      SubScopesCounter subScopesCounter = new SubScopesCounter();
       SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor();
       BestSelector bestSelector = new BestSelector();
       RightReducer rightReducer = new RightReducer();
       MergingReducer mergingReducer = new MergingReducer();
-      IntCounter intCounter2 = new IntCounter();
+      IntCounter intCounter = new IntCounter();
       Comparator comparator = new Comparator();
       ResultsCollector resultsCollector2 = new ResultsCollector();
@@ -175,8 +175,6 @@
       evaluator.OperatorParameter.ActualName = "Evaluator";
 
-      intCounter1.Name = "Increment EvaluatedSolutions";
-      intCounter1.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
-      intCounter1.Increment = null;
-      intCounter1.IncrementParameter.ActualName = PopulationSizeParameter.Name;
+      subScopesCounter.Name = "Increment EvaluatedSolutions";
+      subScopesCounter.ValueParameter.ActualName = EvaluatedSolutionsParameter.Name;
 
       bestSelector.CopySelected = new BoolValue(false);
@@ -185,6 +183,6 @@
       bestSelector.QualityParameter.ActualName = "Quality";
 
-      intCounter2.Increment = new IntValue(1);
-      intCounter2.ValueParameter.ActualName = "Generations";
+      intCounter.Increment = new IntValue(1);
+      intCounter.ValueParameter.ActualName = "Generations";
 
       comparator.Comparison = new Comparison(ComparisonType.GreaterOrEqual);
@@ -222,7 +220,7 @@
       subScopesRemover.Successor = null;
       uniformSubScopesProcessor2.Operator = evaluator;
-      uniformSubScopesProcessor2.Successor = intCounter1;
+      uniformSubScopesProcessor2.Successor = subScopesCounter;
       evaluator.Successor = null;
-      intCounter1.Successor = null;
+      subScopesCounter.Successor = null;
       subScopesProcessor2.Operators.Add(bestSelector);
       subScopesProcessor2.Operators.Add(new EmptyOperator());
@@ -230,6 +228,6 @@
       bestSelector.Successor = rightReducer;
       rightReducer.Successor = null;
-      mergingReducer.Successor = intCounter2;
-      intCounter2.Successor = comparator;
+      mergingReducer.Successor = intCounter;
+      intCounter.Successor = comparator;
       comparator.Successor = resultsCollector2;
       resultsCollector2.Successor = analyzer2;
Index: /trunk/sources/HeuristicLab.Operators/3.3/IntCounter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/IntCounter.cs	(revision 5351)
+++ /trunk/sources/HeuristicLab.Operators/3.3/IntCounter.cs	(revision 5352)
@@ -33,5 +33,4 @@
   [StorableClass]
   public sealed class IntCounter : SingleSuccessorOperator {
-    private object locker = new object();
 
     public LookupParameter<IntValue> ValueParameter {
@@ -62,8 +61,6 @@
 
     public override IOperation Apply() {
-      lock (locker) {
-        if (ValueParameter.ActualValue == null) ValueParameter.ActualValue = new IntValue();
-        ValueParameter.ActualValue.Value += IncrementParameter.ActualValue.Value;
-      }
+      if (ValueParameter.ActualValue == null) ValueParameter.ActualValue = new IntValue();
+      ValueParameter.ActualValue.Value += IncrementParameter.ActualValue.Value;
       return base.Apply();
     }
