Index: branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt/3.4/ArtificialAntProblem.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt/3.4/ArtificialAntProblem.cs	(revision 5521)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Problems.ArtificialAnt/3.4/ArtificialAntProblem.cs	(revision 5528)
@@ -83,46 +83,46 @@
 
     #region Parameter Properties
-    public ValueParameter<BoolValue> MaximizationParameter {
-      get { return (ValueParameter<BoolValue>)Parameters["Maximization"]; }
+    public IValueParameter<BoolValue> MaximizationParameter {
+      get { return (IValueParameter<BoolValue>)Parameters["Maximization"]; }
     }
     IParameter ISingleObjectiveProblem.MaximizationParameter {
       get { return MaximizationParameter; }
     }
-    public ValueParameter<SymbolicExpressionTreeCreator> SolutionCreatorParameter {
-      get { return (ValueParameter<SymbolicExpressionTreeCreator>)Parameters["SolutionCreator"]; }
+    public IValueParameter<ISymbolicExpressionTreeCreator> SolutionCreatorParameter {
+      get { return (IValueParameter<ISymbolicExpressionTreeCreator>)Parameters["SolutionCreator"]; }
     }
     IParameter IProblem.SolutionCreatorParameter {
       get { return SolutionCreatorParameter; }
     }
-    public ValueParameter<Evaluator> EvaluatorParameter {
-      get { return (ValueParameter<Evaluator>)Parameters["Evaluator"]; }
+    public IValueParameter<Evaluator> EvaluatorParameter {
+      get { return (IValueParameter<Evaluator>)Parameters["Evaluator"]; }
     }
     IParameter IProblem.EvaluatorParameter {
       get { return EvaluatorParameter; }
     }
-    public ValueParameter<ISymbolicExpressionTreeGrammar> ArtificialAntExpressionGrammarParameter {
-      get { return (ValueParameter<ISymbolicExpressionTreeGrammar>)Parameters["ArtificialAntExpressionGrammar"]; }
-    }
-    public ValueParameter<IntValue> MaxExpressionLengthParameter {
-      get { return (ValueParameter<IntValue>)Parameters["MaxExpressionLength"]; }
-    }
-    public ValueParameter<IntValue> MaxExpressionDepthParameter {
-      get { return (ValueParameter<IntValue>)Parameters["MaxExpressionDepth"]; }
-    }
-    public ValueParameter<IntValue> MaxFunctionDefinitionsParameter {
-      get { return (ValueParameter<IntValue>)Parameters["MaxFunctionDefinitions"]; }
-    }
-    public ValueParameter<IntValue> MaxFunctionArgumentsParameter {
+    public IValueParameter<ISymbolicExpressionTreeGrammar> ArtificialAntExpressionGrammarParameter {
+      get { return (IValueParameter<ISymbolicExpressionTreeGrammar>)Parameters["ArtificialAntExpressionGrammar"]; }
+    }
+    public IValueParameter<IntValue> MaxExpressionLengthParameter {
+      get { return (IValueParameter<IntValue>)Parameters["MaxExpressionLength"]; }
+    }
+    public IValueParameter<IntValue> MaxExpressionDepthParameter {
+      get { return (IValueParameter<IntValue>)Parameters["MaxExpressionDepth"]; }
+    }
+    public IValueParameter<IntValue> MaxFunctionDefinitionsParameter {
+      get { return (IValueParameter<IntValue>)Parameters["MaxFunctionDefinitions"]; }
+    }
+    public IValueParameter<IntValue> MaxFunctionArgumentsParameter {
       get { return (ValueParameter<IntValue>)Parameters["MaxFunctionArguments"]; }
     }
-    public ValueParameter<BoolMatrix> WorldParameter {
-      get { return (ValueParameter<BoolMatrix>)Parameters["World"]; }
-    }
-    public ValueParameter<IntValue> MaxTimeStepsParameter {
-      get { return (ValueParameter<IntValue>)Parameters["MaxTimeSteps"]; }
-    }
-
-    public ValueParameter<DoubleValue> BestKnownQualityParameter {
-      get { return (ValueParameter<DoubleValue>)Parameters["BestKnownQuality"]; }
+    public IValueParameter<BoolMatrix> WorldParameter {
+      get { return (IValueParameter<BoolMatrix>)Parameters["World"]; }
+    }
+    public IValueParameter<IntValue> MaxTimeStepsParameter {
+      get { return (IValueParameter<IntValue>)Parameters["MaxTimeSteps"]; }
+    }
+
+    public IValueParameter<DoubleValue> BestKnownQualityParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters["BestKnownQuality"]; }
     }
     IParameter ISingleObjectiveProblem.BestKnownQualityParameter {
@@ -156,5 +156,5 @@
       set { MaxFunctionArgumentsParameter.Value = value; }
     }
-    public SymbolicExpressionTreeCreator SolutionCreator {
+    public ISymbolicExpressionTreeCreator SolutionCreator {
       get { return SolutionCreatorParameter.Value; }
       set { SolutionCreatorParameter.Value = value; }
@@ -195,8 +195,4 @@
     [StorableHook(HookType.AfterDeserialization)]
     private void AfterDeserialization() {
-      // BackwardsCompatibility3.3
-      #region Backwards compatible code (remove with 3.4)
-      if (operators == null) InitializeOperators();
-      #endregion
       AttachEventHandlers();
     }
@@ -217,5 +213,5 @@
       ISymbolicExpressionTreeGrammar grammar = new GlobalSymbolicExpressionGrammar(new ArtificialAntExpressionGrammar());
       Parameters.Add(new ValueParameter<BoolValue>("Maximization", "Set to true as the Artificial Ant Problem is a maximization problem.", new BoolValue(true)));
-      Parameters.Add(new ValueParameter<SymbolicExpressionTreeCreator>("SolutionCreator", "The operator which should be used to create new artificial ant solutions.", creator));
+      Parameters.Add(new ValueParameter<ISymbolicExpressionTreeCreator>("SolutionCreator", "The operator which should be used to create new artificial ant solutions.", creator));
       Parameters.Add(new ValueParameter<Evaluator>("Evaluator", "The operator which should be used to evaluate artificial ant solutions.", evaluator));
       Parameters.Add(new ValueParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this artificial ant instance.", new DoubleValue(89)));
@@ -258,4 +254,9 @@
 
     private void SolutionCreatorParameter_ValueChanged(object sender, EventArgs e) {
+      SolutionCreator.SymbolicExpressionTreeParameter.ActualName = "AntTrailSolution";
+      var grammarBased = SolutionCreator as ISymbolicExpressionTreeGrammarBasedOperator;
+      if (grammarBased != null)
+        grammarBased.SymbolicExpressionTreeGrammarParameter.ActualName = "ArtificialAntExpressionGrammar";
+
       SolutionCreator.SymbolicExpressionTreeParameter.ActualNameChanged += new EventHandler(SolutionCreator_SymbolicExpressionTreeParameter_ActualNameChanged);
       ParameterizeAnalyzers();
@@ -268,4 +269,5 @@
     }
     private void EvaluatorParameter_ValueChanged(object sender, EventArgs e) {
+      Evaluator.QualityParameter.ActualName = "FoodEaten";
       Evaluator.QualityParameter.ActualNameChanged += new EventHandler(Evaluator_QualityParameter_ActualNameChanged);
       ParameterizeAnalyzers();
@@ -325,5 +327,5 @@
 
     private void ParameterizeOperators() {
-      var operators = Parameters.OfType<IValueParameter>().Select(p => p.ActualValue).OfType<IOperator>().Union(Operators);
+      var operators = Parameters.OfType<IValueParameter>().Select(p => p.Value).OfType<IOperator>().Union(Operators);
 
       foreach (ISymbolicExpressionTreeGrammarBasedOperator op in operators.OfType<ISymbolicExpressionTreeGrammarBasedOperator>()) {
