Index: /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLab.Problems.DataAnalysis.Regression-3.3.csproj
===================================================================
--- /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLab.Problems.DataAnalysis.Regression-3.3.csproj	(revision 4884)
+++ /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/HeuristicLab.Problems.DataAnalysis.Regression-3.3.csproj	(revision 4885)
@@ -182,4 +182,5 @@
     <Compile Include="SupportVectorRegression\SupportVectorRegressionSolution.cs" />
     <Compile Include="Symbolic\Analyzers\BestSymbolicRegressionSolutionAnalyzer.cs" />
+    <Compile Include="Symbolic\Analyzers\SymbolicRegressionPopulationDiversityAnalyzer.cs" />
     <Compile Include="Symbolic\Analyzers\VariablesUsagePopulationDiversityAnalyzer.cs" />
     <Compile Include="Symbolic\Analyzers\FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer.cs" />
Index: /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/SymbolicRegressionPopulationDiversityAnalyzer.cs
===================================================================
--- /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/SymbolicRegressionPopulationDiversityAnalyzer.cs	(revision 4885)
+++ /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/SymbolicRegressionPopulationDiversityAnalyzer.cs	(revision 4885)
@@ -0,0 +1,75 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using HeuristicLab.Analysis;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.Operators;
+using HeuristicLab.Optimization;
+using HeuristicLab.Optimization.Operators;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.DataAnalysis.Symbolic;
+using System.Collections.Generic;
+using HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols;
+
+namespace HeuristicLab.Problems.DataAnalysis.Regression.Symbolic.Analyzers {
+  /// <summary>
+  /// Base class for population diversity analyzers for symbolic regression.
+  /// </summary>
+  [Item("SymbolicRegressionPopulationDiversityAnalyzer", "Base class for population diversity analyzers for symbolic regression.")]
+  [StorableClass]
+  public abstract class SymbolicRegressionPopulationDiversityAnalyzer : PopulationDiversityAnalyzer<SymbolicExpressionTree>, ISymbolicRegressionAnalyzer {
+
+    private const string ProblemDataParameterName = "ProblemData";
+
+    public IValueLookupParameter<DataAnalysisProblemData> ProblemDataParameter {
+      get { return (IValueLookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; }
+    }
+    public DataAnalysisProblemData ProblemData {
+      get { return ProblemDataParameter.ActualValue; }
+    }
+
+    #region ISymbolicRegressionAnalyzer Members
+
+    public ScopeTreeLookupParameter<SymbolicExpressionTree> SymbolicExpressionTreeParameter {
+      get { return base.SolutionParameter; }
+    }
+
+    public new ILookupParameter<ResultCollection> ResultsParameter {
+      get { return base.ResultsParameter; }
+    }
+
+    #endregion
+
+    [StorableConstructor]
+    protected SymbolicRegressionPopulationDiversityAnalyzer(bool deserializing) : base(deserializing) { }
+    protected SymbolicRegressionPopulationDiversityAnalyzer(SymbolicRegressionPopulationDiversityAnalyzer original, Cloner cloner) : base(original, cloner) { }
+    public SymbolicRegressionPopulationDiversityAnalyzer()
+      : base() {
+      Parameters.Add(new ValueLookupParameter<DataAnalysisProblemData>(ProblemDataParameterName, "The problem data for which the symbolic expression tree is a solution."));
+    }
+
+  }
+}
Index: /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/VariablesUsagePopulationDiversityAnalyzer.cs
===================================================================
--- /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/VariablesUsagePopulationDiversityAnalyzer.cs	(revision 4884)
+++ /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/VariablesUsagePopulationDiversityAnalyzer.cs	(revision 4885)
@@ -41,33 +41,10 @@
   [Item("VariablesUsagePopulationDiversityAnalysisOperator", "An operator that analyzes the population diversity with respect to the sets of used variables.")]
   [StorableClass]
-  public sealed class VariablesUsagePopulationDiversityAnalyzer : PopulationDiversityAnalyzer<SymbolicExpressionTree>, ISymbolicRegressionAnalyzer {
-
-    private const string ProblemDataParameterName = "ProblemData";
-
-    public IValueLookupParameter<DataAnalysisProblemData> ProblemDataParameter {
-      get { return (IValueLookupParameter<DataAnalysisProblemData>)Parameters[ProblemDataParameterName]; }
-    }
-    public DataAnalysisProblemData ProblemData {
-      get { return ProblemDataParameter.ActualValue; }
-    }
-
-    #region ISymbolicRegressionAnalyzer Members
-
-    public ScopeTreeLookupParameter<SymbolicExpressionTree> SymbolicExpressionTreeParameter {
-      get { return base.SolutionParameter; }
-    }
-
-    public new ILookupParameter<ResultCollection> ResultsParameter {
-      get { return base.ResultsParameter; }
-    }
-
-    #endregion
+  public sealed class VariablesUsagePopulationDiversityAnalyzer : SymbolicRegressionPopulationDiversityAnalyzer {
 
     [StorableConstructor]
     private VariablesUsagePopulationDiversityAnalyzer(bool deserializing) : base(deserializing) { }
     private VariablesUsagePopulationDiversityAnalyzer(VariablesUsagePopulationDiversityAnalyzer original, Cloner cloner) : base(original, cloner) { }
-    public VariablesUsagePopulationDiversityAnalyzer() : base() {
-      Parameters.Add(new ValueLookupParameter<DataAnalysisProblemData>(ProblemDataParameterName, "The problem data for which the symbolic expression tree is a solution."));
-    }
+    public VariablesUsagePopulationDiversityAnalyzer() : base() { }
 
     public override IDeepCloneable Clone(Cloner cloner) {
Index: /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblemBase.cs
===================================================================
--- /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblemBase.cs	(revision 4884)
+++ /branches/DataAnalysis.PopulationDiversityAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionProblemBase.cs	(revision 4885)
@@ -147,8 +147,4 @@
     }
 
-    private VariablesUsagePopulationDiversityAnalyzer VariablesUsagePopulationDiversityAnalyzer {
-      get { return operators.OfType<VariablesUsagePopulationDiversityAnalyzer>().FirstOrDefault(); }
-    }
-
     #endregion
 
@@ -330,13 +326,11 @@
           varFreqAnalyzer.ProblemDataParameter.ActualName = DataAnalysisProblemDataParameter.Name;
         }
-        var populationDiversityAnalyzer = analyzer as HeuristicLab.Analysis.PopulationDiversityAnalyzer<SymbolicExpressionTree>;
+        var populationDiversityAnalyzer = analyzer as SymbolicRegressionPopulationDiversityAnalyzer;
         if (populationDiversityAnalyzer != null) {
-          // ??? VariablesUsagePopulationDiversityAnalysisOperator.MaximizationParameter.ActualName = 
-          VariablesUsagePopulationDiversityAnalyzer.SolutionParameter.ActualName = SolutionCreator.SymbolicExpressionTreeParameter.ActualName;
-          // ??? VariablesUsagePopulationDiversityAnalysisOperator.QualityParameter.ActualName 
-          VariablesUsagePopulationDiversityAnalyzer.ResultsParameter.ActualName = "Results";
-        }
-        if (VariablesUsagePopulationDiversityAnalyzer != null) {
-          VariablesUsagePopulationDiversityAnalyzer.ProblemDataParameter.ActualName = DataAnalysisProblemDataParameter.Name;
+          populationDiversityAnalyzer.ProblemDataParameter.ActualName = DataAnalysisProblemDataParameter.Name;
+          // ??? populationDiversityAnalyzer.MaximizationParameter.ActualName = 
+          populationDiversityAnalyzer.SolutionParameter.ActualName = SolutionCreator.SymbolicExpressionTreeParameter.ActualName;
+          // ??? populationDiversityAnalyzer.QualityParameter.ActualName 
+          populationDiversityAnalyzer.ResultsParameter.ActualName = "Results";
         }
       }
