Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Algorithms/ExtremePointAlgorithm.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Algorithms/ExtremePointAlgorithm.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Algorithms/ExtremePointAlgorithm.cs	(revision 15838)
@@ -247,21 +247,4 @@
             }
 
-
-            var x = Problem.SolutionEvaluator.Evaluate1(solution);
-
-            /*
-            if (double.IsNaN(result.Item2) || double.IsInfinity(result.Item2)) {
-              continue;
-            }
-
-            if (double.IsNaN(best) || Problem.Maximization && result.Item2 > best || !Problem.Maximization && result.Item2 < best) {
-              bestSolution = result.Item1;
-              best = result.Item2;
-              bestSorting = sort;
-              bestFitting = fit;
-              bestEPCreation = epCreation;
-            }
-            return true;*/
-
             if (token.IsCancellationRequested) {
               return Tuple.Create(bestSolution, best, bestSorting, bestFitting, bestEPCreation);
@@ -277,5 +260,5 @@
 
     /// <summary>
-    /// Returns a tuple with the solution and the packing ratio depending on the given parameters
+    /// Returns a solution depending on the given parameters
     /// </summary>
     /// <param name="parameters"></param>
@@ -284,7 +267,6 @@
 
       var sol = parameters.Decoder.Decode(parameters.SortedItems, parameters.Bin, parameters.Items, parameters.StackingConstraints);
-      //var fit = parameters.Evaluator.Evaluate(sol);
-
-      return sol; //Tuple.Create(sol, fit);
+
+      return sol; 
     }
 
@@ -298,6 +280,5 @@
       public ExtremePointCreationMethod ExtremePointGeneration { get; set; }
     }
-
-
+    
     /// <summary>
     /// Returns a new permutation of the given items depending on the sorting method
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Encoding/ExtremePointPermutationDecoder.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Encoding/ExtremePointPermutationDecoder.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Encoding/ExtremePointPermutationDecoder.cs	(revision 15838)
@@ -69,5 +69,4 @@
       : base(original, cloner) {
       fittingMethodParameter = cloner.Clone(original.fittingMethodParameter);
-      //_binPacker = cloner.Clone(original._binPacker);
     }
     public ExtremePointPermutationDecoder() {
@@ -86,8 +85,5 @@
       return new ExtremePointPermutationDecoder(this, cloner);
     }
-
-    /*[Storable]
-    BinPacker _binPacker;
-    */
+    
     /// <summary>
     /// Creates a solution for displaying it on the HEAL gui
@@ -108,14 +104,5 @@
       }
       return solution;
-    }
-
-    Permutation AddOffset(Permutation p, int offset) {
-      var s = p.ToArray();
-      for (int i = 0; i < s.Length; i++) {
-        s[i] += offset;
-      }
-      
-      return new Permutation(PermutationTypes.Absolute, s);
-    }
+    }    
   }
 }
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/BinUtilizationEvaluator.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/BinUtilizationEvaluator.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/BinUtilizationEvaluator.cs	(revision 15838)
@@ -81,5 +81,5 @@
     }
 
-    public Tuple<int, double, int, int> Evaluate1(Solution solution) {
+    public Tuple<int, double, int, int> EvaluateBinPacking(Solution solution) {
 
 
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/IEvaluator.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/IEvaluator.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/IEvaluator.cs	(revision 15838)
@@ -41,5 +41,5 @@
     /// <param name="solution"></param>
     /// <returns></returns>
-    Tuple<int, double, int, int> Evaluate1(Solution solution);
+    Tuple<int, double, int, int> EvaluateBinPacking(Solution solution);
   }
 }
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/PackingRatioEvaluator.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/PackingRatioEvaluator.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Evaluators/PackingRatioEvaluator.cs	(revision 15838)
@@ -98,5 +98,5 @@
     }
 
-    public Tuple<int, double, int, int> Evaluate1(Solution solution) {
+    public Tuple<int, double, int, int> EvaluateBinPacking(Solution solution) {
 
 
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/ExtremePointCreation/ExtremePointCreator.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/ExtremePointCreation/ExtremePointCreator.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/ExtremePointCreation/ExtremePointCreator.cs	(revision 15838)
@@ -232,10 +232,5 @@
     /// <returns></returns>
     protected bool IsWithinResidualSpaceOfAnotherExtremePoint(BinPacking3D binPacking, Vector3D pos, IEnumerable<ResidualSpace> residualSpaces) {
-      foreach (var residualSpace in residualSpaces) {
-        if (IsWithinResidualSpaceOfAnotherExtremePoint(binPacking, pos, residualSpace)) {
-          return true;
-        }
-      }
-      return false;
+      return residualSpaces.Any(x => IsWithinResidualSpaceOfAnotherExtremePoint(binPacking, pos, x));
     }
 
@@ -262,9 +257,4 @@
     /// <returns></returns>
     protected virtual bool IsWithinResidualSpaceOfAnotherExtremePoint(Vector3D pos, ResidualSpace rsPos, PackingPosition ep, ResidualSpace rsEp) {
-      /*old implementation
-      return rsEp.Width >= pos.X - ep.X + rsPos.Width
-          && rsEp.Height >= pos.Y - ep.Y + rsPos.Height
-          && rsEp.Depth >= pos.Z - ep.Z + rsPos.Depth;*/
-
       var x = pos.X >= ep.X && pos.X + rsPos.Width <= ep.X + rsEp.Width;
       var y = pos.Y >= ep.Y && pos.Y + rsPos.Height <= ep.Y + rsEp.Height;
@@ -294,6 +284,6 @@
                              .Select(x => x.Intersect(line))
                              .Where(x => x != null && x.Z <= pos.Z);
-      if (m.Where(x => x != null).Any()) {
-        return m.MaxItems(x => x.Y).First();
+      if (m.Any(x => x != null)) {
+        return m.MaxItems(x => x.Z).FirstOrDefault();
       }
       return null;
@@ -307,6 +297,6 @@
                   .Select(x => x.Intersect(line))
                   .Where(x => x != null && x.X <= pos.X);
-      if (m.Where(x => x != null).Any()) {
-        return m.MaxItems(x => x.Y).First();
+      if (m.Any(x => x != null)) {
+        return m.MaxItems(x => x.X).FirstOrDefault();
       }
       return null;
@@ -320,6 +310,6 @@
                   .Select(x => x.Intersect(line))
                   .Where(x => x != null && x.Y <= pos.Y);
-      if (m.Where(x => x != null).Any()) {
-        return m.MaxItems(x => x.Y).First();
+      if (m.Any(x => x != null)) {
+        return m.MaxItems(x => x.Y).FirstOrDefault();
       }
       return null;
@@ -333,6 +323,6 @@
                   .Select(x => x.Intersect(line))
                   .Where(x => x != null && x.Z >= pos.Z);
-      if (m.Where(x => x != null).Any()) {
-        return m.MaxItems(x => x.Y).First();
+      if (m.Any(x => x != null)) {
+        return m.MinItems(x => x.Z).FirstOrDefault();
       }
       return null;
@@ -346,6 +336,6 @@
                   .Select(x => x.Intersect(line))
                   .Where(x => x != null && x.X >= pos.X);
-      if (m.Where(x => x != null).Any()) {
-        return m.MaxItems(x => x.Y).First();
+      if (m.Any(x => x != null)) {
+        return m.MinItems(x => x.X).FirstOrDefault();
       }
       return null;
@@ -359,6 +349,6 @@
                   .Select(x => x.Intersect(line))
                   .Where(x => x != null && x.Y >= pos.Y);
-      if (m.Where(x => x != null).Any()) {
-        return m.MaxItems(x => x.Y).First();
+      if (m.Any(x => x != null)) {
+        return m.MinItems(x => x.Y).FirstOrDefault();
       }
       return null;
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/ExtremePointCreation/ExtremePointCreatorFactory.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/ExtremePointCreation/ExtremePointCreatorFactory.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/ExtremePointCreation/ExtremePointCreatorFactory.cs	(revision 15838)
@@ -28,8 +28,15 @@
 namespace HeuristicLab.Problems.BinPacking3D.ExtremePointCreation {
   public static class ExtremePointCreatorFactory {
-    public static IExtremePointCreator CreateExtremePointCreator(ExtremePointCreationMethod epGenerationMethod, bool useStackingConstraints) {
-      if (epGenerationMethod == ExtremePointCreationMethod.PointProjection) {
+    
+    /// <summary>
+    /// Returns an extreme point creator depending on the given creation method.
+    /// </summary>
+    /// <param name="epCreationMethod"></param>
+    /// <param name="useStackingConstraints"></param>
+    /// <returns></returns>
+    public static IExtremePointCreator CreateExtremePointCreator(ExtremePointCreationMethod epCreationMethod, bool useStackingConstraints) {
+      if (epCreationMethod == ExtremePointCreationMethod.PointProjection) {
         return new PointProjectionBasedEPCreator();
-      } else if (epGenerationMethod == ExtremePointCreationMethod.LineProjection) {
+      } else if (epCreationMethod == ExtremePointCreationMethod.LineProjection) {
         return new LineProjectionBasedEPCreator();
       }
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/ExtremePointCreation/PointProjectionBasedEPCreator.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/ExtremePointCreation/PointProjectionBasedEPCreator.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/ExtremePointCreation/PointProjectionBasedEPCreator.cs	(revision 15838)
@@ -56,5 +56,5 @@
         GenerateNewExtremePointsForItem(binPacking, it, pos);
       });
-
+      
       // remove not needed extreme points.
       foreach (var extremePoint in binPacking.ExtremePoints.ToList()) {
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Packer/BinPackerMinRSLeft.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Packer/BinPackerMinRSLeft.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Packer/BinPackerMinRSLeft.cs	(revision 15838)
@@ -245,4 +245,5 @@
       packingItem.Rotated = rsd.Item.Rotated;
       packingItem.Tilted = rsd.Item.Tilted;
+
       return rsd.Position;
     }
@@ -254,6 +255,8 @@
           $"Item: ({packingItem.Width} {packingItem.Depth} {packingItem.Height})");
       }
-
-      var rsd = CalculateResidalSpaceDifferences(packingBin, packingItem, useStackingConstraints).Where(x => x != null).FirstOrDefault();
+            
+      var rsds = CalculateResidalSpaceDifferences(packingBin, packingItem, useStackingConstraints).Where(x => x != null);
+      var rsd = rsds.FirstOrDefault();
+
 
       if (rsd == null) {
@@ -263,4 +266,5 @@
       packingItem.Rotated = rsd.Item.Rotated;
       packingItem.Tilted = rsd.Item.Tilted;
+      
       return rsd.Position;
     }
Index: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Solution.cs
===================================================================
--- branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Solution.cs	(revision 15822)
+++ branches/2817-BinPackingSpeedup/HeuristicLab.Problems.BinPacking/3.3/3D/Solution.cs	(revision 15838)
@@ -42,5 +42,5 @@
 
     public bool IsBetterThan(Solution other, IEvaluator evaluator, bool problemMaximization = true) {
-      var evaluatedThis = evaluator.Evaluate1(this);
+      var evaluatedThis = evaluator.EvaluateBinPacking(this);
 
       if (double.IsInfinity(evaluatedThis.Item2) || double.IsNaN(evaluatedThis.Item2)) {
@@ -52,5 +52,5 @@
       }
 
-      var evaluatedOther = evaluator.Evaluate1(other);
+      var evaluatedOther = evaluator.EvaluateBinPacking(other);
       if (evaluatedThis.Item1 < evaluatedOther.Item1) {
         return true;
