Index: branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionCrossoverTest.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionCrossoverTest.cs	(revision 11203)
+++ branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionCrossoverTest.cs	(revision 11205)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -27,5 +27,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression;
 using HeuristicLab.Random;
@@ -33,5 +32,5 @@
 using ExecutionContext = HeuristicLab.Core.ExecutionContext;
 
-namespace HeuristicLab.Problems.DataAnalysis.Symbolic_34.Tests {
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Tests {
   [TestClass()]
   public class SymbolicDataAnalysisExpressionCrossoverTest {
@@ -49,4 +48,6 @@
 
     [TestMethod]
+    [TestCategory("Problems.DataAnalysis")]
+    [TestProperty("Time", "long")]
     public void SymbolicDataAnalysisExpressionSemanticSimilarityCrossoverPerformanceTest() {
       var problem = new SymbolicRegressionSingleObjectiveProblem();
@@ -56,4 +57,6 @@
 
     [TestMethod]
+    [TestCategory("Problems.DataAnalysis")]
+    [TestProperty("Time", "long")]
     public void SymbolicDataAnalysisExpressionProbabilisticFunctionalCrossoverPerformanceTest() {
       var problem = new SymbolicRegressionSingleObjectiveProblem();
@@ -63,4 +66,6 @@
 
     [TestMethod]
+    [TestCategory("Problems.DataAnalysis")]
+    [TestProperty("Time", "long")]
     public void SymbolicDataAnalysisExpressionDeterministicBestCrossoverPerformanceTest() {
       var problem = new SymbolicRegressionSingleObjectiveProblem();
@@ -70,4 +75,6 @@
 
     [TestMethod]
+    [TestCategory("Problems.DataAnalysis")]
+    [TestProperty("Time", "long")]
     public void SymbolicDataAnalysisExpressionContextAwareCrossoverPerformanceTest() {
       var problem = new SymbolicRegressionSingleObjectiveProblem();
@@ -77,4 +84,6 @@
 
     [TestMethod]
+    [TestCategory("Problems.DataAnalysis")]
+    [TestProperty("Time", "long")]
     public void SymbolicDataAnalysisExpressionDepthConstrainedCrossoverPerformanceTest() {
       var problem = new SymbolicRegressionSingleObjectiveProblem();
@@ -137,5 +146,5 @@
 
       foreach (var tree in trees)
-        HeuristicLab.Encodings.SymbolicExpressionTreeEncoding_34.Tests.Util.IsValid(tree);
+        HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Tests.Util.IsValid(tree);
     }
   }
Index: branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs	(revision 11203)
+++ branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs	(revision 11205)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -25,57 +25,90 @@
 using System.Linq;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Random;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
-namespace HeuristicLab.Problems.DataAnalysis.Symbolic_34.Tests {
-
-
-  [TestClass()]
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Tests {
+
+
+  [TestClass]
   public class SymbolicDataAnalysisExpressionTreeInterpreterTest {
     private const int N = 1000;
     private const int Rows = 1000;
     private const int Columns = 50;
-    private TestContext testContextInstance;
-
-    /// <summary>
-    ///Gets or sets the test context which provides
-    ///information about and functionality for the current test run.
-    ///</summary>
-    public TestContext TestContext {
-      get {
-        return testContextInstance;
-      }
-      set {
-        testContextInstance = value;
-      }
-    }
-
-    [TestMethod]
-    public void SymbolicDataAnalysisExpressionTreeInterpreterTypeCoherentGrammarPerformanceTest() {
-      TypeCoherentGrammarPerformanceTest(new SymbolicDataAnalysisExpressionTreeInterpreter(), 12.5e6);
-    }
-    [TestMethod]
-    public void SymbolicDataAnalysisExpressionTreeInterpreterFullGrammarPerformanceTest() {
-      FullGrammarPerformanceTest(new SymbolicDataAnalysisExpressionTreeInterpreter(), 12.5e6);
-    }
-    [TestMethod]
-    public void SymbolicDataAnalysisExpressionTreeInterpreterArithmeticGrammarPerformanceTest() {
-      ArithmeticGrammarPerformanceTest(new SymbolicDataAnalysisExpressionTreeInterpreter(), 12.5e6);
-    }
-
-    [TestMethod]
-    public void SymbolicDataAnalysisExpressionTreeILEmittingInterpreterTypeCoherentGrammarPerformanceTest() {
-      TypeCoherentGrammarPerformanceTest(new SymbolicDataAnalysisExpressionTreeILEmittingInterpreter(), 7.5e6);
-    }
-    [TestMethod]
-    public void SymbolicDataAnalysisExpressionTreeILEmittingInterpreterFullGrammarPerformanceTest() {
-      FullGrammarPerformanceTest(new SymbolicDataAnalysisExpressionTreeILEmittingInterpreter(), 7.5e6);
-    }
-    [TestMethod]
-    public void SymbolicDataAnalysisExpressionTreeILEmittingInterpreterArithmeticGrammarPerformanceTest() {
-      ArithmeticGrammarPerformanceTest(new SymbolicDataAnalysisExpressionTreeILEmittingInterpreter(), 7.5e6);
-    }
-
-    private void TypeCoherentGrammarPerformanceTest(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, double nodesPerSecThreshold) {
+
+    private static Dataset ds = new Dataset(new string[] { "Y", "A", "B" }, new double[,] {
+        { 1.0, 1.0, 1.0 },
+        { 2.0, 2.0, 2.0 },
+        { 3.0, 1.0, 2.0 },
+        { 4.0, 1.0, 1.0 },
+        { 5.0, 2.0, 2.0 },
+        { 6.0, 1.0, 2.0 },
+        { 7.0, 1.0, 1.0 },
+        { 8.0, 2.0, 2.0 },
+        { 9.0, 1.0, 2.0 },
+        { 10.0, 1.0, 1.0 },
+        { 11.0, 2.0, 2.0 },
+        { 12.0, 1.0, 2.0 }
+      });
+
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "long")]
+    public void StandardInterpreterTestTypeCoherentGrammarPerformance() {
+      TestTypeCoherentGrammarPerformance(new SymbolicDataAnalysisExpressionTreeInterpreter(), 12.5e6);
+    }
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "long")]
+    public void StandardInterpreterTestFullGrammarPerformance() {
+      TestFullGrammarPerformance(new SymbolicDataAnalysisExpressionTreeInterpreter(), 12.5e6);
+    }
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "long")]
+    public void StandardInterpreterTestArithmeticGrammarPerformance() {
+      TestArithmeticGrammarPerformance(new SymbolicDataAnalysisExpressionTreeInterpreter(), 12.5e6);
+    }
+
+
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "long")]
+    public void ILEmittingInterpreterTestTypeCoherentGrammarPerformance() {
+      TestTypeCoherentGrammarPerformance(new SymbolicDataAnalysisExpressionTreeILEmittingInterpreter(), 7.5e6);
+    }
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "long")]
+    public void ILEmittingInterpreterTestFullGrammarPerformance() {
+      TestFullGrammarPerformance(new SymbolicDataAnalysisExpressionTreeILEmittingInterpreter(), 7.5e6);
+    }
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "long")]
+    public void ILEmittingInterpreterTestArithmeticGrammarPerformance() {
+      TestArithmeticGrammarPerformance(new SymbolicDataAnalysisExpressionTreeILEmittingInterpreter(), 7.5e6);
+    }
+
+
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "long")]
+    public void LinearInterpreterTestTypeCoherentGrammarPerformance() {
+      TestTypeCoherentGrammarPerformance(new SymbolicDataAnalysisExpressionTreeLinearInterpreter(), 12.5e6);
+    }
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "long")]
+    public void LinearInterpreterTestFullGrammarPerformance() {
+      TestFullGrammarPerformance(new SymbolicDataAnalysisExpressionTreeLinearInterpreter(), 12.5e6);
+    }
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "long")]
+    public void LinearInterpreterTestArithmeticGrammarPerformance() {
+      TestArithmeticGrammarPerformance(new SymbolicDataAnalysisExpressionTreeLinearInterpreter(), 12.5e6);
+    }
+
+    private void TestTypeCoherentGrammarPerformance(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, double nodesPerSecThreshold) {
       var twister = new MersenneTwister(31415);
       var dataset = Util.CreateRandomDataset(twister, Rows, Columns);
@@ -95,5 +128,5 @@
     }
 
-    private void FullGrammarPerformanceTest(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, double nodesPerSecThreshold) {
+    private void TestFullGrammarPerformance(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, double nodesPerSecThreshold) {
       var twister = new MersenneTwister(31415);
       var dataset = Util.CreateRandomDataset(twister, Rows, Columns);
@@ -112,8 +145,9 @@
     }
 
-    private void ArithmeticGrammarPerformanceTest(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, double nodesPerSecThreshold) {
+    private void TestArithmeticGrammarPerformance(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, double nodesPerSecThreshold) {
       var twister = new MersenneTwister(31415);
       var dataset = Util.CreateRandomDataset(twister, Rows, Columns);
       var grammar = new ArithmeticExpressionGrammar();
+      //grammar.Symbols.OfType<Variable>().First().Enabled = false;
       grammar.MaximumFunctionArguments = 0;
       grammar.MaximumFunctionDefinitions = 0;
@@ -135,20 +169,7 @@
     ///</summary>
     [TestMethod]
-    public void SymbolicDataAnalysisExpressionTreeInterpreterEvaluateTest() {
-      Dataset ds = new Dataset(new string[] { "Y", "A", "B" }, new double[,] {
-        { 1.0, 1.0, 1.0 },
-        { 2.0, 2.0, 2.0 },
-        { 3.0, 1.0, 2.0 },
-        { 4.0, 1.0, 1.0 },
-        { 5.0, 2.0, 2.0 },
-        { 6.0, 1.0, 2.0 },
-        { 7.0, 1.0, 1.0 },
-        { 8.0, 2.0, 2.0 },
-        { 9.0, 1.0, 2.0 },
-        { 10.0, 1.0, 1.0 },
-        { 11.0, 2.0, 2.0 },
-        { 12.0, 1.0, 2.0 }
-      });
-
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "short")]
+    public void StandardInterpreterTestEvaluation() {
       var interpreter = new SymbolicDataAnalysisExpressionTreeInterpreter();
       EvaluateTerminals(interpreter, ds);
@@ -158,21 +179,19 @@
 
     [TestMethod]
-    public void SymbolicDataAnalysisExpressionILEmittingTreeInterpreterEvaluateTest() {
-      Dataset ds = new Dataset(new string[] { "Y", "A", "B" }, new double[,] {
-        { 1.0, 1.0, 1.0 },
-        { 2.0, 2.0, 2.0 },
-        { 3.0, 1.0, 2.0 },
-        { 4.0, 1.0, 1.0 },
-        { 5.0, 2.0, 2.0 },
-        { 6.0, 1.0, 2.0 },
-        { 7.0, 1.0, 1.0 },
-        { 8.0, 2.0, 2.0 },
-        { 9.0, 1.0, 2.0 },
-        { 10.0, 1.0, 1.0 },
-        { 11.0, 2.0, 2.0 },
-        { 12.0, 1.0, 2.0 }
-      });
-
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "short")]
+    public void ILEmittingInterpreterTestEvaluation() {
       var interpreter = new SymbolicDataAnalysisExpressionTreeILEmittingInterpreter();
+      EvaluateTerminals(interpreter, ds);
+      EvaluateOperations(interpreter, ds);
+    }
+
+    [TestMethod]
+    [TestCategory("Problems.DataAnalysis.Symbolic")]
+    [TestProperty("Time", "short")]
+    public void LinearInterpreterTestEvaluation() {
+      var interpreter = new SymbolicDataAnalysisExpressionTreeLinearInterpreter();
+
+      //ADFs are not supported by the linear interpreter
       EvaluateTerminals(interpreter, ds);
       EvaluateOperations(interpreter, ds);
@@ -298,5 +317,4 @@
       Evaluate(interpreter, ds, "(and (log -1.0)  1.0)", 0, -1.0); // (and NaN 1.0)
 
-
       // OR
       Evaluate(interpreter, ds, "(or -1.0 -2.0)", 0, -1.0);
@@ -309,4 +327,17 @@
       Evaluate(interpreter, ds, "(or (log -1.0))", 0, -1.0); // (or NaN)
       Evaluate(interpreter, ds, "(or (log -1.0)  1.0)", 0, -1.0); // (or NaN 1.0)
+
+      // XOR
+      Evaluate(interpreter, ds, "(xor -1.0 -2.0)", 0, -1.0);
+      Evaluate(interpreter, ds, "(xor -1.0 2.0)", 0, 1.0);
+      Evaluate(interpreter, ds, "(xor 1.0 -2.0)", 0, 1.0);
+      Evaluate(interpreter, ds, "(xor 1.0 2.0)", 0, -1.0);
+      Evaluate(interpreter, ds, "(xor 0.0 0.0)", 0, -1.0);
+      Evaluate(interpreter, ds, "(xor -1.0 -2.0 -3.0)", 0, -1.0);
+      Evaluate(interpreter, ds, "(xor -1.0 -2.0 3.0)", 0, 1.0);
+      Evaluate(interpreter, ds, "(xor -1.0 2.0 3.0)", 0, -1.0);
+      Evaluate(interpreter, ds, "(xor 1.0 2.0 3.0)", 0, 1.0);
+      Evaluate(interpreter, ds, "(xor (log -1.0))", 0, -1.0);
+      Evaluate(interpreter, ds, "(xor (log -1.0)  1.0)", 0, 1.0); 
 
       // sin, cos, tan
Index: branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeSimplifierTest.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeSimplifierTest.cs	(revision 11203)
+++ branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeSimplifierTest.cs	(revision 11205)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -23,12 +23,14 @@
 using System.Collections.Generic;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 
-namespace HeuristicLab.Problems.DataAnalysis.Symbolic_34.Tests {
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Tests {
 
   [TestClass()]
   public class SymbolicDataAnalysisExpressionTreeSimplifierTest {
+
     [TestMethod]
+    [TestCategory("Problems.DataAnalysis")]
+    [TestProperty("Time", "short")]
     public void SimplifierAxiomsTest() {
       SymbolicExpressionImporter importer = new SymbolicExpressionImporter();
Index: branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicExpressionImporter.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicExpressionImporter.cs	(revision 11203)
+++ branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicExpressionImporter.cs	(revision 11205)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -25,7 +25,6 @@
 using System.Linq;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Problems.DataAnalysis.Symbolic;
-
-namespace HeuristicLab.Problems.DataAnalysis.Symbolic_34.Tests {
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Tests {
   internal class SymbolicExpressionImporter {
     private const string VARSTART = "VAR";
@@ -71,4 +70,5 @@
         {"OR", new Or()},
         {"NOT", new Not()},
+        {"XOR", new Xor()},
         {"DIFF", new Derivative()},
         {"PROG", new ProgramRootSymbol()},
@@ -85,7 +85,4 @@
     ProgramRootSymbol programRootSymbol = new ProgramRootSymbol();
     StartSymbol startSymbol = new StartSymbol();
-
-    public SymbolicExpressionImporter() {
-    }
 
     internal ISymbolicExpressionTree Import(string str) {
Index: branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/Token.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/Token.cs	(revision 11203)
+++ branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/Token.cs	(revision 11205)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -22,5 +22,5 @@
 using System.Globalization;
 
-namespace HeuristicLab.Problems.DataAnalysis.Symbolic_34.Tests {
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Tests {
   internal enum TokenSymbol { LPAR, RPAR, SYMB, NUMBER };
   internal class Token {
Index: branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/Util.cs
===================================================================
--- branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/Util.cs	(revision 11203)
+++ branches/HiveStatistics/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/Util.cs	(revision 11205)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -25,7 +25,6 @@
 using System.Linq;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Random;
-namespace HeuristicLab.Problems.DataAnalysis.Symbolic_34.Tests {
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Tests {
   internal class Util {
 
