Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/BenchmarkSuiteInstanceProvider.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/BenchmarkSuiteInstanceProvider.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/BenchmarkSuiteInstanceProvider.cs	(revision 15366)
@@ -45,5 +45,5 @@
       yield return new LastIndexOfZero();
       yield return new Median();
-      yield return new MedianIntegerError();
+      //yield return new MedianIntegerError();
       yield return new MirrorImage();
       yield return new NegativeToZero();
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs	(revision 15366)
@@ -3,5 +3,5 @@
 
   public class MirrorImage : BenchmarkSuiteDataDescriptor {
-    private const string name = "Mirror Image - Easy";
+    private const string name = "Mirror Image - Medium";
     private const string fileName = "MirrorImage.csv";
     private const string description = "Given two vectors of integers, return true if one vector is the reverse of the other, and false otherwise.";
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorAverage.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorAverage.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorAverage.cs	(revision 15366)
@@ -4,5 +4,5 @@
 
   public class VectorAverage : BenchmarkSuiteDataDescriptor {
-    private const string name = "Vector Average - Medium";
+    private const string name = "Vector Average - Hard";
     private const string fileName = "VectorAverage.csv";
     private const string description = "Given a vector of floats, return the average of those floats. Results are rounded to 4 decimal places.";
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Extensions/MathExtensions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Extensions/MathExtensions.cs	(revision 15366)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Extensions/MathExtensions.cs	(revision 15366)
@@ -0,0 +1,43 @@
+﻿using System;
+// ReSharper disable CompareOfFloatsByEqualityOperator
+
+namespace HeuristicLab.Problems.ProgramSynthesis.Base.Extensions {
+  public static class MathExtensions {
+
+    public static long AbsoluteDiff(this long a, long b) {
+      var diff = a - b;
+
+      return diff == long.MinValue
+        ? long.MaxValue
+        : Math.Abs(diff);
+    }
+
+    public static long AbsoluteDiff(this int a, long b) {
+      return AbsoluteDiff((long)a, b);
+    }
+
+    public static int AbsoluteDiff(this int a, int b) {
+      var diff = a - b;
+
+      return diff == int.MinValue
+        ? int.MaxValue
+        : Math.Abs(diff);
+    }
+
+    public static double AbsoluteDiff(this double a, double b) {
+      var diff = a - b;
+
+      return diff == double.MinValue || double.IsNaN(diff) || double.IsInfinity(diff)
+        ? double.MaxValue
+        : Math.Abs(diff);
+    }
+
+    public static int AbsoluteDiff(this char a, char b) {
+      var diff = a - b;
+
+      return diff == int.MinValue
+        ? int.MaxValue
+        : Math.Abs(diff);
+    }
+  }
+}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/HeuristicLab.Problems.ProgramSynthesis.Base.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/HeuristicLab.Problems.ProgramSynthesis.Base.csproj	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/HeuristicLab.Problems.ProgramSynthesis.Base.csproj	(revision 15366)
@@ -124,4 +124,5 @@
     <Compile Include="Erc\String\StringErcOptions.cs" />
     <Compile Include="Extensions\EnumerableExtensions.cs" />
+    <Compile Include="Extensions\MathExtensions.cs" />
     <Compile Include="Extensions\NormalDistributedRandomExtensions.cs" />
     <Compile Include="Extensions\StringExtensions.cs" />
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/ExpressionsClassDiagramm.cd
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/ExpressionsClassDiagramm.cd	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/ExpressionsClassDiagramm.cd	(revision 15366)
@@ -6,4 +6,5 @@
       <Method Name="Expression" Hidden="true" />
       <Method Name="IPooledObject.Reset" Hidden="true" />
+      <Property Name="IsProgram" Hidden="true" />
     </Members>
     <TypeIdentifier>
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Evaluator/PushBenchmarkSuiteEvaluator.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Evaluator/PushBenchmarkSuiteEvaluator.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Evaluator/PushBenchmarkSuiteEvaluator.cs	(revision 15366)
@@ -220,5 +220,5 @@
       long result;
       if (long.TryParse(printResult, out result)) {
-        var diff = Math.Abs(result - example.OutputInteger[0]);
+        var diff = result.AbsoluteDiff(example.OutputInteger[0]);
 
         return Math.Min(Data.WorstResult, diff);
@@ -236,5 +236,5 @@
       double value;
       if (double.TryParse(printResult, NumberStyles.Number | NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out value)) {
-        var diff = Math.Abs(example.OutputFloat[0] - value);
+        var diff = example.OutputFloat[0].AbsoluteDiff(value);
         diff = Math.Min(diff, Data.WorstResult);
 
@@ -263,24 +263,27 @@
       var printResult = interpreter.PrintStack.ToString();
       var distance = example.OutputPrint.LevenshteinDistance(printResult);
-      var lineCountWithCorrectFormat = interpreter.PrintStack.AsStrings().Count(line => {
-        var parts = line.Split(' ');
-
-        if (parts.Length != 3)
-          return false;
-
-        var part0 = parts[0].Trim();
-        if (part0.Length == 0 || !part0.IsNumeric())
-          return false;
-
-        var part1 = parts[1].Trim();
-        if (part1.Length != 1)
-          return false;
-
-        var part2 = parts[2].Trim();
-        if (part2.Length != 1)
-          return false;
-
-        return true;
-      });
+
+      var lineCountWithCorrectFormat = interpreter.PrintStack
+        .AsStrings()
+        .Count(line => {
+          var parts = line.Split(' ');
+
+          if (parts.Length != 3)
+            return false;
+
+          var part0 = parts[0].Trim();
+          if (part0.Length == 0 || !part0.IsNumeric())
+            return false;
+
+          var part1 = parts[1].Trim();
+          if (part1.Length != 1)
+            return false;
+
+          var part2 = parts[2].Trim();
+          if (part2.Length != 1)
+            return false;
+
+          return true;
+        });
 
       var lineCountWithInvalidFormat = example.OutputPrintLineCount - lineCountWithCorrectFormat;
@@ -300,26 +303,24 @@
       }
 
-      var distance = example.OutputPrint.LevenshteinDistance(interpreter.PrintStack.ToString());
+      var printResult = interpreter.PrintStack.ToString();
+      var distance = example.OutputPrint.LevenshteinDistance(printResult);
+
       var printLines = interpreter.PrintStack.AsStrings().ToArray();
-      var lineCountWithCorrectFormat = printLines.Count(line => line.IsNumeric());
-      var lineCountWithInvalidFormat = Math.Max(0, example.OutputPrintLineCount - lineCountWithCorrectFormat);
-
-      lineCountWithInvalidFormat = Math.Abs(Math.Min(lineCountWithInvalidFormat, example.OutputPrintLineCount));
+
+      var lineCountWithInvalidFormat = printLines
+        .Take(example.OutputPrintLineCount)
+        .Count(line => !line.IsNumeric());
 
       var compareLength = Math.Min(printLines.Length, example.OutputPrintLineCount);
-      long integerError = 0;
+      var integerError = 0L;
 
       for (var i = 0; i < compareLength; i++) {
         long value;
         if (long.TryParse(printLines[i], out value)) {
-          integerError += Math.Abs(value - example.OutputIntegerVector[0][i]);
-        } else {
-          integerError += example.OutputPrintLineCount > 0
-            ? (long)(Data.WorstResult / example.OutputPrintLineCount)
-            : 0;
+          integerError += value.AbsoluteDiff(example.OutputIntegerVector[0][i]);
         }
       }
 
-      var result = distance + lineCountWithInvalidFormat + integerError;
+      var result = distance + lineCountWithInvalidFormat + integerError / compareLength;
       return Math.Min(result, Data.WorstResult);
     }
@@ -347,10 +348,20 @@
 
       // add penalty if length does not match
-      var result = expectedVector.Length > 0
-        ? (expectedVector.Length - comparableLength) * (Data.WorstResult / expectedVector.Length)
-        : 0;
+      //var result = expectedVector.Length > 0
+      //  ? (expectedVector.Length - comparableLength) * (Data.WorstResult / expectedVector.Length)
+      //  : 0;
+
+      if (comparableLength == 0) {
+        return Data.WorstResult;
+      }
+
+      var result = 0d;
 
       for (var i = 0; i < comparableLength; i++) {
-        result += Math.Abs(resultVector[i] - expectedVector[i]);
+        result += resultVector[i].AbsoluteDiff(expectedVector[i]);
+      }
+
+      for (var i = comparableLength; i < expectedVector.Length; i++) {
+        result += expectedVector[i];
       }
 
@@ -372,14 +383,14 @@
       var distance = example.OutputPrint.LevenshteinDistance(printResult);
       var lineCount = interpreter.PrintStack.Count;
-      var lineCountError = Math.Abs(example.OutputPrintLineCount - lineCount);
+      var lineCountError = example.OutputPrintLineCount.AbsoluteDiff(lineCount);
       var totalWordsPerLineError = 0L;
 
       for (var i = 0; i < interpreter.PrintStack.Lines.Count - 1; i++) {
-        totalWordsPerLineError += Math.Abs(interpreter.PrintStack.Lines[i].Split(' ').Length - estimatedWordsPerLineCount);
+        totalWordsPerLineError += interpreter.PrintStack.Lines[i].Split(' ').Length.AbsoluteDiff(estimatedWordsPerLineCount);
       }
 
       // last line
       var lastLine = interpreter.PrintStack.Lines[interpreter.PrintStack.Lines.Count - 1];
-      totalWordsPerLineError += Math.Abs(lastLine.Split(' ').Length - estimatedLastWordCount);
+      totalWordsPerLineError += lastLine.Split(' ').Length.AbsoluteDiff(estimatedLastWordCount);
 
       var result = distance + lineCountError + totalWordsPerLineError;
@@ -396,12 +407,23 @@
 
       // add penalty if length does not match
-      var result = expectedVector.Length > 0
-        ? (expectedVector.Length - comparableLength) * (Data.WorstResult / expectedVector.Length)
-        : 0;
+      //var result = expectedVector.Length > 0
+      //  ? (expectedVector.Length - comparableLength) * (Data.WorstResult / expectedVector.Length)
+      //  : 0;
+
+      if (comparableLength == 0) {
+        return Data.WorstResult;
+      }
+
+      var result = 0d;
 
       for (var i = 0; i < comparableLength; i++) {
         var expectedStr = expectedVector[i].ToString();
         var resultStr = resultVector[i].ToString();
+
         result += expectedStr.LevenshteinDistance(resultStr);
+      }
+
+      for (var i = comparableLength; i < expectedVector.Length; i++) {
+        result += expectedVector[i].ToString().Length;
       }
 
@@ -424,5 +446,5 @@
       var expectedNumberOfSentences = example.OutputInteger[0];
       statsError += BenchmarkSuite.Problems.WordStats.GetNumberOfSentences(printStr, out numberOfSentences)
-        ? Math.Abs(expectedNumberOfSentences - numberOfSentences)
+        ? expectedNumberOfSentences.AbsoluteDiff(numberOfSentences)
         : Data.WorstResult / 3.0;
 
@@ -430,5 +452,5 @@
       var expectedAverageSentenceLength = example.OutputFloat[0];
       statsError += BenchmarkSuite.Problems.WordStats.GetAverageSentenceLength(printStr, out averageSentenceLength)
-        ? Math.Abs(expectedAverageSentenceLength - averageSentenceLength)
+        ? expectedAverageSentenceLength.AbsoluteDiff(averageSentenceLength)
         : Data.WorstResult / 3.0;
 
@@ -445,14 +467,12 @@
 
       var expectedLastCharIndex = example.OutputPrint.Length - 1;
+      var resultLastCharIndex = printStr.Length - 1;
       var result = distance;
 
-      if (expectedLastCharIndex >= 0) {
+      if (expectedLastCharIndex >= 0 && resultLastCharIndex >= 0) {
         var expectedLastChar = example.OutputPrint[expectedLastCharIndex];
-        var resultLastCharIndex = printStr.Length - 1;
-
-        if (resultLastCharIndex >= 0) {
-          var resultLastChar = printStr[resultLastCharIndex];
-          result += Math.Abs(expectedLastChar - resultLastChar);
-        }
+        var resultLastChar = printStr[resultLastCharIndex];
+
+        result += expectedLastChar.AbsoluteDiff(resultLastChar);
       }
 
@@ -470,5 +490,5 @@
       var expectedNumberOfSyllables = example.OutputInteger[0];
       var numberOfSyllablesError = BenchmarkSuite.Problems.Syllables.GetNumberOfSyllables(printStr, out numberOfSyllables)
-        ? Math.Abs(expectedNumberOfSyllables - numberOfSyllables)
+        ? expectedNumberOfSyllables.AbsoluteDiff(numberOfSyllables)
         : Data.WorstResult / 2.0;
 
@@ -487,6 +507,6 @@
       var expectedGrade = example.OutputChar[0];
       var gradeError = BenchmarkSuite.Problems.Grades.GetGrade(printStr, out grade)
-        ? Math.Abs(expectedGrade - grade)
-        : Data.WorstResult / 2;
+        ? expectedGrade.AbsoluteDiff(grade)
+        : char.MaxValue;
 
       var result = distance + gradeError;
@@ -500,4 +520,5 @@
       if (result == double.MinValue || double.IsPositiveInfinity(result) ||
           double.IsNaN(result) ||
+          // ReSharper disable once CompareOfFloatsByEqualityOperator
           result == double.MaxValue || double.IsNegativeInfinity(result))
         return worst;
@@ -576,5 +597,5 @@
       return double.IsNaN(diff) || double.IsInfinity(diff)
          ? worstResult
-         : diff;
+         : Math.Min(diff, worstResult);
     }
 
@@ -599,5 +620,5 @@
       return double.IsNaN(diff) || double.IsInfinity(diff)
         ? worstResult
-        : diff;
+        : Math.Min(diff, worstResult);
     }
   }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushProgram.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushProgram.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushProgram.cs	(revision 15366)
@@ -228,26 +228,26 @@
 
     [NonSerialized]
-    private int? totalExpressionCount;
+    private int? totalInstructionCount;
     /// <summary>
     /// Returns the amount of none program expressions
     /// </summary>
     /// <returns></returns>
-    public int TotalExpressionCount
-    {
-      get
-      {
-        if (totalExpressionCount == null) {
-          totalExpressionCount = 0;
+    public int TotalInstructionCount
+    {
+      get
+      {
+        if (totalInstructionCount == null) {
+          totalInstructionCount = 0;
 
           for (var i = 0; i < Count; i++) {
             var expression = expressions[i];
 
-            totalExpressionCount += expression.IsProgram
-              ? ((PushProgram)expression).TotalExpressionCount
+            totalInstructionCount += expression.IsProgram
+              ? ((PushProgram)expression).TotalInstructionCount
               : 1;
           }
         }
 
-        return totalExpressionCount.Value;
+        return totalInstructionCount.Value;
       }
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StatefulExpression.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StatefulExpression.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StatefulExpression.cs	(revision 15366)
@@ -1,4 +1,6 @@
 ﻿namespace HeuristicLab.Problems.ProgramSynthesis.Push.Expressions {
   using System;
+
+  using HeuristicLab.Common;
   using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Data.Pool;
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Selector/LexicaseSelector.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Selector/LexicaseSelector.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Selector/LexicaseSelector.cs	(revision 15366)
@@ -64,10 +64,4 @@
       var random = RandomParameter.ActualValue;
       var maximization = MaximizationParameter.ActualValue.Value;
-
-      //var qualities = QualityParameter.ActualValue;
-      //.Where(x => IsValidQuality(x.Value))
-      //.Select(x => x.Value)
-      //.ToList();
-
       var caseQualities = CaseQualitiesParameter.ActualValue.ToList();
 
@@ -98,11 +92,17 @@
       }
 
-      if (caseQualities.Any(x => x.Length != caseQualities[0].Length)) {
+      var qualitiesLength = caseQualities[0].Length;
+
+      if (caseQualities.Any(x => x.Length != qualitiesLength)) {
         throw new ArgumentException("Not all case qualities have the same length");
       }
 
       var selected = new IScope[count];
-      var candidates = Enumerable.Range(0, caseQualities.Count).ToList();
-      var orderSource = Enumerable.Range(0, caseQualities[0].Length).ToList();
+
+      var candidates = new List<int>(caseQualities.Count);
+      for (var i = 0; i < caseQualities.Count; i++) candidates.Add(i);
+
+      var orderSource = new List<int>(qualitiesLength);
+      for (var i = 0; i < qualitiesLength; i++) orderSource.Add(i);
 
       for (var i = 0; i < count; i++) {
@@ -140,16 +140,19 @@
           : double.PositiveInfinity;
 
-        foreach (var candidate in candidates) {
-          if (caseQualities[candidate][curCase].IsAlmost(best)) {
+        for (var i = 0; i < candidates.Count; i++) {
+          var candidate = candidates[i];
+          var caseQuality = caseQualities[candidate][curCase];
+
+          if (caseQuality.IsAlmost(best)) {
             // if the individuals is as good as the best one, add it
             nextCandidates.Add(candidate);
           } else if (
-             (maximization && (caseQualities[candidate][curCase] > best)) ||
-             (!maximization && (caseQualities[candidate][curCase] < best))) {
-            // if the individuals is better than the best one, remove all previous candidates and add the new one
+             (maximization && (caseQuality > best)) ||
+             (!maximization && (caseQuality < best))) {
+            // if the individual is better than the best one, remove all previous candidates and add the new one
             nextCandidates.Clear();
             nextCandidates.Add(candidate);
             // also set the next best quality value
-            best = caseQualities[candidate][curCase];
+            best = caseQuality;
           }
           // else {do nothing}
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramTreeView.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramTreeView.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramTreeView.cs	(revision 15366)
@@ -55,5 +55,5 @@
           return EmptyList;
 
-        return string.Format(PushProgramStringFormat, program.TotalExpressionCount, program.Depth);
+        return string.Format(PushProgramStringFormat, program.TotalInstructionCount, program.Depth);
       }
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/SolutionTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/SolutionTests.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/SolutionTests.cs	(revision 15366)
@@ -240,6 +240,6 @@
         PushParser.ParseProgram(@"
         (
-          INTEGER.ROT INTEGER.DUP 2 INTEGER.YANKDUP
-          INTEGER.MAX 3 INTEGER.YANKDUP INTEGER.MIN
+          INTEGER.ROT IN1 IN2 INTEGER.MAX
+          IN3 INTEGER.MIN
           INTEGER.ROT INTEGER.MIN INTEGER.MAX
           PRINT.PRINTINTEGER
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Problem/DeterministicTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Problem/DeterministicTests.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Problem/DeterministicTests.cs	(revision 15366)
@@ -40,13 +40,13 @@
       var bestQuality1 = GetDoubleResult(ga1, "BestQuality");
       var bestQuality2 = GetDoubleResult(ga2, "BestQuality");
-      Assert.AreEqual(bestQuality1, bestQuality2, 0.0001);
+      Assert.AreEqual(bestQuality1, bestQuality2, 0.000001);
 
-      var currentAverageQuality1 = GetDoubleResult(ga1, "CurrentAverageQuality");
-      var currentAverageQuality2 = GetDoubleResult(ga2, "CurrentAverageQuality");
-      Assert.AreEqual(currentAverageQuality1, currentAverageQuality2, 0.01);
+      //var currentAverageQuality1 = GetDoubleResult(ga1, "CurrentAverageQuality");
+      //var currentAverageQuality2 = GetDoubleResult(ga2, "CurrentAverageQuality");
+      //Assert.AreEqual(currentAverageQuality1, currentAverageQuality2, 0.01);
 
       var currentWorstQuality1 = GetDoubleResult(ga1, "CurrentWorstQuality");
       var currentWorstQuality2 = GetDoubleResult(ga2, "CurrentWorstQuality");
-      Assert.AreEqual(currentWorstQuality1, currentWorstQuality2, 0.0001);
+      Assert.AreEqual(currentWorstQuality1, currentWorstQuality2, 0.000001);
     }
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Problem/IndividualMapperTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Problem/IndividualMapperTests.cs	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Problem/IndividualMapperTests.cs	(revision 15366)
@@ -76,5 +76,5 @@
 
       Console.WriteLine(@"Duration: {0}ms", sw.ElapsedMilliseconds);
-      Assert.AreEqual(vector.Length, program.TotalExpressionCount);
+      Assert.AreEqual(vector.Length, program.TotalInstructionCount);
     }
 
Index: /branches/PushGP/HeuristicLab.PushGP/PushGp.sln
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/PushGp.sln	(revision 15365)
+++ /branches/PushGP/HeuristicLab.PushGP/PushGp.sln	(revision 15366)
@@ -12,9 +12,5 @@
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.ProgramSynthesis", "HeuristicLab.Problems.ProgramSynthesis\HeuristicLab.Problems.ProgramSynthesis.csproj", "{5C93448C-47E3-4C3F-B1D0-EE62A48C3204}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FeatureTests", "FeatureTests\FeatureTests.csproj", "{B184A849-1403-4F5F-96F8-952C6599A7C0}"
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.ProgramSynthesis.Base", "HeuristicLab.Problems.ProgramSynthesis.Base\HeuristicLab.Problems.ProgramSynthesis.Base.csproj", "{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Push.Thesis", "Push.Thesis\Push.Thesis.csproj", "{662C6679-3EE0-432F-A8A6-251CA165D30B}"
 EndProject
 Global
@@ -40,16 +36,8 @@
 		{5C93448C-47E3-4C3F-B1D0-EE62A48C3204}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{5C93448C-47E3-4C3F-B1D0-EE62A48C3204}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B184A849-1403-4F5F-96F8-952C6599A7C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B184A849-1403-4F5F-96F8-952C6599A7C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B184A849-1403-4F5F-96F8-952C6599A7C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B184A849-1403-4F5F-96F8-952C6599A7C0}.Release|Any CPU.Build.0 = Release|Any CPU
 		{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{0A60B6BA-8ACE-478E-98F3-57441B53B5F9}.Release|Any CPU.Build.0 = Release|Any CPU
-		{662C6679-3EE0-432F-A8A6-251CA165D30B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{662C6679-3EE0-432F-A8A6-251CA165D30B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{662C6679-3EE0-432F-A8A6-251CA165D30B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{662C6679-3EE0-432F-A8A6-251CA165D30B}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
