Index: /branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP.csproj.user
===================================================================
--- /branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP.csproj.user	(revision 14328)
+++ /branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP.csproj.user	(revision 14329)
@@ -2,5 +2,5 @@
 <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
-    <ProjectView>ProjectFiles</ProjectView>
+    <ProjectView>ShowAllFiles</ProjectView>
   </PropertyGroup>
 </Project>
Index: anches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/OperationTable.cs
===================================================================
--- /branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/OperationTable.cs	(revision 14328)
+++ 	(revision )
@@ -1,87 +1,0 @@
-﻿//using System;
-//using System.Collections.Generic;
-//using HeuristicLab.Algorithms.PushGP.InstructionSets;
-//using HeuristicLab.Algorithms.PushGP.Stack;
-
-//namespace HeuristicLab.Algorithms.PushGP
-//{
-//    public class OperationTable
-//    {
-//        private static Dictionary<OpCode, Action<IInterpreterService, object[]>> symbolTable = new Dictionary<OpCode, Action<IInterpreterService, object[]>>
-//        {
-//            #region Code
-//            { OpCode.CodeNoop, CodeInstructionSet.Noop },
-//            { OpCode.CodePush, CodeInstructionSet.Push },
-//            { OpCode.CodeQuote, CodeInstructionSet.Quote },
-//            { OpCode.CodeDo, CodeInstructionSet.Do },
-//            { OpCode.CodeIf, CodeInstructionSet.If },
-//            { OpCode.CodeDefine, CodeInstructionSet.Define },
-//            { OpCode.CodeDup, CodeInstructionSet.Duplicate },
-//            #endregion Code
-
-//            #region Exec
-//            { OpCode.ExecPop, ExecInstructionSet.Pop },
-//            { OpCode.ExecPush, ExecInstructionSet.Push },
-//            { OpCode.ExecExpand, ExecInstructionSet.Expand },
-//            { OpCode.ExecDefine, ExecInstructionSet.Define },
-//            { OpCode.ExecIf, ExecInstructionSet.If },
-//            { OpCode.ExecDup, ExecInstructionSet.Duplicate },
-//            { OpCode.ExecY, ExecInstructionSet.Y },
-//            { OpCode.ExecDoXRange, ExecInstructionSet.DoRange },
-//            #endregion Exec
-
-//            #region Name
-//            { OpCode.NameDefineXExec, NameInstructionSet.DefineOrExec },
-//            { OpCode.NamePop, NameInstructionSet.Pop },
-//            { OpCode.NameDup, NameInstructionSet.Duplicate },
-//            #endregion Name
-
-//            #region Boolean
-//            { OpCode.BooleanPush, BooleanInstructionSet.Push },
-//            { OpCode.BooleanPop, BooleanInstructionSet.Pop },
-//            { OpCode.BooleanDup, BooleanInstructionSet.Duplicate },
-//            { OpCode.BooleanAnd, BooleanInstructionSet.And },
-//            { OpCode.BooleanOr, BooleanInstructionSet.Or },
-//            #endregion Boolean
-
-//            #region Float
-//            { OpCode.FloatPush, FloatInstructionSet.Push },
-//            { OpCode.FloatPop, FloatInstructionSet.Pop },
-//            { OpCode.FloatDup, FloatInstructionSet.Duplicate },
-//            { OpCode.FloatDefine, FloatInstructionSet.Define },
-//            { OpCode.FloatAdd, FloatInstructionSet.Add },
-//            { OpCode.FloatSubtract, FloatInstructionSet.Subtract },
-//            { OpCode.FloatMultiply, FloatInstructionSet.Multiply },
-//            { OpCode.FloatDivide, FloatInstructionSet.Divide },
-//            { OpCode.FloatSmallerThan, FloatInstructionSet.SmallerThan },
-//            { OpCode.FloatGreaterThan, FloatInstructionSet.GreaterThan },
-//            { OpCode.FloatEquals, FloatInstructionSet.Equals },
-//            { OpCode.FloatMin, FloatInstructionSet.Min },
-//            { OpCode.FloatMax, FloatInstructionSet.Max },
-//            #endregion Float
-
-//            #region Integer
-//            { OpCode.IntegerPush, IntegerInstructionSet.Push },
-//            { OpCode.IntegerPop, IntegerInstructionSet.Pop },
-//            { OpCode.IntegerDup, IntegerInstructionSet.Duplicate },
-//            { OpCode.IntegerDefine, IntegerInstructionSet.Define },
-//            { OpCode.IntegerAdd, IntegerInstructionSet.Add },
-//            { OpCode.IntegerSubtract, IntegerInstructionSet.Subtract },
-//            { OpCode.IntegerMultiply, IntegerInstructionSet.Multiply },
-//            { OpCode.IntegerDivide, IntegerInstructionSet.Divide },
-//            { OpCode.IntegerSmallerThan, IntegerInstructionSet.SmallerThan },
-//            { OpCode.IntegerGreaterThan, IntegerInstructionSet.GreaterThan },
-//            { OpCode.IntegerEquals, IntegerInstructionSet.Equals },
-//            { OpCode.IntegerMin, IntegerInstructionSet.Min },
-//            { OpCode.IntegerMax, IntegerInstructionSet.Max },
-//            #endregion Integer
-//        };
-
-//        public static Action<IInterpreterService, object[]> GetOperation(OpCode opCode)
-//        {
-//            Action<IInterpreterService, object[]> operation;
-//            if (symbolTable.TryGetValue(opCode, out operation)) return operation;
-//            else throw new NotSupportedException("OpCode: " + opCode);
-//        }
-//    }
-//}
Index: anches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Stack/IInterpreterService.cs
===================================================================
--- /branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Stack/IInterpreterService.cs	(revision 14328)
+++ 	(revision )
@@ -1,17 +1,0 @@
-﻿using System.Collections.Generic;
-using HeuristicLab.Algorithms.PushGP.Expressions;
-
-namespace HeuristicLab.Algorithms.PushGP.Stack
-{
-    public interface IInterpreterService
-    {
-        IStack<Expression> CodeStack { get; }
-        IStack<Expression> ExecStack { get; }
-        IStack<string> NameStack { get; }
-        IStack<bool> BooleanStack { get; }
-        IStack<long> IntegerStack { get; }
-        IStack<double> FloatStack { get; }
-
-        IDictionary<string, Expression> CustomExpressions { get; }
-    }
-}
Index: /branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Symbols.cs
===================================================================
--- /branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Symbols.cs	(revision 14329)
+++ /branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Symbols.cs	(revision 14329)
@@ -0,0 +1,173 @@
+﻿namespace HeuristicLab.Algorithms.PushGP
+{
+    public static class Symbols
+    {
+        #region Code
+        public const string CodePush = "CODE.PUSH";
+        public const string CodeIf = "CODE.IF";
+        public const string CodeDefine = "CODE.DEFINE";
+        public const string CodeDuplicate = "CODE.DUP";
+        public const string CodeQuote = "CODE.QUOTE";
+        public const string CodeDo = "CODE.DO";
+
+        public const string CodeEquals = "CODE.=";
+        public const string CodeAppend = "CODE.APPEND";
+        public const string CodeAtom = "CODE.ATOM";
+        public const string CodeCar = "CODE.CAR";
+        public const string CodeCdr = "CODE.CDR";
+        public const string CodeCons = "CODE.CONS";
+        public const string CodeContainer = "CODE.CONTAINER";
+        public const string CodeContains = "CODE.CONTAINS";
+        public const string CodeDefinition = "CODE.DEFINITION";
+        public const string CodeDiscrepancy = "CODE.DISCREPANCY";
+        public const string CodeDoX = "CODE.DO*";
+        public const string CodeDoXCount = "CODE.DO*COUNT";
+        public const string CodeDoXRange = "CODE.DO*RANGE";
+        public const string CodeDoXTimes = "CODE.DO*TIMES";
+        public const string CodeExtract = "CODE.EXTRACT";
+        public const string CodeFlush = "CODE.FLUSH";
+        public const string CodeFromFloat = "CODE.FROMFLOAT";
+        public const string CodeFromInteger = "CODE.FROMINTEGER";
+        public const string CodeFromName = "CODE.FROMNAME";
+        public const string CodeInsert = "CODE.INSERT";
+        public const string CodeInstructions = "CODE.INSTRUCTIONS";
+        public const string CodeLength = "CODE.LENGTH";
+        public const string CodeList = "CODE.LIST";
+        public const string CodeMember = "CODE.MEMBER";
+        public const string CodeNoop = "CODE.NOOP";
+        public const string CodeNth = "CODE.NTH";
+        public const string CodeNthCdr = "CODE.NTHCDR";
+        public const string CodeNull = "CODE.NULL";
+        public const string CodePosition = "CODE.POSITION";
+        public const string CodeRand = "CODE.RAND";
+        public const string CodeRot = "CODE.ROT";
+        public const string CodeShove = "CODE.SHOVE";
+        public const string CodeSize = "CODE.SIZE";
+        public const string CodeStackDepth = "CODE.STACKDEPTH";
+        public const string CodeSubst = "CODE.SUBST";
+        public const string CodeSwap = "CODE.SWAP";
+        public const string CodeYank = "CODE.YANK";
+        public const string CodeYankDuplicate = "CODE.YANKDUP";
+        #endregion Code
+
+        #region Exec
+        public const string ExecExpand = "EXEC.EXPAND";
+        public const string ExecPush = "EXEC.PUSH";
+        public const string ExecIf = "EXEC.IF";
+        public const string ExecDefine = "EXEC.DEFINE";
+        public const string ExecDuplicate = "EXEC.DUP";
+        public const string ExecPop = "EXEC.POP";
+        public const string ExecY = "EXEC.Y";
+        public const string ExecDoXRange = "EXEC.DO*RANGE";
+
+        public const string ExecEquals = "EXEC.=";
+        public const string ExecDoXCount = "EXEC.DO*COUNT";
+        public const string ExecDoXTimes = "EXEC.DO*TIMES";
+        public const string ExecFlush = "EXEC.FLUSH";
+        public const string ExecK = "EXEC.K";
+        public const string ExecRot = "EXEC.ROT";
+        public const string ExecS = "EXEC.S";
+        public const string ExecShove = "EXEC.SHOVE";
+        public const string ExecStackDepth = "EXEC.StackDepth";
+        public const string ExecSwap = "EXEC.SWAP";
+        public const string ExecYank = "EXEC.YANK";
+        public const string ExecYankDuplicate = "EXEC.YANKDUP";
+        #endregion Exec
+
+        #region Name
+        public const string NamePop = "NAME.POP";
+        public const string NameDuplicate = "NAME.DUP";
+
+        public const string NameEquals = "NAME.=";
+        public const string NameFlush = "NAME.FLUSH";
+        public const string NameQuote = "NAME.QUOTE";
+        public const string NameRand = "NAME.RAND";
+        public const string NameRandBoundName = "NaME.RANDBOUNDNAME";
+        public const string NameRot = "NAME.ROT";
+        public const string NameShove = "NAME.SHOVE";
+        public const string NameStackDepth = "NAME.STACKDEPTH";
+        public const string NameSwap = "NAME.SWAP";
+        public const string NameYank = "NAME.YANK";
+        public const string NameYankDuplicate = "NAME.YANKDUP";
+        #endregion Name
+
+        #region Boolean
+        public const string BooleanDefine = "BOOLEAN.DEFINE";
+        public const string BooleanPush = "BOOLEAN.PUSH";
+        public const string BooleanPop = "BOOLEAN.POP";
+        public const string BooleanDuplicate = "BOOLEAN.DUP";
+        public const string BooleanAnd = "BOOLEAN.AND";
+        public const string BooleanOr = "BOOLEAN.OR";
+
+        public const string BooleanEquals = "BOOLEAN.=";
+        public const string BooleanFlush = "BOOLEAN.FLUSH";
+        public const string BooleanFromFloat = "BOOLEAN.FROMFLOAT";
+        public const string BooleanFromInteger = "BOOLEAN.FROMINTEGER";
+        public const string BooleanNot = "BOOLEAN.NOT";
+        public const string BooleanRand = "BOOLEAN.RAND";
+        public const string BooleanRot = "BOOLEAN.ROT";
+        public const string BooleanShove = "BOOLEAN.SHOVE";
+        public const string BooleanStackDepth = "BOOLEAN.STACKDEPTH";
+        public const string BooleanSwap = "BOOLEAN.SWAP";
+        public const string BooleanYank = "BOOLEAN.YANK";
+        public const string BooleanYankDuplicate = "BOOLEAN.YANKDUP";
+        #endregion Boolean
+
+        #region Integer
+        public const string IntegerDuplicate = "INTEGER.DUP";
+        public const string IntegerPop = "INTEGER.POP";
+        public const string IntegerDefine = "INTEGER.DEFINE";
+        public const string IntegerAdd = "INTEGER.+";
+        public const string IntegerSubtract = "INTEGER.-";
+        public const string IntegerMultiply = "INTEGER.*";
+        public const string IntegerDivide = "INTEGER./";
+        public const string IntegerSmallerThan = "INTEGER.<";
+        public const string IntegerGreaterThan = "INTEGER.>";
+        public const string IntegerEquals = "INTEGER.=";
+        public const string IntegerMin = "INTEGER.MIN";
+        public const string IntegerMax = "INTEGER.MAX";
+
+        public const string IntegerModulo = "INTEGER.%";
+        public const string IntegerFlush = "INTEGER.FLUSH";
+        public const string IntegerFromBoolean = "INTEGER.FROMBOOLEAN";
+        public const string IntegerFromFloat = "INTEGER.FROMFLOAT";
+        public const string IntegerRand = "INTEGER.RAND";
+        public const string IntegerRot = "INTEGER.ROT";
+        public const string IntegerShove = "INTEGER.SHOVE";
+        public const string IntegerStackDepth = "INTEGER.STACKDPETH";
+        public const string IntegerSwap = "INTEGER.SWAP";
+        public const string IntegerYank = "INTEGER.YANK";
+        public const string IntegerYankDuplicate = "INTEGER.YANKDUP";
+        #endregion Integer
+
+        #region Float
+        public const string FloatDuplicate = "FLOAT.DUP";
+        public const string FloatPop = "FLOAT.POP";
+        public const string FloatDefine = "FLOAT.DEFINE";
+        public const string FloatAdd = "FLOAT.+";
+        public const string FloatSubtract = "FLOAT.-";
+        public const string FloatMultiply = "FLOAT.*";
+        public const string FloatDivide = "FLOAT./";
+        public const string FloatSmallerThan = "FLOAT.<";
+        public const string FloatGreaterThan = "FLOAT.>";
+        public const string FloatEquals = "FLOAT.=";
+        public const string FloatMin = "FLOAT.MIN";
+        public const string FloatMax = "FLOAT.MAX";
+
+        public const string FloatCos = "FLOAT.COS";
+        public const string FloatSin = "FLOAT.SIN";
+        public const string FloatTan = "FLOAT.TAN";
+        public const string FloatModulo = "FLOAT.%";
+        public const string FloatFlush = "FLOAT.FLUSH";
+        public const string FloatFromBoolean = "FLOAT.FROMBOOLEAN";
+        public const string FloatFromInteger = "FLOAT.FROMINTEGER";
+        public const string FloatRand = "FLOAT.RAND";
+        public const string FloatRot = "FLOAT.ROT";
+        public const string FloatShove = "FLOAT.SHOVE";
+        public const string FloatStackDepth = "FLOAT.STACKDPETH";
+        public const string FloatSwap = "FLOAT.SWAP";
+        public const string FloatYank = "FLOAT.YANK";
+        public const string FloatYankDuplicate = "FLOAT.YANKDUP";
+        #endregion Float
+    }
+}
