Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj.user
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj.user	(revision 9293)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj.user	(revision 9296)
@@ -3,5 +3,6 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
     <StartAction>Program</StartAction>
-    <StartProgram>C:\Users\bburlacu\Desktop\HL-Core\trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
+    <StartProgram>C:\Users\bburlacu\Projects\HeuristicLab\Trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
+    <StartArguments>/start:Optimizer /hideStarter</StartArguments>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
@@ -12,12 +13,24 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
     <StartAction>Program</StartAction>
-    <StartProgram>C:\Users\bburlacu\Desktop\HL-Core\trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
+    <StartProgram>C:\Users\bburlacu\Projects\HeuristicLab\Trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
+    <StartArguments>/start:Optimizer /hideStarter</StartArguments>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
     <StartAction>Program</StartAction>
-    <StartProgram>C:\Users\bburlacu\Desktop\HL-Core\trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
+    <StartProgram>C:\Users\bburlacu\Projects\HeuristicLab\Trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
+    <StartArguments>/start:Optimizer /hideStarter</StartArguments>
   </PropertyGroup>
   <PropertyGroup>
     <ProjectView>ProjectFiles</ProjectView>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <StartAction>Program</StartAction>
+    <StartProgram>C:\Users\bburlacu\Projects\HeuristicLab\Trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
+    <StartArguments>/start:Optimizer /hideStarter</StartArguments>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <StartAction>Program</StartAction>
+    <StartProgram>C:\Users\bburlacu\Projects\HeuristicLab\Trunk\sources\bin\HeuristicLab 3.3.exe</StartProgram>
+    <StartArguments>/start:Optimizer /hideStarter</StartArguments>
+  </PropertyGroup>
 </Project>
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/HeuristicLab.EvolutionaryTracking.Views-3.4.csproj
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/HeuristicLab.EvolutionaryTracking.Views-3.4.csproj	(revision 9293)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/HeuristicLab.EvolutionaryTracking.Views-3.4.csproj	(revision 9296)
@@ -26,5 +26,5 @@
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\..\Trunk\sources\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
@@ -36,4 +36,22 @@
   <PropertyGroup>
     <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
@@ -88,7 +106,11 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="GenealogyGraphChart.cs">
-      <SubType>UserControl</SubType>
+    <Compile Include="FrequentFragmentsDialog.cs">
+      <SubType>Form</SubType>
     </Compile>
+    <Compile Include="FrequentFragmentsDialog.Designer.cs">
+      <DependentUpon>FrequentFragmentsDialog.cs</DependentUpon>
+    </Compile>
+    <Compile Include="GenealogyGraphChart.cs" />
     <Compile Include="GenealogyGraphChart.Designer.cs">
       <DependentUpon>GenealogyGraphChart.cs</DependentUpon>
@@ -136,4 +158,7 @@
   </ItemGroup>
   <ItemGroup>
+    <EmbeddedResource Include="FrequentFragmentsDialog.resx">
+      <DependentUpon>FrequentFragmentsDialog.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GenealogyGraphDialog.resx">
       <DependentUpon>GenealogyGraphDialog.cs</DependentUpon>
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/Analyzers/Fragments/SymbolicExpressionTreeFragmentsAnalyzer.cs
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/Analyzers/Fragments/SymbolicExpressionTreeFragmentsAnalyzer.cs	(revision 9293)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/Analyzers/Fragments/SymbolicExpressionTreeFragmentsAnalyzer.cs	(revision 9296)
@@ -20,5 +20,4 @@
 #endregion
 
-using System.Collections.Generic;
 using System.Linq;
 using HeuristicLab.Common;
@@ -290,26 +289,4 @@
     }
 
-    #region Similarity computations
-    /// <summary>
-    /// Provide a measure of how similar the fragments that get passed by crossover from one generation to the next are. 
-    /// </summary>
-    /// <param name="fragments">The symbolic expression tree fragments</param>
-    /// <param name="comparer">The node similarity comparer</param>
-    /// <returns>The average number of similar fragments</returns>
-    private static double CalculateSimilarity(IList<IFragment> fragments, SymbolicExpressionTreeNodeSimilarityComparer comparer) {
-      var visited = new bool[fragments.Count];
-      int groups = 0;
-      for (int i = 0; i != fragments.Count - 1; ++i) {
-        if (visited[i]) continue;
-        for (int j = i + 1; j != fragments.Count; ++j) {
-          if (visited[j]) continue;
-          if (fragments[i].Root.IsSimilarTo(fragments[j].Root, comparer))
-            visited[j] = true;
-        }
-        ++groups;
-      }
-      return (double)fragments.Count / groups;
-    }
-    #endregion
   } //SymbolicExpressionTreeFragmentsAnalyzer
 }
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/Analyzers/SymbolicExpressionTreePopulationDiversityAnalyzer.cs
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/Analyzers/SymbolicExpressionTreePopulationDiversityAnalyzer.cs	(revision 9293)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/Analyzers/SymbolicExpressionTreePopulationDiversityAnalyzer.cs	(revision 9296)
@@ -21,4 +21,5 @@
 
 using System.Linq;
+using System.Threading;
 using HeuristicLab.Analysis;
 using HeuristicLab.Common;
@@ -54,73 +55,106 @@
     private const string MatchConstantValuesParameterName = "MatchConstantValues";
     private const string SortSubtreesParameterName = "SortSubtrees";
+    private const string SimilarityValuesParmeterName = "Similarity";
     // population graph
     private const string PopulationGraphParameterName = "PopulationGraph";
     // clone map
     private const string GlobalCloneMapParameterName = "GlobalCloneMap";
+
     #endregion
 
     #region Parameters
+
     public ValueParameter<IntValue> UpdateIntervalParameter {
       get { return (ValueParameter<IntValue>)Parameters[UpdateIntervalParameterName]; }
     }
+
     public ValueParameter<IntValue> UpdateCounterParameter {
       get { return (ValueParameter<IntValue>)Parameters[UpdateCounterParameterName]; }
     }
+
     public LookupParameter<ResultCollection> ResultsParameter {
       get { return (LookupParameter<ResultCollection>)Parameters[ResultsParameterName]; }
     }
+
     public LookupParameter<IntValue> GenerationsParameter {
       get { return (LookupParameter<IntValue>)Parameters[GenerationsParameterName]; }
     }
+
     public ValueParameter<BoolValue> StoreHistoryParameter {
       get { return (ValueParameter<BoolValue>)Parameters[StoreHistoryParameterName]; }
     }
+
     public IScopeTreeLookupParameter<ISymbolicExpressionTree> SymbolicExpressionTreeParameter {
       get { return (IScopeTreeLookupParameter<ISymbolicExpressionTree>)Parameters[SymbolicExpressionTreeParameterName]; }
     }
+
     public ValueParameter<BoolValue> MatchVariableNamesParameter {
       get { return (ValueParameter<BoolValue>)Parameters[MatchVariablesParameterName]; }
     }
+
     public ValueParameter<BoolValue> MatchVariableWeightsParameter {
       get { return (ValueParameter<BoolValue>)Parameters[MatchVariableWeightsParameterName]; }
     }
+
     public ValueParameter<BoolValue> MatchConstantValuesParameter {
       get { return (ValueParameter<BoolValue>)Parameters[MatchConstantValuesParameterName]; }
     }
+
     public ValueParameter<BoolValue> SortSubtreesParameter {
       get { return (ValueParameter<BoolValue>)Parameters[SortSubtreesParameterName]; }
     }
+
     public LookupParameter<CloneMapType> GlobalCloneMapParameter {
       get { return (LookupParameter<CloneMapType>)Parameters[GlobalCloneMapParameterName]; }
     }
+
+    public ILookupParameter<DoubleValue> SimilarityParameter {
+      get { return (ILookupParameter<DoubleValue>)Parameters[SimilarityValuesParmeterName]; }
+    }
+
     #endregion
 
     #region Parameter properties
+
     public IntValue UpdateInterval {
       get { return UpdateIntervalParameter.Value; }
     }
+
     public IntValue UpdateCounter {
       get { return UpdateCounterParameter.Value; }
     }
+
     public ResultCollection Results {
       get { return ResultsParameter.ActualValue; }
     }
+
     public CloneMapType GlobalCloneMap {
       get { return GlobalCloneMapParameter.ActualValue; }
     }
+
     public IntValue Generations {
       get { return GenerationsParameter.ActualValue; }
     }
+
     public BoolValue StoreHistory {
       get { return StoreHistoryParameter.Value; }
     }
+
     #endregion
 
     [StorableConstructor]
-    private SymbolicExpressionTreePopulationDiversityAnalyzer(bool deserializing) : base(deserializing) { }
-    private SymbolicExpressionTreePopulationDiversityAnalyzer(SymbolicExpressionTreePopulationDiversityAnalyzer original, Cloner cloner) : base(original, cloner) { }
+    private SymbolicExpressionTreePopulationDiversityAnalyzer(bool deserializing)
+      : base(deserializing) {
+    }
+
+    private SymbolicExpressionTreePopulationDiversityAnalyzer(
+      SymbolicExpressionTreePopulationDiversityAnalyzer original, Cloner cloner)
+      : base(original, cloner) {
+    }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new SymbolicExpressionTreePopulationDiversityAnalyzer(this, cloner);
     }
+
     public SymbolicExpressionTreePopulationDiversityAnalyzer() {
       // add parameters
@@ -136,9 +170,12 @@
       Parameters.Add(new LookupParameter<CloneMapType>(GlobalCloneMapParameterName, "A global map keeping track of trees and their clones (made during selection)."));
       Parameters.Add(new ValueParameter<BoolValue>(StoreHistoryParameterName, "True if the tree lengths history of the population should be stored.", new BoolValue(false)));
+      Parameters.Add(new LookupParameter<DoubleValue>(SimilarityValuesParmeterName, ""));
       UpdateCounterParameter.Hidden = true;
       UpdateIntervalParameter.Hidden = true;
     }
+
     [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() { }
+    private void AfterDeserialization() {
+    }
 
     #region IStatefulItem members
@@ -154,12 +191,14 @@
     #endregion
 
-    public bool EnabledByDefault { get { return true; } }
+    public bool EnabledByDefault {
+      get { return true; }
+    }
 
     public override IOperation Apply() {
-      UpdateCounter.Value++;
-
-      if (UpdateCounter.Value == UpdateInterval.Value) {
+      if (SimilarityParameter.ActualValue == null || SimilarityParameter.ActualValue.Value.IsAlmost(-1.0)) {
+        UpdateCounter.Value++;
+        if (UpdateCounter.Value != UpdateInterval.Value) return base.Apply();
+
         UpdateCounter.Value = 0;
-
         var trees = SymbolicExpressionTreeParameter.ActualValue.ToList();
         if (SortSubtreesParameter.Value.Value) {
@@ -168,74 +207,85 @@
         }
 
-        bool matchConstants = MatchConstantValuesParameter.Value.Value;
-        bool matchVarNames = MatchVariableNamesParameter.Value.Value;
-        bool matchVarWeights = MatchVariableWeightsParameter.Value.Value;
-
-        var comparer = new SymbolicExpressionTreeEqualityComparer {
-          SimilarityComparer = new SymbolicExpressionTreeNodeSimilarityComparer {
-            MatchConstantValues = matchConstants, MatchVariableNames = matchVarNames, MatchVariableWeights = matchVarWeights
-          }
+        SimilarityParameter.ActualValue = new DoubleValue();
+
+        var comp = new SymbolicExpressionTreeNodeSimilarityComparer {
+          MatchConstantValues = MatchConstantValuesParameter.Value.Value,
+          MatchVariableNames = MatchVariableNamesParameter.Value.Value,
+          MatchVariableWeights = MatchVariableWeightsParameter.Value.Value
         };
-        ResultCollection results = ResultsParameter.ActualValue;
-        // population diversity
-        DataTable populationDiversityTable;
-        if (!results.ContainsKey("PopulationDiversity")) {
-          populationDiversityTable = new DataTable("PopulationDiversity") { VisualProperties = { YAxisTitle = "Diversity" } };
-          results.Add(new Result("PopulationDiversity", populationDiversityTable));
+
+        var operations = new OperationCollection { Parallel = true };
+        foreach (var tree in trees) {
+          var op = new SymbolicDataAnalysisExpressionTreeSimilarityCalculator { CurrentSymbolicExpressionTree = tree, SimilarityComparer = comp };
+          var operation = ExecutionContext.CreateChildOperation(op, ExecutionContext.Scope);
+          operations.Add(operation);
         }
-        populationDiversityTable = (DataTable)results["PopulationDiversity"].Value;
-        if (!populationDiversityTable.Rows.ContainsKey("Diversity"))
-          populationDiversityTable.Rows.Add(new DataRow("Diversity") { VisualProperties = { StartIndexZero = true } });
-        double distinct = trees.Distinct(comparer).Count() / (double)trees.Count;
-        populationDiversityTable.Rows["Diversity"].Values.Add(distinct);
-        // selection diversity
-        if (GlobalCloneMap == null) return base.Apply();
-
-        DataTable relativeSelectionCountsTable;
-        if (!results.ContainsKey("SelectedIndividuals")) {
-          relativeSelectionCountsTable = new DataTable("SelectedIndividuals") { VisualProperties = { YAxisTitle = "% Selected Individuals" } };
-          results.Add(new Result("SelectedIndividuals", relativeSelectionCountsTable));
+        return new OperationCollection { operations, ExecutionContext.CreateOperation(this) };
+      }
+
+      ResultCollection results = ResultsParameter.ActualValue;
+      // population diversity
+      DataTable populationDiversityTable;
+      if (!results.ContainsKey("PopulationDiversity")) {
+        populationDiversityTable = new DataTable("PopulationDiversity") { VisualProperties = { YAxisTitle = "Diversity" } };
+        results.Add(new Result("PopulationDiversity", populationDiversityTable));
+      }
+      populationDiversityTable = (DataTable)results["PopulationDiversity"].Value;
+      if (!populationDiversityTable.Rows.ContainsKey("Diversity"))
+        populationDiversityTable.Rows.Add(new DataRow("Diversity") { VisualProperties = { StartIndexZero = true } });
+
+      int length = SymbolicExpressionTreeParameter.ActualValue.Length;
+      var similarity = SimilarityParameter.ActualValue.Value / (length * (length - 1) / 2.0);
+      var diversity = 1 - similarity;
+      SimilarityParameter.ActualValue.Value = -1.0;
+
+      populationDiversityTable.Rows["Diversity"].Values.Add(diversity);
+
+      // selection diversity
+      if (GlobalCloneMap == null) return base.Apply();
+      DataTable relativeSelectionCountsTable;
+      if (!results.ContainsKey("SelectedIndividuals")) {
+        relativeSelectionCountsTable = new DataTable("SelectedIndividuals") { VisualProperties = { YAxisTitle = "% Selected Individuals" } };
+        results.Add(new Result("SelectedIndividuals", relativeSelectionCountsTable));
+      }
+      relativeSelectionCountsTable = (DataTable)Results["SelectedIndividuals"].Value;
+      if (!relativeSelectionCountsTable.Rows.ContainsKey("SelectedIndividuals")) {
+        relativeSelectionCountsTable.Rows.Add(new DataRow("SelectedIndividuals") { VisualProperties = { StartIndexZero = true } });
+      }
+      double relativeSelectionCount = GlobalCloneMap.Values.Distinct().Count() / (double)SymbolicExpressionTreeParameter.ActualValue.Length;
+      relativeSelectionCountsTable.Rows["SelectedIndividuals"].Values.Add(relativeSelectionCount);
+
+      // build a selection frequencies histogram
+      var graph = (SymbolicExpressionTreeGenealogyGraph)results[PopulationGraphParameterName].Value;
+      // get graph nodes corresponding to individuals of the previous generation
+      var prevGen = graph.Nodes.Where(node => node.Rank.IsAlmost(Generations.Value - 1)).OrderByDescending(n => n.Quality).ToList();
+      var frequencies = new double[SymbolicExpressionTreeParameter.ActualValue.Length];
+      for (int i = 0; i != prevGen.Count; ++i) {
+        int selFreq = GlobalCloneMap.Values.Count(t => t == prevGen[i].SymbolicExpressionTree);
+        frequencies[i] = selFreq;
+      }
+      DataTable selectionFrequenciesTable;
+      if (!results.ContainsKey("SelectionFrequencies")) {
+        selectionFrequenciesTable = new DataTable("Selection Frequencies") { VisualProperties = { YAxisTitle = "Selection Count" } };
+        results.Add(new Result("SelectionFrequencies", selectionFrequenciesTable));
+      }
+      selectionFrequenciesTable = (DataTable)results["SelectionFrequencies"].Value;
+      DataRow histoRow;
+      if (!selectionFrequenciesTable.Rows.ContainsKey("SelectionFrequencies")) {
+        histoRow = new DataRow("SelectionFrequencies") { VisualProperties = { StartIndexZero = true } };
+        selectionFrequenciesTable.Rows.Add(histoRow);
+      }
+      histoRow = selectionFrequenciesTable.Rows["SelectionFrequencies"];
+      histoRow.Values.Replace(frequencies);
+
+      bool storeHistory = StoreHistory.Value;
+      if (storeHistory) {
+        DataTableHistory selectionFrequenciesHistory;
+        if (!results.ContainsKey("SelectionFrequenciesHistory")) {
+          selectionFrequenciesHistory = new DataTableHistory();
+          results.Add(new Result("SelectionFrequenciesHistory", selectionFrequenciesHistory));
         }
-        relativeSelectionCountsTable = (DataTable)Results["SelectedIndividuals"].Value;
-        if (!relativeSelectionCountsTable.Rows.ContainsKey("SelectedIndividuals")) {
-          relativeSelectionCountsTable.Rows.Add(new DataRow("SelectedIndividuals") { VisualProperties = { StartIndexZero = true } });
-        }
-        double relativeSelectionCount = GlobalCloneMap.Values.Distinct().Count() / (double)trees.Count;
-        relativeSelectionCountsTable.Rows["SelectedIndividuals"].Values.Add(relativeSelectionCount);
-
-        // do a histogram of selection frequency for each individual in the population
-        DataTable selectionFrequenciesTable;
-        if (!results.ContainsKey("SelectionFrequencies")) {
-          selectionFrequenciesTable = new DataTable("Selection Frequencies") { VisualProperties = { YAxisTitle = "Selection Count" } };
-          results.Add(new Result("SelectionFrequencies", selectionFrequenciesTable));
-        }
-        selectionFrequenciesTable = (DataTable)results["SelectionFrequencies"].Value;
-        DataRow histoRow;
-        if (!selectionFrequenciesTable.Rows.ContainsKey("SelectionFrequencies")) {
-          histoRow = new DataRow("SelectionFrequencies") { VisualProperties = { StartIndexZero = true } };
-          selectionFrequenciesTable.Rows.Add(histoRow);
-        }
-        histoRow = selectionFrequenciesTable.Rows["SelectionFrequencies"];
-        var frequencies = new double[trees.Count];
-
-        var graph = (SymbolicExpressionTreeGenealogyGraph)results[PopulationGraphParameterName].Value;
-        // get graph nodes corresponding to individuals of the previous generation
-        var prevGen = graph.Nodes.Where(node => node.Rank == Generations.Value - 1).OrderByDescending(n => n.Quality).ToList();
-        for (int i = 0; i != prevGen.Count; ++i) {
-          int selFreq = GlobalCloneMap.Values.Count(t => t == prevGen[i].SymbolicExpressionTree);
-          frequencies[i] = selFreq;
-        }
-        histoRow.Values.Replace(frequencies);
-
-        bool storeHistory = StoreHistory.Value;
-        if (storeHistory) {
-          DataTableHistory selectionFrequenciesHistory;
-          if (!results.ContainsKey("SelectionFrequenciesHistory")) {
-            selectionFrequenciesHistory = new DataTableHistory();
-            results.Add(new Result("SelectionFrequenciesHistory", selectionFrequenciesHistory));
-          }
-          selectionFrequenciesHistory = (DataTableHistory)results["SelectionFrequenciesHistory"].Value;
-          selectionFrequenciesHistory.Add((DataTable)selectionFrequenciesTable.Clone());
-        }
+        selectionFrequenciesHistory = (DataTableHistory)results["SelectionFrequenciesHistory"].Value;
+        selectionFrequenciesHistory.Add((DataTable)selectionFrequenciesTable.Clone());
       }
       return base.Apply();
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/HeuristicLab.EvolutionaryTracking-3.4.csproj
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/HeuristicLab.EvolutionaryTracking-3.4.csproj	(revision 9293)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking/3.4/HeuristicLab.EvolutionaryTracking-3.4.csproj	(revision 9296)
@@ -26,5 +26,5 @@
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\..\Trunk\sources\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
@@ -36,4 +36,22 @@
   <PropertyGroup>
     <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 9293)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 9296)
@@ -50,5 +50,5 @@
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\..\..\Trunk\sources\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
@@ -68,5 +68,5 @@
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
-    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <DocumentationFile>
@@ -88,5 +88,5 @@
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <DocumentationFile>
