Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs	(revision 5337)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs	(revision 5340)
@@ -33,5 +33,5 @@
     private static int metaAlgorithmPopulationSize = 10;
     private static int metaAlgorithmMaxGenerations = 10;
-    private static int metaProblemRepetitions = 10;
+    private static int metaProblemRepetitions = 2;
     private static int baseAlgorithmMaxGenerations = 20;
     private static double mutationProbability = 0.10;
@@ -63,6 +63,6 @@
       MetaOptimizationProblem metaOptimizationProblem = new MetaOptimizationProblem();
       metaOptimizationProblem.Repetitions = new IntValue(metaProblemRepetitions);
-      //GeneticAlgorithm metaLevelAlgorithm = GetMetaGA(metaOptimizationProblem);
-      GeneticAlgorithm metaLevelAlgorithm = GetParallelMetaGA(metaOptimizationProblem);
+      GeneticAlgorithm metaLevelAlgorithm = GetMetaGA(metaOptimizationProblem);
+      //GeneticAlgorithm metaLevelAlgorithm = GetParallelMetaGA(metaOptimizationProblem);
       //GeneticAlgorithm metaLevelAlgorithm = GetHiveParallelMetaGA(metaOptimizationProblem);
 
@@ -567,6 +567,6 @@
 
       ConfigurePopulationSize(algorithmVc, 12, 100, 1);
-      ConfigureMutationRate(algorithmVc, 0.0, 1.0, 0.01);
-      ConfigureMutationOperator(algorithmVc);
+      //ConfigureMutationRate(algorithmVc, 0.0, 1.0, 0.01);
+      //ConfigureMutationOperator(algorithmVc);
       ConfigureElites(algorithmVc, 0, 10, 1);
       //ConfigureSelectionOperator(algorithmVc, true);
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ParameterConfigurations/ParameterConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ParameterConfigurations/ParameterConfiguration.cs	(revision 5337)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ParameterConfigurations/ParameterConfiguration.cs	(revision 5340)
@@ -476,4 +476,12 @@
       return list;
     }
+
+    public void CollectOptimizedParameterNames(List<string> parameterNames, string prefix) {
+      foreach (var vc in ValueConfigurations) {
+        if (vc.Optimize) {
+          vc.CollectOptimizedParameterNames(parameterNames, prefix);
+        }
+      }
+    }
   }
 }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ValueConfigurations/ValueConfiguration.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ValueConfigurations/ValueConfiguration.cs	(revision 5337)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Encoding/ValueConfigurations/ValueConfiguration.cs	(revision 5340)
@@ -280,4 +280,13 @@
       return list;
     }
+
+    public void CollectOptimizedParameterNames(List<string> parameterNames, string prefix) {
+      foreach (var pc in ParameterConfigurations) {
+        if (pc.Optimize) {
+          parameterNames.Add(prefix + pc.ParameterName);
+          pc.CollectOptimizedParameterNames(parameterNames, prefix + pc.ParameterName + ".");
+        }
+      }
+    }
   }
 }
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Evaluators/ParameterConfigurationEvaluator.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Evaluators/ParameterConfigurationEvaluator.cs	(revision 5337)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Evaluators/ParameterConfigurationEvaluator.cs	(revision 5340)
@@ -129,4 +129,7 @@
     private RunCollection ExecuteAlgorithm(ParameterConfigurationTree parameterConfiguration, IAlgorithm algorithm, IItemList<IProblem> problems) {
       IAlgorithm algorithmClone = (IAlgorithm)algorithm.Clone();
+      var parameterNames = new List<string>();
+      var resultNames = new List<string> { "BestQuality", "Execution Time" };
+      parameterConfiguration.CollectOptimizedParameterNames(parameterNames, "");
 
       // set parameters
@@ -154,4 +157,5 @@
           int problemIndex = problems.IndexOf(problem) + 1;
           IRun run = algorithmClone.Runs.Last();
+          CleanRun(run, resultNames, parameterNames);
           run.Results.Add("Meta.FromCache", new BoolValue(false));
           run.Results.Add("Meta.Generation", new IntValue(GenerationsParameter.ActualValue != null ? GenerationsParameter.ActualValue.Value : 0));
@@ -165,4 +169,26 @@
     }
 
+    /// <summary>
+    /// Removes all information from the run which is not needed for lated analysis
+    /// only keep the results which are important and the parameters which were optimized
+    /// </summary>
+    private void CleanRun(IRun run, IEnumerable<string> resultsToKeep, IEnumerable<string> parametersToKeep) {
+      var resultsToRemove = new List<string>();
+      var parametersToRemove = new List<string>();
+      foreach (var result in run.Results) {
+        if (!resultsToKeep.Contains(result.Key))
+          resultsToRemove.Add(result.Key);
+      }
+      foreach (var parameter in run.Parameters) {
+        if (!parametersToKeep.Contains(parameter.Key))
+          parametersToRemove.Add(parameter.Key);
+      }
+
+      foreach (var result in resultsToRemove)
+        run.Results.Remove(result);
+      foreach (var parameter in parametersToRemove)
+        run.Parameters.Remove(parameter);
+    }
+
     public static double NormalizeQualities(ParameterConfigurationTree parameterConfigurationTree, double[] referenceQualities) {
       double[] qualitiesNormalized = new double[referenceQualities.Length];
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IOptimizable.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IOptimizable.cs	(revision 5337)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/Interfaces/IOptimizable.cs	(revision 5340)
@@ -19,4 +19,5 @@
     void Cross(IRandom random, IOptimizable other, CrossDelegate cross, IIntValueCrossover intValueCrossover, IDoubleValueCrossover doubleValueCrossover);
     string ParameterInfoString { get; }
+    void CollectOptimizedParameterNames(List<string> parameterNames, string prefix);
 
     /// <summary>
Index: branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs
===================================================================
--- branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs	(revision 5337)
+++ branches/HeuristicLab.MetaOptimization/HeuristicLab.Problems.MetaOptimization/3.3/MetaOptimizationProblem.cs	(revision 5340)
@@ -224,6 +224,10 @@
       IAlgorithm instance = (IAlgorithm)Activator.CreateInstance(AlgorithmType.Value);
       this.ProblemType.ValidTypes = ApplicationManager.Manager.GetTypes(instance.ProblemType, true).ToList();
-      this.ProblemType.Value = this.ProblemType.ValidTypes.First();
-      ParameterConfigurationTreeParameter.ActualValue = new ParameterConfigurationTree(CreateAlgorithm(AlgorithmType.Value, ProblemType.Value));
+      this.ProblemType.Value = this.ProblemType.ValidTypes.Where(t => t != typeof(MetaOptimizationProblem)).FirstOrDefault();
+      if (ProblemType.Value != null) {
+        ParameterConfigurationTreeParameter.ActualValue = new ParameterConfigurationTree(CreateAlgorithm(AlgorithmType.Value, ProblemType.Value));
+      } else {
+        ParameterConfigurationTreeParameter.ActualValue = null;
+      }
     }
 
