Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/HeuristicLab.BenchmarkSuite.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/HeuristicLab.BenchmarkSuite.csproj	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/HeuristicLab.BenchmarkSuite.csproj	(revision 14733)
@@ -59,4 +59,8 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Persistence-3.3.dll</HintPath>
     </Reference>
     <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Data.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Data.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Data.cs	(revision 14733)
@@ -2,7 +2,9 @@
   using System.Linq;
 
-  using HeuristicLab.Common;
-  using HeuristicLab.Core;
+  using Common;
+  using Core;
+  using Persistence.Default.CompositeSerializers.Storable;
 
+  [StorableClass]
   public class Data : NamedItem {
     public Data(double bestResult, double worstResult, int testCount, int trainingCount,
@@ -20,4 +22,7 @@
     }
 
+    [StorableConstructor]
+    public Data(bool deserializing) : base(deserializing) { }
+
     public Data(Data origin, Cloner cloner) : base(origin, cloner) {
       this.BestResult = origin.BestResult;
@@ -28,11 +33,19 @@
     }
 
+    [Storable]
     public readonly IExampleParser ExampleParser;
+    [Storable]
     public readonly Example[] Examples;
+    [Storable]
     public readonly int OriginalTestCount;
+    [Storable]
     public readonly int OriginalTrainingCount;
+    [Storable]
     public readonly double WorstResult;
+    [Storable]
     public readonly double BestResult;
+    [Storable]
     public readonly int InputArgumentCount;
+    [Storable]
     public readonly int OutputArgumentCount;
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Example.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Example.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Example.cs	(revision 14733)
@@ -2,5 +2,7 @@
 
   using HeuristicLab.Common;
+  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
+  [StorableClass]
   public class Example : DeepCloneable {
     public Example() {
@@ -17,4 +19,7 @@
     }
 
+    [StorableConstructor]
+    public Example(bool deserializing) { }
+
     public void CopyTo(Example example) {
       example.InputArgs = this.InputArgs;
@@ -30,13 +35,20 @@
     }
 
+    [Storable]
     public string[] InputArgs { get; set; }
+    [Storable]
     public string[] OutputArgs { get; set; }
+    [Storable]
     public long[] InputInt { get; set; }
+    [Storable]
     public double[] InputFloat { get; set; }
+    [Storable]
     public bool[] InputBoolean { get; set; }
+    [Storable]
     public long[] OutputInt { get; set; }
+    [Storable]
     public double[] OutputFloat { get; set; }
+    [Storable]
     public bool[] OutputBoolean { get; set; }
-
 
     public override IDeepCloneable Clone(Cloner cloner) {
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/HeuristicLab.Problems.ProgramSynthesis.csproj
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/HeuristicLab.Problems.ProgramSynthesis.csproj	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/HeuristicLab.Problems.ProgramSynthesis.csproj	(revision 14733)
@@ -144,5 +144,5 @@
     <Compile Include="Push\Expressions\ShoveExpressions.cs" />
     <Compile Include="Push\Expressions\StackdepthExpressions.cs" />
-    <Compile Include="Push\Expressions\StatefullExpression.cs" />
+    <Compile Include="Push\Expressions\StatefulExpression.cs" />
     <Compile Include="Push\Expressions\StatelessExpression.cs" />
     <Compile Include="Push\Expressions\SwapExpressions.cs" />
@@ -151,11 +151,11 @@
     <Compile Include="Push\Generators\CodeGenerator.cs" />
     <Compile Include="Push\Generators\NameGenerator.cs" />
-    <Compile Include="Push\Interpreter\IPushGpInterpreter.cs" />
-    <Compile Include="Push\Configuration\IReadonlyPushGpConfiguration.cs" />
-    <Compile Include="Push\Interpreter\PooledPushGpInterpreter.cs" />
-    <Compile Include="Push\Configuration\PushGpConfiguration.cs" />
-    <Compile Include="Push\Interpreter\PushGPInterpreter.cs" />
-    <Compile Include="Push\Interpreter\PushGpInterpreterPool.cs" />
-    <Compile Include="Push\Parser\PushGPParser.cs" />
+    <Compile Include="Push\Interpreter\IPushInterpreter.cs" />
+    <Compile Include="Push\Configuration\IReadonlyPushConfiguration.cs" />
+    <Compile Include="Push\Interpreter\PooledPushInterpreter.cs" />
+    <Compile Include="Push\Configuration\PushConfiguration.cs" />
+    <Compile Include="Push\Interpreter\PushInterpreter.cs" />
+    <Compile Include="Push\Interpreter\PushInterpreterPool.cs" />
+    <Compile Include="Push\Parser\PushParser.cs" />
     <Compile Include="Push\Creator\IPushProgramCreator.cs" />
     <Compile Include="Push\Problem\PushEncoding.cs" />
@@ -166,5 +166,5 @@
     <Compile Include="Push\Problem\PushSolution.cs" />
     <Compile Include="Push\Stack\IStack.cs" />
-    <Compile Include="Push\Stack\PushGPStack.cs" />
+    <Compile Include="Push\Stack\PushStack.cs" />
     <Compile Include="Push\Stack\StackType.cs" />
     <Compile Include="Push\Views\ExpressionSelectionView.cs">
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Creator/IPushProgramCreator.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Creator/IPushProgramCreator.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Creator/IPushProgramCreator.cs	(revision 14733)
@@ -13,5 +13,5 @@
   public interface IPushProgramCreator : ISolutionCreator
   {
-    PushProgram CreateProgram(IRandom random, IReadonlyPushGpConfiguration config);
+    PushProgram CreateProgram(IRandom random, IReadonlyPushConfiguration config);
   }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Creator/PointsBasedPushProgramCreator.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Creator/PointsBasedPushProgramCreator.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Creator/PointsBasedPushProgramCreator.cs	(revision 14733)
@@ -23,5 +23,5 @@
     }
 
-    public PushProgram CreateProgram(IRandom random, IReadonlyPushGpConfiguration config) {
+    public PushProgram CreateProgram(IRandom random, IReadonlyPushConfiguration config) {
       return CodeGenerator.RandomProgram(10, random, config);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/BooleanExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/BooleanExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/BooleanExpressions.cs	(revision 14733)
@@ -9,5 +9,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.AND")]
   public class BooleanAndExpression : PushResultExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.BooleanStack, 2, values => values[0] && values[1]);
     }
@@ -19,5 +19,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.OR")]
   public class BooleanOrExpression : PushResultExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.BooleanStack, 2, values => values[0] || values[1]);
     }
@@ -29,5 +29,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.NOT")]
   public class BooleanNotExpression : PushResultExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.BooleanStack, 1, values => !values[0]);
     }
@@ -39,5 +39,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.FROMFLOAT")]
   public class BooleanFromFloatExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.FloatStack.Count == 0) return;
 
@@ -53,5 +53,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.FROMINTEGER")]
   public class BooleanFromIntegerExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.IntegerStack.Count == 0) return;
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/CodeExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/CodeExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/CodeExpressions.cs	(revision 14733)
@@ -22,5 +22,5 @@
   [PushExpression(StackType.Code, "CODE.DO")]
   public class CodeDoExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       // not enough arguments on stack
       if (interpreter.CodeStack.Count == 0) return;
@@ -36,5 +36,5 @@
   [PushExpression(StackType.Code, "CODE.DO*")]
   public class CodeDoXExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       // not enough arguments on stack
       if (interpreter.CodeStack.Count == 0) return;
@@ -50,5 +50,5 @@
   [PushExpression(StackType.Code, "CODE.NOOP")]
   public class CodeNoopExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       // nothing to do
     }
@@ -61,5 +61,5 @@
   [PushExpression(StackType.Code, "CODE.QUOTE")]
   public class CodeQuoteExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       // not enough arguments on stack
       if (interpreter.ExecStack.Count == 0) return;
@@ -77,5 +77,5 @@
   [PushExpression(StackType.Code, "CODE.IF")]
   public class CodeIfExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       // not enough arguments on stack
       if ((interpreter.BooleanStack.Count == 0) || (interpreter.CodeStack.Count < 2)) return;
@@ -94,5 +94,5 @@
   [PushExpression(StackType.Code, "CODE.APPEND")]
   public class CodeAppendExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count < 2) return;
 
@@ -163,5 +163,5 @@
   [PushExpression(StackType.Code, "CODE.ATOM")]
   public class CodeAtomExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count == 0) return;
 
@@ -181,5 +181,5 @@
   [PushExpression(StackType.Code, "CODE.CAR")]
   public class CodeCarExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if ((interpreter.CodeStack.Count == 0) || (interpreter.CodeStack.Top.GetType() !=
                                                  typeof(ExecExpandExpression))) return;
@@ -202,5 +202,5 @@
   [PushExpression(StackType.Code, "CODE.CDR")]
   public class CodeCdrExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count == 0) return;
 
@@ -233,5 +233,5 @@
   [PushExpression(StackType.Code, "CODE.CONS")]
   public class CodeConsExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count < 2)
         return;
@@ -269,5 +269,5 @@
   [PushExpression(StackType.Code, "CODE.CONTAINER")]
   public class CodeContainerExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if ((interpreter.CodeStack.Count < 2) ||
           (interpreter.CodeStack[interpreter.CodeStack.Count - 2].GetType() !=
@@ -307,5 +307,5 @@
   [PushExpression(StackType.Code, "CODE.CONTAINS")]
   public class CodeContainsExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count < 2 ||
          !interpreter.CodeStack[interpreter.CodeStack.Count - 2].CanExpand)
@@ -327,5 +327,5 @@
   [PushExpression(StackType.Code, "CODE.DEFINITION")]
   public class CodeDefinitionExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if ((interpreter.NameStack.Count == 0) ||
           !interpreter.CustomExpressions.ContainsKey(interpreter.NameStack.Top)) return;
@@ -363,5 +363,5 @@
   [PushExpression(StackType.Code, "CODE.DISCREPANCY")]
   public class CodeDiscrepancyExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count < 2) return;
 
@@ -418,5 +418,5 @@
   [PushExpression(StackType.Code, "CODE.EXTRACT")]
   public class CodeExtractExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.IntegerStack.Count == 0 ||
           interpreter.CodeStack.Count == 0 ||
@@ -437,5 +437,5 @@
   [PushExpression(StackType.Code, "CODE.FROMBOOLEAN")]
   public class CodeFromBooleanExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.BooleanStack.Count == 0) return;
 
@@ -452,5 +452,5 @@
   [PushExpression(StackType.Code, "CODE.FROMFLOAT")]
   public class CodeFromFloatExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.FloatStack.Count == 0) return;
 
@@ -467,5 +467,5 @@
   [PushExpression(StackType.Code, "CODE.FROMINTEGER")]
   public class CodeFromIntegerExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.IntegerStack.Count == 0) return;
 
@@ -482,5 +482,5 @@
   [PushExpression(StackType.Code, "CODE.FROMNAME")]
   public class CodeFromNameExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.NameStack.Count == 0) return;
 
@@ -498,5 +498,5 @@
   [PushExpression(StackType.Code, "CODE.CODEINSERT")]
   public class CodeInsertExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.IntegerStack.Count == 0 ||
           interpreter.CodeStack.Count < 2 ||
@@ -533,5 +533,5 @@
   [PushExpression(StackType.Code, "CODE.LENGTH")]
   public class CodeLengthExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count == 0) return;
 
@@ -551,5 +551,5 @@
   [PushExpression(StackType.Code, "CODE.LIST")]
   public class CodeListExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count < 2) return;
 
@@ -568,5 +568,5 @@
   [PushExpression(StackType.Code, "CODE.MEMBER")]
   public class CodeMemberExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count < 2) return;
 
@@ -588,5 +588,5 @@
   [PushExpression(StackType.Code, "CODE.NTH")]
   public class CodeNthExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if ((interpreter.CodeStack.Count == 0) || (interpreter.IntegerStack.Count == 0)) return;
 
@@ -625,5 +625,5 @@
   [PushExpression(StackType.Code, "CODE.NTHCDR")]
   public class CodeNthCdrExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if ((interpreter.CodeStack.Count == 0) || (interpreter.IntegerStack.Count == 0)) return;
 
@@ -656,5 +656,5 @@
   [PushExpression(StackType.Code, "CODE.NULL")]
   public class CodeNullExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count == 0) return;
 
@@ -671,5 +671,5 @@
   [PushExpression(StackType.Code, "CODE.POSITION")]
   public class CodePositionExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count < 2) return;
 
@@ -697,5 +697,5 @@
   [PushExpression(StackType.Code, "CODE.SIZE")]
   public class CodeSizeExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CodeStack.Count == 0) return;
 
@@ -717,5 +717,5 @@
   [PushExpression(StackType.Code, "CODE.SUBST")]
   public class CodeSubstitutionExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if ((interpreter.CodeStack.Count < 3) || (interpreter.CodeStack.Top.GetType() !=
                                                 typeof(ExecExpandExpression))) return;
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DefineExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DefineExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DefineExpressions.cs	(revision 14733)
@@ -31,5 +31,5 @@
   [PushExpression(StackType.Code, "CODE.DEFINE")]
   public class CodeDefineExpression : DefineExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.Configuration.TopLevelPushCode && (interpreter.CodeStack.Count < 2)) return;
 
@@ -46,5 +46,5 @@
   [PushExpression(StackType.Exec, "EXEC.DEFINE")]
   public class ExecDefineExpression : DefineExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.ExecStack.Count < 2) return;
 
@@ -62,5 +62,5 @@
   public class FloatDefineExpression : DefineExpression<double> {
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(
         interpreter.FloatStack,
@@ -73,5 +73,5 @@
   [PushExpression(StackType.Integer, "INTEGER.DEFINE")]
   public class IntegerDefineExpression : DefineExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(
         interpreter.IntegerStack,
@@ -84,5 +84,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.DEFINE")]
   public class BooleanDefineExpression : DefineExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(
         interpreter.BooleanStack,
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoCountExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoCountExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoCountExpressions.cs	(revision 14733)
@@ -8,5 +8,5 @@
     protected DoCountExpression() { }
     protected DoCountExpression(LoopState state) : base(state) { }
-    protected override bool HasInsufficientArguments(IPushGpInterpreter interpreter, IStack<Expression> sourceStack) {
+    protected override bool HasInsufficientArguments(IPushInterpreter interpreter, IStack<Expression> sourceStack) {
       return interpreter.IntegerStack.Count < 1 ||
              sourceStack.Count == 0 ||
@@ -14,5 +14,5 @@
     }
 
-    protected override LoopState InitState(IPushGpInterpreter interpreter, IStack<Expression> sourceStack) {
+    protected override LoopState InitState(IPushInterpreter interpreter, IStack<Expression> sourceStack) {
       var state = new LoopState(
         body: sourceStack.Pop(),
@@ -47,5 +47,5 @@
     public CodeDoCountExpression(LoopState state) : base(state) { }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter, interpreter.CodeStack);
     }
@@ -75,5 +75,5 @@
     public ExecDoCountExpression(LoopState state) : base(state) { }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter, interpreter.ExecStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoRangeExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoRangeExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoRangeExpressions.cs	(revision 14733)
@@ -7,5 +7,5 @@
     protected DoRangeExpression() { }
     protected DoRangeExpression(LoopState state) : base(state) { }
-    protected override bool HasInsufficientArguments(IPushGpInterpreter interpreter, IStack<Expression> sourceStack) {
+    protected override bool HasInsufficientArguments(IPushInterpreter interpreter, IStack<Expression> sourceStack) {
       return interpreter.IntegerStack.Count < 2 ||
              sourceStack.Count == 0 ||
@@ -13,5 +13,5 @@
     }
 
-    protected override LoopState InitState(IPushGpInterpreter interpreter, IStack<Expression> sourceStack) {
+    protected override LoopState InitState(IPushInterpreter interpreter, IStack<Expression> sourceStack) {
       var destinationIndex = interpreter.IntegerStack.Pop();
       var incrementor = destinationIndex < interpreter.IntegerStack.Top ? -1 : 1;
@@ -52,5 +52,5 @@
 
     public CodeDoRangeExpression(LoopState state) : base(state) { }
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter, interpreter.CodeStack);
     }
@@ -90,5 +90,5 @@
 
     public ExecDoRangeExpression(LoopState state) : base(state) { }
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter, interpreter.ExecStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoTimesExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoTimesExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DoTimesExpressions.cs	(revision 14733)
@@ -7,9 +7,9 @@
     protected DoTimesExpression() { }
     protected DoTimesExpression(LoopState state) : base(state) { }
-    protected override bool HasInsufficientArguments(IPushGpInterpreter interpreter, IStack<Expression> sourceStack) {
+    protected override bool HasInsufficientArguments(IPushInterpreter interpreter, IStack<Expression> sourceStack) {
       return (interpreter.IntegerStack.Count < 1) || (sourceStack.Count == 0) || (interpreter.IntegerStack.Top <= 0);
     }
 
-    protected override LoopState InitState(IPushGpInterpreter interpreter, IStack<Expression> sourceStack) {
+    protected override LoopState InitState(IPushInterpreter interpreter, IStack<Expression> sourceStack) {
       //this.State.Body = sourceStack.Pop();
       //this.State.DestinationIndex = interpreter.IntegerStack.Pop();
@@ -24,5 +24,5 @@
     }
 
-    protected override void PushIteration(IPushGpInterpreter interpreter) {
+    protected override void PushIteration(IPushInterpreter interpreter) {
       var newState = new LoopState(State.Body, State.CurrentIndex + this.State.Incrementor, State.DestinationIndex, State.Incrementor);
       var nextLoopExpression = Clone(newState);
@@ -31,5 +31,5 @@
     }
 
-    protected override void PushLastIteration(IPushGpInterpreter interpreter) {
+    protected override void PushLastIteration(IPushInterpreter interpreter) {
       interpreter.ExecStack.Push(this.State.Body);
     }
@@ -47,5 +47,5 @@
     public CodeDoTimesExpression(LoopState state) : base(state) { }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter, interpreter.CodeStack);
     }
@@ -70,5 +70,5 @@
     public ExecDoTimesExpression(LoopState state) : base(state) { }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter, interpreter.ExecStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DuplicateExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DuplicateExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/DuplicateExpressions.cs	(revision 14733)
@@ -27,5 +27,5 @@
   [PushExpression(StackType.Integer, "INTEGER.DUP")]
   public class IntegerDuplicateExpression : DuplicateExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack);
     }
@@ -34,5 +34,5 @@
   [PushExpression(StackType.Float, "FLOAT.DUP")]
   public class FloatDuplicateExpression : DuplicateExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack);
     }
@@ -41,5 +41,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.DUP")]
   public class BooleanDuplicateExpression : DuplicateExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.BooleanStack);
     }
@@ -48,5 +48,5 @@
   [PushExpression(StackType.Name, "NAME.DUP")]
   public class NameDuplicateExpression : DuplicateExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.NameStack);
     }
@@ -55,5 +55,5 @@
   [PushExpression(StackType.Exec, "EXEC.DUP")]
   public class ExecDuplicateExpression : DuplicateExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.ExecStack);
     }
@@ -62,5 +62,5 @@
   [PushExpression(StackType.Code, "CODE.DUP")]
   public class CodeDuplicateExpression : DuplicateExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.CodeStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/EqualsExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/EqualsExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/EqualsExpressions.cs	(revision 14733)
@@ -20,5 +20,5 @@
   [PushExpression(StackType.Integer, "INTEGER.=")]
   public class IntegerEqualsExpression : EqualsExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, interpreter.BooleanStack);
     }
@@ -27,5 +27,5 @@
   [PushExpression(StackType.Float, "FLOAT.=")]
   public class FloatEqualsExpression : EqualsExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, interpreter.BooleanStack);
     }
@@ -34,5 +34,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.=")]
   public class BooleanEqualsExpression : EqualsExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.BooleanStack, interpreter.BooleanStack);
     }
@@ -41,5 +41,5 @@
   [PushExpression(StackType.Name, "NAME.=")]
   public class NameEqualsExpression : EqualsExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.NameStack, interpreter.BooleanStack);
     }
@@ -48,5 +48,5 @@
   [PushExpression(StackType.Exec, "EXEC.=")]
   public class ExecEqualsExpression : EqualsExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.ExecStack, interpreter.BooleanStack);
     }
@@ -55,5 +55,5 @@
   [PushExpression(StackType.Code, "CODE.=")]
   public class CodeEqualsExpression : EqualsExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.CodeStack, interpreter.BooleanStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExecExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExecExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExecExpressions.cs	(revision 14733)
@@ -9,5 +9,5 @@
   using Interpreter;
 
-  public class ExecExpandExpression : StatefullExpression<PushProgram> {
+  public class ExecExpandExpression : StatefulExpression<PushProgram> {
     public static readonly ExecExpandExpression Empty = new ExecExpandExpression();
 
@@ -32,5 +32,5 @@
     }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       interpreter.ExecStack.Push(this.State.Expressions);
     }
@@ -81,5 +81,5 @@
   [PushExpression(StackType.Exec, "EXEC.IF")]
   public class ExecIfExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       // not enough arguments on stack
       if ((interpreter.BooleanStack.Count == 0) || (interpreter.ExecStack.Count < 2)) return;
@@ -98,5 +98,5 @@
   [PushExpression(StackType.Exec, "EXEC.Y")]
   public class ExecYExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       // not enough arguments on stack
       if (interpreter.ExecStack.Count == 0 ||
@@ -119,5 +119,5 @@
   [PushExpression(StackType.Exec, "EXEC.K")]
   public class ExecKExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.ExecStack.Count < 2) return;
 
@@ -134,5 +134,5 @@
   [PushExpression(StackType.Exec, "EXEC.S")]
   public class ExecSExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.ExecStack.Count < 3) return;
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/Expression.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/Expression.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/Expression.cs	(revision 14733)
@@ -24,5 +24,5 @@
     }
 
-    public abstract void Eval(IPushGpInterpreter interpreter);
+    public abstract void Eval(IPushInterpreter interpreter);
 
     public override string ToString() {
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExpressionTable.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExpressionTable.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExpressionTable.cs	(revision 14733)
@@ -65,5 +65,5 @@
     private static Dictionary<string, Func<Expression>> GetStatefullExpressionFactory() {
       var dictionary = new Dictionary<string, Func<Expression>>();
-      var statefullExpressionType = typeof(StatefullExpression<>);
+      var statefullExpressionType = typeof(StatefulExpression<>);
       var expressionTypes = GetExpressionTypes(statefullExpressionType);
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FloatExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FloatExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FloatExpressions.cs	(revision 14733)
@@ -11,5 +11,5 @@
   [PushExpression(StackType.Float, "FLOAT.+")]
   public class FloatAddExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.FloatStack, 2, values => values[0] + values[1]);
     }
@@ -21,5 +21,5 @@
   [PushExpression(StackType.Float, "FLOAT.-")]
   public class FloatSubtractExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, 2, values => values[0] - values[1]);
     }
@@ -31,5 +31,5 @@
   [PushExpression(StackType.Float, "FLOAT.*")]
   public class FloatMultiplyExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, 2, values => values[0] * values[1]);
     }
@@ -42,5 +42,5 @@
   [PushExpression(StackType.Float, "FLOAT./")]
   public class FloatDivideExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, 2, values => values[0] / values[1], 0);
     }
@@ -56,5 +56,5 @@
   [PushExpression(StackType.Float, "FLOAT.%")]
   public class FloatModuloExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, 2, values => values[0] % values[1], 0);
     }
@@ -66,5 +66,5 @@
   [PushExpression(StackType.Float, "FLOAT.MIN")]
   public class FloatMinExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, 2, values => Math.Min(values[0], values[1]));
     }
@@ -76,5 +76,5 @@
   [PushExpression(StackType.Float, "FLOAT.MAX")]
   public class FloatMaxExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, 2, values => Math.Max(values[0], values[1]));
     }
@@ -86,5 +86,5 @@
   [PushExpression(StackType.Float, "FLOAT.<")]
   public class FloatSmallerThanExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, interpreter.BooleanStack, 2, values => values[0] < values[1]);
     }
@@ -96,5 +96,5 @@
   [PushExpression(StackType.Float, "FLOAT.>")]
   public class FloatGreaterThanExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, interpreter.BooleanStack, 2, values => values[0] > values[1]);
     }
@@ -106,5 +106,5 @@
   [PushExpression(StackType.Float, "FLOAT.SIN")]
   public class FloatSineExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, 1, values => Math.Sin(values[0]));
     }
@@ -116,5 +116,5 @@
   [PushExpression(StackType.Float, "FLOAT.COS")]
   public class FloatCosineExpression : PushResultExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, 1, values => Math.Cos(values[0]));
     }
@@ -126,5 +126,5 @@
   [PushExpression(StackType.Float, "FLOAT.FROMBOOLEAN")]
   public class FloatFromBooleanExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.BooleanStack.Count == 0) return;
 
@@ -141,5 +141,5 @@
   [PushExpression(StackType.Float, "FLOAT.FROMINTEGER")]
   public class FloatFromIntegerExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.IntegerStack.Count == 0) return;
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FlushExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FlushExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/FlushExpressions.cs	(revision 14733)
@@ -17,5 +17,5 @@
   [PushExpression(StackType.Integer, "INTEGER.FLUSH")]
   public class IntegerFlushExpression : FlushExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.IntegerStack);
     }
@@ -24,5 +24,5 @@
   [PushExpression(StackType.Float, "FLOAT.FLUSH")]
   public class FloatFlushExpression : FlushExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.FloatStack);
     }
@@ -31,5 +31,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.FLUSH")]
   public class BooleanFlushExpression : FlushExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.BooleanStack);
     }
@@ -38,5 +38,5 @@
   [PushExpression(StackType.Name, "NAME.FLUSH")]
   public class NameFlushExpression : FlushExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.NameStack);
     }
@@ -45,5 +45,5 @@
   [PushExpression(StackType.Exec, "EXEC.FLUSH")]
   public class ExecFlushExpression : FlushExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.ExecStack);
     }
@@ -52,5 +52,5 @@
   [PushExpression(StackType.Code, "CODE.FLUSH")]
   public class CodeFlushExpression : FlushExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.CodeStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/IntegerExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/IntegerExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/IntegerExpressions.cs	(revision 14733)
@@ -12,5 +12,5 @@
   [PushExpression(StackType.Integer, "INTEGER.+")]
   public class IntegerAddExpression : PushResultExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, 2, values => values[0] + values[1]);
     }
@@ -22,5 +22,5 @@
   [PushExpression(StackType.Integer, "INTEGER.-")]
   public class IntegerSubtractExpression : PushResultExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, 2, values => values[0] - values[1]);
     }
@@ -32,5 +32,5 @@
   [PushExpression(StackType.Integer, "INTEGER.*")]
   public class IntegerMultiplyExpression : PushResultExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, 2, values => values[0] * values[1]);
     }
@@ -43,5 +43,5 @@
   [PushExpression(StackType.Integer, "INTEGER./")]
   public class IntegerDivideExpression : PushResultExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, 2, values => values[0] / values[1], 0);
     }
@@ -58,5 +58,5 @@
   [PushExpression(StackType.Integer, "INTEGER.%")]
   public class IntegerModuloExpression : PushResultExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, 2, values => values[0] % values[1], 0);
     }
@@ -68,5 +68,5 @@
   [PushExpression(StackType.Integer, "INTEGER.MIN")]
   public class IntegerMinExpression : PushResultExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, 2, values => Math.Min(values[0], values[1]));
     }
@@ -78,5 +78,5 @@
   [PushExpression(StackType.Integer, "INTEGER.MAX")]
   public class IntegerMaxExpression : PushResultExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, 2, values => Math.Max(values[0], values[1]));
     }
@@ -88,5 +88,5 @@
   [PushExpression(StackType.Integer, "INTEGER.<")]
   public class IntegerSmallerThanExpression : PushResultExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, interpreter.BooleanStack, 2, values => values[0] < values[1]);
     }
@@ -98,5 +98,5 @@
   [PushExpression(StackType.Integer, "INTEGER.>")]
   public class IntegerGreaterThanExpression : PushResultExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, interpreter.BooleanStack, 2, values => values[0] > values[1]);
     }
@@ -108,5 +108,5 @@
   [PushExpression(StackType.Integer, "INTEGER.FROMBOOLEAN")]
   public class IntegerFromBooleanExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.BooleanStack.Count == 0) return;
 
@@ -123,5 +123,5 @@
   [PushExpression(StackType.Integer, "INTEGER.FROMFLOAT")]
   public class IntegerFromFloatExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.FloatStack.Count == 0) return;
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/LoopExpression.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/LoopExpression.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/LoopExpression.cs	(revision 14733)
@@ -32,9 +32,9 @@
   }
 
-  public abstract class LoopExpression : StatefullExpression<LoopState> {
+  public abstract class LoopExpression : StatefulExpression<LoopState> {
     protected LoopExpression() : base(new LoopState()) { }
     protected LoopExpression(LoopState state) : base(state) { }
 
-    protected void Eval(IPushGpInterpreter interpreter, IStack<Expression> sourceStack, bool pushCurrentIndex = false) {
+    protected void Eval(IPushInterpreter interpreter, IStack<Expression> sourceStack, bool pushCurrentIndex = false) {
       // if not initialized
       if (this.State.Body == null) {
@@ -59,5 +59,5 @@
     protected abstract LoopExpression Clone(LoopState state);
 
-    protected virtual void PushIteration(IPushGpInterpreter interpreter) {
+    protected virtual void PushIteration(IPushInterpreter interpreter) {
       interpreter.IntegerStack.Push(this.State.CurrentIndex);
 
@@ -68,5 +68,5 @@
     }
 
-    protected virtual void PushLastIteration(IPushGpInterpreter interpreter) {
+    protected virtual void PushLastIteration(IPushInterpreter interpreter) {
       interpreter.IntegerStack.Push(this.State.CurrentIndex);
       interpreter.ExecStack.Push(this.State.Body);
@@ -95,7 +95,7 @@
     //}
 
-    protected abstract bool HasInsufficientArguments(IPushGpInterpreter interpreter, IStack<Expression> sourceStack);
+    protected abstract bool HasInsufficientArguments(IPushInterpreter interpreter, IStack<Expression> sourceStack);
 
-    protected abstract LoopState InitState(IPushGpInterpreter interpreter, IStack<Expression> sourceStack);
+    protected abstract LoopState InitState(IPushInterpreter interpreter, IStack<Expression> sourceStack);
   }
 }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/NameExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/NameExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/NameExpressions.cs	(revision 14733)
@@ -5,8 +5,8 @@
   using Interpreter;
 
-  public class NameDefineXExecExpression : StatefullExpression<string> {
+  public class NameDefineXExecExpression : StatefulExpression<string> {
     public NameDefineXExecExpression(string state) : base(state) { }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Expression expression;
       if (!interpreter.IsNameQuoteFlagSet &&
@@ -31,5 +31,5 @@
   [PushExpression(StackType.Name, "NAME.QUOTE")]
   public class NameQuoteExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       interpreter.IsNameQuoteFlagSet = true;
     }
@@ -41,5 +41,5 @@
   [PushExpression(StackType.Name, "NAME.RANDBOUNDNAME")]
   public class NameRandBoundNameExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.CustomExpressions.Count == 0)
         return;
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PopExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PopExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PopExpressions.cs	(revision 14733)
@@ -15,5 +15,5 @@
   [PushExpression(StackType.Integer, "INTEGER.POP")]
   public class IntegerPopExpression : PopExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack);
     }
@@ -22,5 +22,5 @@
   [PushExpression(StackType.Float, "FLOAT.POP")]
   public class FloatPopExpression : PopExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack);
     }
@@ -29,5 +29,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.POP")]
   public class BooleanPopExpression : PopExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.BooleanStack);
     }
@@ -36,5 +36,5 @@
   [PushExpression(StackType.Name, "NAME.POP")]
   public class NamePopExpression : PopExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.NameStack);
     }
@@ -43,5 +43,5 @@
   [PushExpression(StackType.Exec, "EXEC.POP")]
   public class ExecPopExpression : PopExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.ExecStack);
     }
@@ -50,5 +50,5 @@
   [PushExpression(StackType.Code, "CODE.POP")]
   public class CodePopExpression : PopExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.CodeStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/PushExpressions.cs	(revision 14733)
@@ -3,5 +3,5 @@
   using HeuristicLab.Problems.ProgramSynthesis.Push.Stack;
 
-  public abstract class PushExpression<T> : StatefullExpression<T> {
+  public abstract class PushExpression<T> : StatefulExpression<T> {
 
     protected PushExpression(T state) : base(state) { }
@@ -18,5 +18,5 @@
     }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack);
     }
@@ -28,5 +28,5 @@
     }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack);
     }
@@ -38,5 +38,5 @@
     }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.BooleanStack);
     }
@@ -48,5 +48,5 @@
     }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.NameStack);
     }
@@ -58,5 +58,5 @@
     }
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.ExecStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RandExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RandExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RandExpressions.cs	(revision 14733)
@@ -10,5 +10,5 @@
   [PushExpression(StackType.Name, "NAME.RAND")]
   public class NameRandExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       var name = NameGenerator.RandomName(interpreter.Random);
 
@@ -22,5 +22,5 @@
   [PushExpression(StackType.Integer, "INTEGER.RAND")]
   public class IntegerRandExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       var value = interpreter.Random.Next(
           interpreter.Configuration.MinRandomInteger,
@@ -36,5 +36,5 @@
   [PushExpression(StackType.Float, "FLOAT.RAND")]
   public class FloatRandExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       var value = interpreter.Random.NextDouble() * (interpreter.Configuration.MaxRandomFloat - interpreter.Configuration.MinRandomFloat) + interpreter.Configuration.MinRandomFloat;
 
@@ -48,5 +48,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.RAND")]
   public class BooleanRandExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       var value = interpreter.Random.NextDouble() > 0.5;
 
@@ -60,5 +60,5 @@
   [PushExpression(StackType.Code, "CODE.RAND")]
   public class CodeRandExpression : StatelessExpression {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       if (interpreter.IntegerStack.Count == 0 ||
           interpreter.IntegerStack.Top < 1) return;
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RotateExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RotateExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RotateExpressions.cs	(revision 14733)
@@ -16,5 +16,5 @@
   [PushExpression(StackType.Integer, "INTEGER.ROT")]
   public class IntegerRotateExpression : RotateExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.IntegerStack);
     }
@@ -23,5 +23,5 @@
   [PushExpression(StackType.Float, "FLOAT.ROT")]
   public class FloatRotateExpression : RotateExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.FloatStack);
     }
@@ -30,5 +30,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.ROT")]
   public class BooleanRotateExpression : RotateExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.BooleanStack);
     }
@@ -37,5 +37,5 @@
   [PushExpression(StackType.Name, "NAME.ROT")]
   public class NameRotateExpression : RotateExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.NameStack);
     }
@@ -44,5 +44,5 @@
   [PushExpression(StackType.Exec, "EXEC.ROT")]
   public class ExecRotateExpression : RotateExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.ExecStack);
     }
@@ -51,5 +51,5 @@
   [PushExpression(StackType.Code, "CODE.ROT")]
   public class CodeRotateExpression : RotateExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.CodeStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ShoveExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ShoveExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ShoveExpressions.cs	(revision 14733)
@@ -22,5 +22,5 @@
   [PushExpression(StackType.Integer, "INTEGER.SHOVE")]
   public class IntegerShoveExpression : ShoveExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.IntegerStack, interpreter.IntegerStack, 2);
     }
@@ -29,5 +29,5 @@
   [PushExpression(StackType.Float, "FLOAT.SHOVE")]
   public class FloatShoveExpression : ShoveExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.FloatStack, interpreter.IntegerStack);
     }
@@ -36,5 +36,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.SHOVE")]
   public class BooleanShoveExpression : ShoveExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.BooleanStack, interpreter.IntegerStack);
     }
@@ -43,5 +43,5 @@
   [PushExpression(StackType.Name, "NAME.SHOVE")]
   public class NameShoveExpression : ShoveExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.NameStack, interpreter.IntegerStack);
     }
@@ -50,5 +50,5 @@
   [PushExpression(StackType.Exec, "EXEC.SHOVE")]
   public class ExecShoveExpression : ShoveExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.ExecStack, interpreter.IntegerStack);
     }
@@ -57,5 +57,5 @@
   [PushExpression(StackType.Code, "CODE.SHOVE")]
   public class CodeShoveExpression : ShoveExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.CodeStack, interpreter.IntegerStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StackdepthExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StackdepthExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StackdepthExpressions.cs	(revision 14733)
@@ -22,5 +22,5 @@
   public class IntegerStackdepthExpression : StackdepthExpression<long> {
 
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.IntegerStack, interpreter.IntegerStack, true);
     }
@@ -29,5 +29,5 @@
   [PushExpression(StackType.Float, "FLOAT.STACKDEPTH")]
   public class FloatStackdepthExpression : StackdepthExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.FloatStack, interpreter.IntegerStack);
     }
@@ -36,5 +36,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.STACKDEPTH")]
   public class BooleanStackdepthExpression : StackdepthExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.BooleanStack, interpreter.IntegerStack);
     }
@@ -43,5 +43,5 @@
   [PushExpression(StackType.Name, "NAME.STACKDEPTH")]
   public class NameStackdepthExpression : StackdepthExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.NameStack, interpreter.IntegerStack);
     }
@@ -50,5 +50,5 @@
   [PushExpression(StackType.Exec, "EXEC.STACKDEPTH")]
   public class ExecStackdepthExpression : StackdepthExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.ExecStack, interpreter.IntegerStack);
     }
@@ -57,5 +57,5 @@
   [PushExpression(StackType.Code, "CODE.STACKDEPTH")]
   public class CodeStackdepthExpression : StackdepthExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.CodeStack, interpreter.IntegerStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StatelessExpression.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StatelessExpression.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/StatelessExpression.cs	(revision 14733)
@@ -3,5 +3,5 @@
     private readonly int hashCode;
     protected StatelessExpression() {
-      this.hashCode = this.GetType().FullName.GetHashCode();
+      this.hashCode = this.GetType().GetHashCode();
     }
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/SwapExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/SwapExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/SwapExpressions.cs	(revision 14733)
@@ -20,5 +20,5 @@
   [PushExpression(StackType.Integer, "INTEGER.SWAP")]
   public class IntegerSwapExpression : SwapExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.IntegerStack);
     }
@@ -27,5 +27,5 @@
   [PushExpression(StackType.Float, "FLOAT.SWAP")]
   public class FloatSwapExpression : SwapExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.FloatStack);
     }
@@ -34,5 +34,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.SWAP")]
   public class BooleanSwapExpression : SwapExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.BooleanStack);
     }
@@ -41,5 +41,5 @@
   [PushExpression(StackType.Name, "NAME.SWAP")]
   public class NameSwapExpression : SwapExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.NameStack);
     }
@@ -48,5 +48,5 @@
   [PushExpression(StackType.Exec, "EXEC.SWAP")]
   public class ExecSwapExpression : SwapExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.ExecStack);
     }
@@ -55,5 +55,5 @@
   [PushExpression(StackType.Code, "CODE.SWAP")]
   public class CodeSwapExpression : SwapExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       Eval(interpreter.CodeStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankDuplicateExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankDuplicateExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankDuplicateExpressions.cs	(revision 14733)
@@ -48,5 +48,5 @@
   [PushExpression(StackType.Integer, "INTEGER.YANKDUP")]
   public class IntegerYankDuplicateExpression : YankDuplicateExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack);
     }
@@ -55,5 +55,5 @@
   [PushExpression(StackType.Float, "FLOAT.YANKDUP")]
   public class FloatYankDuplicateExpression : YankDuplicateExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, interpreter.IntegerStack);
     }
@@ -62,5 +62,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.YANKDUP")]
   public class BooleanYankDuplicateExpression : YankDuplicateExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.BooleanStack, interpreter.IntegerStack);
     }
@@ -69,5 +69,5 @@
   [PushExpression(StackType.Name, "NAME.YANKDUP")]
   public class NameYankDuplicateExpression : YankDuplicateExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.NameStack, interpreter.IntegerStack);
     }
@@ -76,5 +76,5 @@
   [PushExpression(StackType.Exec, "EXEC.YANKDUP")]
   public class ExecYankDuplicateExpression : YankDuplicateExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.ExecStack, interpreter.IntegerStack);
     }
@@ -83,5 +83,5 @@
   [PushExpression(StackType.Code, "CODE.YANKDUP")]
   public class CodeYankDuplicateExpression : YankDuplicateExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.CodeStack, interpreter.IntegerStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankExpressions.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankExpressions.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/YankExpressions.cs	(revision 14733)
@@ -24,5 +24,5 @@
   [PushExpression(StackType.Integer, "INTEGER.YANK")]
   public class IntegerYankExpression : YankExpression<long> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.IntegerStack, interpreter.IntegerStack, 2);
     }
@@ -31,5 +31,5 @@
   [PushExpression(StackType.Float, "FLOAT.YANK")]
   public class FloatYankExpression : YankExpression<double> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.FloatStack, interpreter.IntegerStack);
     }
@@ -38,5 +38,5 @@
   [PushExpression(StackType.Boolean, "BOOLEAN.YANK")]
   public class BooleanYankExpression : YankExpression<bool> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.BooleanStack, interpreter.IntegerStack);
     }
@@ -45,5 +45,5 @@
   [PushExpression(StackType.Name, "NAME.YANK")]
   public class NameYankExpression : YankExpression<string> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.NameStack, interpreter.IntegerStack);
     }
@@ -52,5 +52,5 @@
   [PushExpression(StackType.Exec, "EXEC.YANK")]
   public class ExecYankExpression : YankExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.ExecStack, interpreter.IntegerStack);
     }
@@ -59,5 +59,5 @@
   [PushExpression(StackType.Code, "CODE.YANK")]
   public class CodeYankExpression : YankExpression<Expression> {
-    public override void Eval(IPushGpInterpreter interpreter) {
+    public override void Eval(IPushInterpreter interpreter) {
       this.Eval(interpreter.CodeStack, interpreter.IntegerStack);
     }
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/CodeGenerator.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/CodeGenerator.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Generators/CodeGenerator.cs	(revision 14733)
@@ -19,5 +19,5 @@
   public static class CodeGenerator {
 
-    public static PushProgram RandomProgram(int maxPoints, IRandom random = null, IReadonlyPushGpConfiguration pushGpConfiguration = null, IDictionary<string, Expression> customExpressions = null) {
+    public static PushProgram RandomProgram(int maxPoints, IRandom random = null, IReadonlyPushConfiguration pushGpConfiguration = null, IDictionary<string, Expression> customExpressions = null) {
       var code = RandomCode(maxPoints, random, pushGpConfiguration, customExpressions);
 
@@ -25,5 +25,5 @@
     }
 
-    public static ExecExpandExpression RandomExpandExpression(int maxPoints, IRandom random = null, IReadonlyPushGpConfiguration pushGpConfiguration = null, IDictionary<string, Expression> customExpressions = null) {
+    public static ExecExpandExpression RandomExpandExpression(int maxPoints, IRandom random = null, IReadonlyPushConfiguration pushGpConfiguration = null, IDictionary<string, Expression> customExpressions = null) {
       var program = RandomProgram(maxPoints, random, pushGpConfiguration, customExpressions);
 
@@ -31,10 +31,10 @@
     }
 
-    public static IEnumerable<Expression> RandomCode(int maxPoints, IRandom random = null, IReadonlyPushGpConfiguration pushGpConfiguration = null, IDictionary<string, Expression> customExpressions = null) {
+    public static IEnumerable<Expression> RandomCode(int maxPoints, IRandom random = null, IReadonlyPushConfiguration pushGpConfiguration = null, IDictionary<string, Expression> customExpressions = null) {
       if (maxPoints == 0)
         return new Expression[0];
 
       random = random ?? new FastRandom();
-      pushGpConfiguration = pushGpConfiguration ?? new PushGpConfiguration();
+      pushGpConfiguration = pushGpConfiguration ?? new PushConfiguration();
 
       if (pushGpConfiguration.EnabledExpressions.Count == 0)
@@ -46,5 +46,5 @@
     }
 
-    private static IEnumerable<Expression> RandomCodeWithSize(int points, IRandom random, IReadonlyPushGpConfiguration pushGpConfiguration, IDictionary<string, Expression> customExpressions = null) {
+    private static IEnumerable<Expression> RandomCodeWithSize(int points, IRandom random, IReadonlyPushConfiguration pushGpConfiguration, IDictionary<string, Expression> customExpressions = null) {
       if (points == 1) {
 
@@ -70,5 +70,5 @@
     }
 
-    private static Expression CreateExpression(IRandom random, IReadonlyPushGpConfiguration pushGpConfiguration, IDictionary<string, Expression> customExpressions = null) {
+    private static Expression CreateExpression(IRandom random, IReadonlyPushConfiguration pushGpConfiguration, IDictionary<string, Expression> customExpressions = null) {
       var customCount = customExpressions == null ? 0 : customExpressions.Count - 1;
       var index = random.Next(0, pushGpConfiguration.EnabledExpressions.Count + customCount - 1);
@@ -85,5 +85,5 @@
     }
 
-    private static Expression CreateRandomErcExpression(IRandom random, IReadonlyPushGpConfiguration pushGpConfiguration) {
+    private static Expression CreateRandomErcExpression(IRandom random, IReadonlyPushConfiguration pushGpConfiguration) {
       var value = random.Next(0, 3);
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushProblem.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushProblem.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushProblem.cs	(revision 14733)
@@ -23,10 +23,10 @@
   public class PushProblem : SingleObjectiveBasicProblem<IntegerVectorEncoding>, IProblemInstanceConsumer<Data> {
     [Storable]
-    private readonly PushGpConfiguration config;
-    private PushGpInterpreterPool pool;
+    private readonly PushConfiguration config;
+    private PushInterpreterPool pool;
 
     public PushProblem() {
-      config = new PushGpConfiguration();
-      pool = new PushGpInterpreterPool(config);
+      config = new PushConfiguration();
+      pool = new PushInterpreterPool(config);
 
       InitEvents();
@@ -43,9 +43,9 @@
       : base(original, cloner) {
       config = cloner.Clone(original.config);
-      pool = new PushGpInterpreterPool(config);
+      pool = new PushInterpreterPool(config);
+
       Instructions = config;
 
       this.InitEvents();
-      this.AddDataParameter();
     }
 
@@ -54,15 +54,8 @@
     // ReSharper disable once UnusedMember.Local
     private void AfterDeserialization() {
-      pool = new PushGpInterpreterPool(config);
+      pool = new PushInterpreterPool(config);
       Instructions = config;
 
-      AddDataParameter();
       InitEvents();
-    }
-
-    [StorableHook(HookType.BeforeSerialization)]
-    // ReSharper disable once UnusedMember.Local
-    private void BeforeDeserialization() {
-      this.Parameters.Remove(DataParameter);
     }
 
@@ -181,14 +174,9 @@
         new IntValue(config.MaxPointsInRandomExpression)) { Hidden = true });
 
-      AddDataParameter();
+      Parameters.Add(new ValueParameter<Data>(DataParameterName, DataParameterDescription));
 
       Encoding.Bounds[0, 0] = 0;
       Encoding.Bounds[0, 1] = config.EnabledExpressions.Count - 1;
       Encoding.Length = config.MaxPointsInProgram;
-    }
-
-    private void AddDataParameter() {
-      if (!Parameters.ContainsKey(DataParameterName))
-        Parameters.Add(new ValueParameter<Data>(DataParameterName, DataParameterDescription));
     }
 
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushSolution.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushSolution.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushSolution.cs	(revision 14733)
@@ -14,8 +14,8 @@
     public readonly Data Data;
     public readonly IRandom Random;
-    public readonly PushGpInterpreterPool Pool;
+    public readonly PushInterpreterPool Pool;
 
     public PushSolution(PushProgram program, double quality, Data data,
-      IRandom random, PushGpInterpreterPool pool)
+      IRandom random, PushInterpreterPool pool)
       : base("Solution", "A push solution.") {
       Program = program;
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/ProblemTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/ProblemTests.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Benchmark/ProblemTests.cs	(revision 14733)
@@ -141,6 +141,6 @@
 
       Expression bestProgram = null;
-      var config = new PushGpConfiguration { EvalPushLimit = 4096 };
-      var pool = new PushGpInterpreterPool(config);
+      var config = new PushConfiguration { EvalPushLimit = 4096 };
+      var pool = new PushInterpreterPool(config);
 
       var instance = new BenchmarkSuiteInstanceProvider();
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/ExpressionTest.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/ExpressionTest.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/ExpressionTest.cs	(revision 14733)
@@ -8,5 +8,5 @@
     protected PushGpInterpreter interpreter;
 
-    protected PushGpConfiguration configuration = new PushGpConfiguration { TopLevelPushCode = false };
+    protected PushConfiguration configuration = new PushConfiguration { TopLevelPushCode = false };
 
     [TestInitialize]
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/CodeExpressionTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/CodeExpressionTests.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/CodeExpressionTests.cs	(revision 14733)
@@ -29,7 +29,7 @@
     [TestCategory("CodeExpressionTest")]
     public void TestAppendLists() {
-      var first = PushGPParser.Parse("( A )");
-      var second = PushGPParser.Parse("( B )");
-      var result = PushGPParser.Parse("( A B )");
+      var first = PushParser.Parse("( A )");
+      var second = PushParser.Parse("( B )");
+      var result = PushParser.Parse("( A B )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -45,7 +45,7 @@
     [TestCategory("CodeExpressionTest")]
     public void TestAppendListAndLiteral() {
-      var first = PushGPParser.Parse("( A )");
-      var second = PushGPParser.Parse("5");
-      var result = PushGPParser.Parse("( A 5 )");
+      var first = PushParser.Parse("( A )");
+      var second = PushParser.Parse("5");
+      var result = PushParser.Parse("( A 5 )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -61,7 +61,7 @@
     [TestCategory("CodeExpressionTest")]
     public void TestAppendLiterals() {
-      var first = PushGPParser.Parse("4");
-      var second = PushGPParser.Parse("5");
-      var result = PushGPParser.Parse("( 4 5 )");
+      var first = PushParser.Parse("4");
+      var second = PushParser.Parse("5");
+      var result = PushParser.Parse("( 4 5 )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -77,6 +77,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDuplicateList() {
-      var list = PushGPParser.Parse("( A B C )");
-      var result = PushGPParser.Parse("( A B C )");
+      var list = PushParser.Parse("( A B C )");
+      var result = PushParser.Parse("( A B C )");
 
       this.interpreter.CodeStack.Push(list);
@@ -95,5 +95,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestAtomList() {
-      var first = PushGPParser.Parse("( A )");
+      var first = PushParser.Parse("( A )");
 
       this.interpreter.CodeStack.Push(first);
@@ -109,5 +109,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestAtomLiteral() {
-      var first = PushGPParser.Parse("5");
+      var first = PushParser.Parse("5");
 
       this.interpreter.CodeStack.Push(first);
@@ -123,5 +123,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestAtomSingleInstruction() {
-      var first = PushGPParser.Parse("INTEGER.+");
+      var first = PushParser.Parse("INTEGER.+");
 
       this.interpreter.CodeStack.Push(first);
@@ -137,6 +137,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestCarList() {
-      var first = PushGPParser.Parse("( A B C )");
-      var result = PushGPParser.Parse("A");
+      var first = PushParser.Parse("( A B C )");
+      var result = PushParser.Parse("A");
 
       this.interpreter.CodeStack.Push(first);
@@ -152,6 +152,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestCarNoList() {
-      var first = PushGPParser.Parse("5");
-      var result = PushGPParser.Parse("5");
+      var first = PushParser.Parse("5");
+      var result = PushParser.Parse("5");
 
       this.interpreter.CodeStack.Push(first);
@@ -167,6 +167,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestCdrList() {
-      var first = PushGPParser.Parse("( A B C )");
-      var result = PushGPParser.Parse("( B C )");
+      var first = PushParser.Parse("( A B C )");
+      var result = PushParser.Parse("( B C )");
 
       this.interpreter.CodeStack.Push(first);
@@ -182,6 +182,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestCdrNoList() {
-      var first = PushGPParser.Parse("5");
-      var result = PushGPParser.Parse("( )");
+      var first = PushParser.Parse("5");
+      var result = PushParser.Parse("( )");
 
       this.interpreter.CodeStack.Push(first);
@@ -197,7 +197,7 @@
     [TestCategory("CodeExpressionTest")]
     public void TestCons() {
-      var first = PushGPParser.Parse("( B C )");
-      var second = PushGPParser.Parse("A");
-      var result = PushGPParser.Parse("( A B C )");
+      var first = PushParser.Parse("( B C )");
+      var second = PushParser.Parse("A");
+      var result = PushParser.Parse("( A B C )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -213,6 +213,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestContainsTrue() {
-      var first = PushGPParser.Parse("A");
-      var second = PushGPParser.Parse("( A B C )");
+      var first = PushParser.Parse("A");
+      var second = PushParser.Parse("( A B C )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -228,6 +228,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestContainsFalse() {
-      var first = PushGPParser.Parse("D");
-      var second = PushGPParser.Parse("( A B C )");
+      var first = PushParser.Parse("D");
+      var second = PushParser.Parse("( A B C )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -243,7 +243,7 @@
     [TestCategory("CodeExpressionTest")]
     public void TestContainer() {
-      var first = PushGPParser.Parse("( A )");
-      var second = PushGPParser.Parse("( B ( C ( A ) ) ( D ( A ) ) )");
-      var result = PushGPParser.Parse("( C ( A ) )");
+      var first = PushParser.Parse("( A )");
+      var second = PushParser.Parse("( B ( C ( A ) ) ( D ( A ) ) )");
+      var result = PushParser.Parse("( C ( A ) )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -259,5 +259,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDefinition() {
-      var code = PushGPParser.Parse("( A )");
+      var code = PushParser.Parse("( A )");
 
       this.interpreter.CustomExpressions.Add("Test", code);
@@ -275,5 +275,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDefinitionWithoutMatchingName() {
-      var code = PushGPParser.Parse("( A )");
+      var code = PushParser.Parse("( A )");
       var program = new CodeDefinitionExpression();
 
@@ -290,6 +290,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDiscrepancy() {
-      var first = PushGPParser.Parse("( A B )");
-      var second = PushGPParser.Parse("( B C )");
+      var first = PushParser.Parse("( A B )");
+      var second = PushParser.Parse("( B C )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -305,6 +305,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDiscrepancyAllEqual() {
-      var first = PushGPParser.Parse("( A B )");
-      var second = PushGPParser.Parse("( B A )");
+      var first = PushParser.Parse("( A B )");
+      var second = PushParser.Parse("( B A )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -320,6 +320,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDiscrepancyComplex() {
-      var first = PushGPParser.Parse("( A A B C D A )");
-      var second = PushGPParser.Parse("( A A B D E )");
+      var first = PushParser.Parse("( A A B C D A )");
+      var second = PushParser.Parse("( A A B D E )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -335,6 +335,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDiscrepancWithLists() {
-      var first = PushGPParser.Parse("( ( A ) A ( B ) C D A )");
-      var second = PushGPParser.Parse("( A ( A ) B D E )");
+      var first = PushParser.Parse("( ( A ) A ( B ) C D A )");
+      var second = PushParser.Parse("( A ( A ) B D E )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -350,5 +350,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDo() {
-      var prog = PushGPParser.Parse("( 10 )");
+      var prog = PushParser.Parse("( 10 )");
 
       this.interpreter.CodeStack.Push(prog);
@@ -364,5 +364,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDoX() {
-      var prog = PushGPParser.Parse("( 10 )");
+      var prog = PushParser.Parse("( 10 )");
 
       this.interpreter.CodeStack.Push(prog);
@@ -378,5 +378,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDoCount() {
-      var prog = PushGPParser.Parse("INTEGER.+");
+      var prog = PushParser.Parse("INTEGER.+");
 
       this.interpreter.IntegerStack.Push(3);
@@ -393,5 +393,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDoCountWithNegativeCounter() {
-      var prog = PushGPParser.Parse("INTEGER.+");
+      var prog = PushParser.Parse("INTEGER.+");
 
       this.interpreter.IntegerStack.Push(-1);
@@ -408,5 +408,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDoRange() {
-      var prog = PushGPParser.Parse("INTEGER.+");
+      var prog = PushParser.Parse("INTEGER.+");
 
       this.interpreter.IntegerStack.Push(3, 5);
@@ -423,5 +423,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDoRangeWithEqualIndecators() {
-      var prog = PushGPParser.Parse("INTEGER.+");
+      var prog = PushParser.Parse("INTEGER.+");
 
       this.interpreter.IntegerStack.Push(3, 3);
@@ -438,5 +438,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDoRangeWithNegativeIndecators() {
-      var prog = PushGPParser.Parse("INTEGER.+");
+      var prog = PushParser.Parse("INTEGER.+");
 
       this.interpreter.IntegerStack.Push(-3, -5);
@@ -453,5 +453,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDoTimes() {
-      var prog = PushGPParser.Parse("( INTEGER.DUP INTEGER.+ )");
+      var prog = PushParser.Parse("( INTEGER.DUP INTEGER.+ )");
 
       this.interpreter.IntegerStack.Push(2, 3);
@@ -468,5 +468,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestDoTimesWithNegativeCounter() {
-      var prog = PushGPParser.Parse("( INTEGER.DUP INTEGER.+ )");
+      var prog = PushParser.Parse("( INTEGER.DUP INTEGER.+ )");
 
       this.interpreter.IntegerStack.Push(2, -3);
@@ -519,6 +519,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestExtract() {
-      var prog = PushGPParser.Parse("( A ( B C ( D ) E ) F G H I J ( K ) L )");
-      var result = PushGPParser.Parse("( D )");
+      var prog = PushParser.Parse("( A ( B C ( D ) E ) F G H I J ( K ) L )");
+      var result = PushParser.Parse("( D )");
 
       this.interpreter.IntegerStack.Push(5);
@@ -535,6 +535,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestExtractInteger() {
-      var prog = PushGPParser.Parse("( A ( 5 C ( 4.2 ) INTEGER.+ ) FALSE )");
-      var result = PushGPParser.Parse("5");
+      var prog = PushParser.Parse("( A ( 5 C ( 4.2 ) INTEGER.+ ) FALSE )");
+      var result = PushParser.Parse("5");
 
       this.interpreter.IntegerStack.Push(3);
@@ -551,6 +551,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestExtractFloat() {
-      var prog = PushGPParser.Parse("( A ( 5 C ( 4.2 ) INTEGER.+ ) FALSE )");
-      var result = PushGPParser.Parse("4.2");
+      var prog = PushParser.Parse("( A ( 5 C ( 4.2 ) INTEGER.+ ) FALSE )");
+      var result = PushParser.Parse("4.2");
 
       this.interpreter.IntegerStack.Push(6);
@@ -567,6 +567,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestExtractBoolean() {
-      var prog = PushGPParser.Parse("( A ( 5 C ( 4.2 ) INTEGER.+ ) FALSE )");
-      var result = PushGPParser.Parse("FALSE");
+      var prog = PushParser.Parse("( A ( 5 C ( 4.2 ) INTEGER.+ ) FALSE )");
+      var result = PushParser.Parse("FALSE");
 
       this.interpreter.IntegerStack.Push(8);
@@ -583,6 +583,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestExtractInstruction() {
-      var prog = PushGPParser.Parse("( A ( 5 C ( 4.2 ) INTEGER.+ ) FALSE )");
-      var result = PushGPParser.Parse("INTEGER.+");
+      var prog = PushParser.Parse("( A ( 5 C ( 4.2 ) INTEGER.+ ) FALSE )");
+      var result = PushParser.Parse("INTEGER.+");
 
       this.interpreter.IntegerStack.Push(7);
@@ -599,5 +599,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestFromBoolean() {
-      var result = PushGPParser.Parse("FALSE");
+      var result = PushParser.Parse("FALSE");
       this.interpreter.BooleanStack.Push(false);
       this.interpreter.Run(new CodeFromBooleanExpression());
@@ -612,5 +612,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestFromFloat() {
-      var result = PushGPParser.Parse("4.1");
+      var result = PushParser.Parse("4.1");
       this.interpreter.FloatStack.Push(4.1);
       this.interpreter.Run(new CodeFromFloatExpression());
@@ -625,5 +625,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestFromInteger() {
-      var result = PushGPParser.Parse("4");
+      var result = PushParser.Parse("4");
       this.interpreter.IntegerStack.Push(4);
       this.interpreter.Run(new CodeFromIntegerExpression());
@@ -638,5 +638,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestFromName() {
-      var result = PushGPParser.Parse("A");
+      var result = PushParser.Parse("A");
       this.interpreter.NameStack.Push("A");
       this.interpreter.Run(new CodeFromNameExpression());
@@ -651,6 +651,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestIfTrue() {
-      var first = PushGPParser.Parse("FALSCH");
-      var second = PushGPParser.Parse("WAHR");
+      var first = PushParser.Parse("FALSCH");
+      var second = PushParser.Parse("WAHR");
 
       this.interpreter.BooleanStack.Push(true);
@@ -667,6 +667,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestIfFalse() {
-      var first = PushGPParser.Parse("FALSCH");
-      var second = PushGPParser.Parse("WAHR");
+      var first = PushParser.Parse("FALSCH");
+      var second = PushParser.Parse("WAHR");
 
       this.interpreter.BooleanStack.Push(false);
@@ -683,7 +683,7 @@
     [TestCategory("CodeExpressionTest")]
     public void TestInsert() {
-      var first = PushGPParser.Parse("( A ( B ) C D )");
-      var second = PushGPParser.Parse("( E )");
-      var result = PushGPParser.Parse("( A ( B ) ( E ) D )");
+      var first = PushParser.Parse("( A ( B ) C D )");
+      var second = PushParser.Parse("( E )");
+      var result = PushParser.Parse("( A ( B ) ( E ) D )");
 
       this.interpreter.IntegerStack.Push(2);
@@ -700,7 +700,7 @@
     [TestCategory("CodeExpressionTest")]
     public void TestInsertWithNegativeN() {
-      var first = PushGPParser.Parse("( A ( B ) C D )");
-      var second = PushGPParser.Parse("( E )");
-      var result = PushGPParser.Parse("( A ( B ) ( E ) D )");
+      var first = PushParser.Parse("( A ( B ) C D )");
+      var second = PushParser.Parse("( E )");
+      var result = PushParser.Parse("( A ( B ) ( E ) D )");
 
       this.interpreter.IntegerStack.Push(-2);
@@ -717,7 +717,7 @@
     [TestCategory("CodeExpressionTest")]
     public void TestInsertWithTooBigN() {
-      var first = PushGPParser.Parse("( A ( B ) C D )");
-      var second = PushGPParser.Parse("( E )");
-      var result = PushGPParser.Parse("( A ( B ) ( E ) D )");
+      var first = PushParser.Parse("( A ( B ) C D )");
+      var second = PushParser.Parse("( E )");
+      var result = PushParser.Parse("( A ( B ) ( E ) D )");
 
       this.interpreter.IntegerStack.Push(10);
@@ -734,7 +734,7 @@
     [TestCategory("CodeExpressionTest")]
     public void TestList() {
-      var first = PushGPParser.Parse("A");
-      var second = PushGPParser.Parse("( B )");
-      var result = PushGPParser.Parse("( A ( B ) )");
+      var first = PushParser.Parse("A");
+      var second = PushParser.Parse("( B )");
+      var result = PushParser.Parse("( A ( B ) )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -750,6 +750,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestMemberTrue() {
-      var first = PushGPParser.Parse("( A B ( B ) C ");
-      var second = PushGPParser.Parse("( B )");
+      var first = PushParser.Parse("( A B ( B ) C ");
+      var second = PushParser.Parse("( B )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -765,6 +765,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestMemberFalse() {
-      var first = PushGPParser.Parse("( A B C ");
-      var second = PushGPParser.Parse("( B )");
+      var first = PushParser.Parse("( A B C ");
+      var second = PushParser.Parse("( B )");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -780,6 +780,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestMemberIfNoList() {
-      var first = PushGPParser.Parse("B");
-      var second = PushGPParser.Parse("B");
+      var first = PushParser.Parse("B");
+      var second = PushParser.Parse("B");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -805,6 +805,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNthIfNoList() {
-      var prog = PushGPParser.Parse("A");
-      var result = PushGPParser.Parse("A");
+      var prog = PushParser.Parse("A");
+      var result = PushParser.Parse("A");
 
       this.interpreter.IntegerStack.Push(3);
@@ -821,6 +821,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNthIfEmpty() {
-      var prog = PushGPParser.Parse("( )");
-      var result = PushGPParser.Parse("( )");
+      var prog = PushParser.Parse("( )");
+      var result = PushParser.Parse("( )");
 
       this.interpreter.IntegerStack.Push(3);
@@ -837,6 +837,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNth() {
-      var prog = PushGPParser.Parse("( A B C D E )");
-      var result = PushGPParser.Parse("D");
+      var prog = PushParser.Parse("( A B C D E )");
+      var result = PushParser.Parse("D");
 
       this.interpreter.IntegerStack.Push(3);
@@ -853,6 +853,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNthWithTooBigN() {
-      var prog = PushGPParser.Parse("( A B C D E )");
-      var result = PushGPParser.Parse("D");
+      var prog = PushParser.Parse("( A B C D E )");
+      var result = PushParser.Parse("D");
 
       this.interpreter.IntegerStack.Push(13);
@@ -869,6 +869,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNthWithNegativeN() {
-      var prog = PushGPParser.Parse("( A B C D E )");
-      var result = PushGPParser.Parse("D");
+      var prog = PushParser.Parse("( A B C D E )");
+      var result = PushParser.Parse("D");
 
       this.interpreter.IntegerStack.Push(-3);
@@ -885,6 +885,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNthCdr() {
-      var prog = PushGPParser.Parse("( A B C D E )");
-      var result = PushGPParser.Parse("D");
+      var prog = PushParser.Parse("( A B C D E )");
+      var result = PushParser.Parse("D");
 
       this.interpreter.IntegerStack.Push(2);
@@ -901,6 +901,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNthCdrWithTooBigN() {
-      var prog = PushGPParser.Parse("( A B C D E )");
-      var result = PushGPParser.Parse("D");
+      var prog = PushParser.Parse("( A B C D E )");
+      var result = PushParser.Parse("D");
 
       this.interpreter.IntegerStack.Push(10);
@@ -917,6 +917,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNthCdrWithNegativeN() {
-      var prog = PushGPParser.Parse("( A B C D E )");
-      var result = PushGPParser.Parse("D");
+      var prog = PushParser.Parse("( A B C D E )");
+      var result = PushParser.Parse("D");
 
       this.interpreter.IntegerStack.Push(-2);
@@ -933,6 +933,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNthCdrIfEmpty() {
-      var prog = PushGPParser.Parse("( )");
-      var result = PushGPParser.Parse("( )");
+      var prog = PushParser.Parse("( )");
+      var result = PushParser.Parse("( )");
 
       this.interpreter.IntegerStack.Push(3);
@@ -949,6 +949,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNthCdrIfNoList() {
-      var prog = PushGPParser.Parse("A");
-      var result = PushGPParser.Parse("A");
+      var prog = PushParser.Parse("A");
+      var result = PushParser.Parse("A");
 
       this.interpreter.IntegerStack.Push(3);
@@ -965,5 +965,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNullTrue() {
-      var prog = PushGPParser.Parse("( )");
+      var prog = PushParser.Parse("( )");
 
       this.interpreter.CodeStack.Push(prog);
@@ -979,5 +979,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestNullFalse() {
-      var prog = PushGPParser.Parse("A");
+      var prog = PushParser.Parse("A");
 
       this.interpreter.CodeStack.Push(prog);
@@ -993,6 +993,6 @@
     [TestCategory("CodeExpressionTest")]
     public void TestPosition() {
-      var first = PushGPParser.Parse("( A B C D )");
-      var second = PushGPParser.Parse("C");
+      var first = PushParser.Parse("( A B C D )");
+      var second = PushParser.Parse("C");
 
       this.interpreter.CodeStack.Push(second, first);
@@ -1008,5 +1008,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestQuote() {
-      var result = PushGPParser.Parse("A");
+      var result = PushParser.Parse("A");
 
       this.interpreter.Run("( CODE.QUOTE A )");
@@ -1021,5 +1021,5 @@
     [TestCategory("CodeExpressionTest")]
     public void TestSize() {
-      var prog = PushGPParser.Parse("( A ( B ( C ) ) ( D ) INTEGER.+ )");
+      var prog = PushParser.Parse("( A ( B ( C ) ) ( D ) INTEGER.+ )");
 
       this.interpreter.CodeStack.Push(prog);
@@ -1035,8 +1035,8 @@
     [TestCategory("CodeExpressionTest")]
     public void TestSubstitude() {
-      var first = PushGPParser.Parse("( A B C D A B C D )");
-      var second = PushGPParser.Parse("E");
-      var third = PushGPParser.Parse("A");
-      var result = PushGPParser.Parse("( E B C D E B C D )");
+      var first = PushParser.Parse("( A B C D A B C D )");
+      var second = PushParser.Parse("E");
+      var third = PushParser.Parse("A");
+      var result = PushParser.Parse("( E B C D E B C D )");
 
       this.interpreter.CodeStack.Push(third, second, first);
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/ExampleTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/ExampleTests.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/ExampleTests.cs	(revision 14733)
@@ -159,5 +159,5 @@
     [TestCategory("ExampleTest")]
     public void Example11() {
-      var program = PushGPParser.Parse("( INTEGER.= CODE.QUOTE FLOAT.* CODE.QUOTE FLOAT./ CODE.IF )");
+      var program = PushParser.Parse("( INTEGER.= CODE.QUOTE FLOAT.* CODE.QUOTE FLOAT./ CODE.IF )");
 
       this.interpreter.IntegerStack.Push(1, 1);
@@ -190,5 +190,5 @@
     [TestCategory("ExampleTest")]
     public void Example12() {
-      var program = PushGPParser.Parse("( INTEGER.= EXEC.IF FLOAT.* FLOAT./ )");
+      var program = PushParser.Parse("( INTEGER.= EXEC.IF FLOAT.* FLOAT./ )");
 
       this.interpreter.IntegerStack.Push(1, 1);
@@ -274,5 +274,5 @@
     [TestCategory("ExampleTest")]
     public void Example16() {
-      var list = PushGPParser.Parse("( A B C )");
+      var list = PushParser.Parse("( A B C )");
 
       this.interpreter.CodeStack.Push(list);
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/ExecExpressionTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/ExecExpressionTests.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/ExecExpressionTests.cs	(revision 14733)
@@ -57,7 +57,7 @@
     [TestCategory("ExecExpressionTest")]
     public void TestK() {
-      var first = PushGPParser.Parse("A");
-      var second = PushGPParser.Parse("B");
-      var third = PushGPParser.Parse("C");
+      var first = PushParser.Parse("A");
+      var second = PushParser.Parse("B");
+      var third = PushParser.Parse("C");
 
       this.interpreter.ExecStack.Push(third, second, first);
@@ -74,8 +74,8 @@
     [TestCategory("ExecExpressionTest")]
     public void TestS() {
-      var first = PushGPParser.Parse("A");
-      var second = PushGPParser.Parse("B");
-      var third = PushGPParser.Parse("C");
-      var result = PushGPParser.Parse("( B C )");
+      var first = PushParser.Parse("A");
+      var second = PushParser.Parse("B");
+      var third = PushParser.Parse("C");
+      var result = PushParser.Parse("( B C )");
 
       this.interpreter.ExecStack.Push(third, second, first);
@@ -93,6 +93,6 @@
     [TestCategory("ExecExpressionTest")]
     public void TestY() {
-      var first = PushGPParser.Parse("A");
-      var result = PushGPParser.Parse("( EXEC.Y A )");
+      var first = PushParser.Parse("A");
+      var result = PushParser.Parse("( EXEC.Y A )");
 
       this.interpreter.ExecStack.Push(first);
Index: /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/StandardTests.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/StandardTests.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Tests/Interpreter/Expressions/StandardTests.cs	(revision 14733)
@@ -38,5 +38,5 @@
     [TestMethod]
     public void TestExpandGetHashCode() {
-      var expand = PushGPParser.Parse("( A B C D E F )");
+      var expand = PushParser.Parse("( A B C D E F )");
 
       expand.GetHashCode();
Index: /branches/PushGP/HeuristicLab.PushGP/PushGP.Cli/Program.cs
===================================================================
--- /branches/PushGP/HeuristicLab.PushGP/PushGP.Cli/Program.cs	(revision 14732)
+++ /branches/PushGP/HeuristicLab.PushGP/PushGP.Cli/Program.cs	(revision 14733)
@@ -36,5 +36,5 @@
 
     static async Task EvaluateStepwise(string code) {
-      var interpreter = new PushGpInterpreter(new PushGpConfiguration {
+      var interpreter = new PushGpInterpreter(new PushConfiguration {
         TopLevelPushCode = false
       });
@@ -90,5 +90,5 @@
 
     static void PerformanceTestInterpreter() {
-      var program = PushGPParser.Parse("( 5 INTEGER.DUP INTEGER.+ )");
+      var program = PushParser.Parse("( 5 INTEGER.DUP INTEGER.+ )");
 
       var interpreter = new PushGpInterpreter();
@@ -106,5 +106,5 @@
 
     static void PerformanceParallelTestInterpreter() {
-      var program = PushGPParser.Parse("( 5 INTEGER.DUP INTEGER.+ )");
+      var program = PushParser.Parse("( 5 INTEGER.DUP INTEGER.+ )");
       //var program = new ExecExpandExpression(new Expression[]
       //{
@@ -117,5 +117,5 @@
       var iterations = 100;
       var amount = 600000;
-      var pool = new PushGpInterpreterPool(iterations);
+      var pool = new PushInterpreterPool(iterations);
 
       sw.Start();
@@ -152,5 +152,5 @@
       var execCounters = new int[parallelism];
 
-      var config = new PushGpConfiguration {
+      var config = new PushConfiguration {
         EvalPushLimit = 4096,
         //IsCodeStackEnabled = false,
@@ -162,5 +162,5 @@
       };
 
-      var pool = new PushGpInterpreterPool(config);
+      var pool = new PushInterpreterPool(config);
 
       sw.Start();
@@ -185,5 +185,5 @@
 
     static void TestPool() {
-      var pool = new PushGpInterpreterPool();
+      var pool = new PushInterpreterPool();
       var normal = new PushGpInterpreter();
       int id;
@@ -217,5 +217,5 @@
       Console.WriteLine(sw.Elapsed);
 
-      var pool = new PushGpInterpreterPool();
+      var pool = new PushInterpreterPool();
       sw.Restart();
       for (var i = 0; i < iterations; i++) {
@@ -231,5 +231,5 @@
     static void TestSimplifier() {
       var interpreter = new PushGpInterpreter();
-      var program = PushGPParser.Parse("( 5 INTEGER.DUP FLOAT.+ INTEGER.+ )") as ExecExpandExpression;
+      var program = PushParser.Parse("( 5 INTEGER.DUP FLOAT.+ INTEGER.+ )") as ExecExpandExpression;
       var simplifier = new RandomSimplifier() { Trys = 10 };
       var random = new FastRandom(1337);
