Index: /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithm.cs	(revision 5724)
+++ /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/IslandOffspringSelectionGeneticAlgorithm.cs	(revision 5725)
@@ -565,5 +565,5 @@
       successfulOffspringAnalyzer.ResultsParameter.ActualName = "Results";
       successfulOffspringAnalyzer.GenerationsParameter.ActualName = "Generations";
-      successfulOffspringAnalyzer.SuccessfulOffspringFlag.Value.Value = "SuccessfulOffspring";
+      successfulOffspringAnalyzer.SuccessfulOffspringFlagParameter.Value.Value = "SuccessfulOffspring";
       successfulOffspringAnalyzer.DepthParameter.Value = new IntValue(2);
 
Index: /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs	(revision 5724)
+++ /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/OffspringSelectionGeneticAlgorithm.cs	(revision 5725)
@@ -418,5 +418,5 @@
       successfulOffspringAnalyzer.ResultsParameter.ActualName = "Results";
       successfulOffspringAnalyzer.GenerationsParameter.ActualName = "Generations";
-      successfulOffspringAnalyzer.SuccessfulOffspringFlag.Value.Value = "SuccessfulOffspring";
+      successfulOffspringAnalyzer.SuccessfulOffspringFlagParameter.Value.Value = "SuccessfulOffspring";
       successfulOffspringAnalyzer.DepthParameter.Value = new IntValue(1);
       if (Problem != null) {
Index: /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs	(revision 5724)
+++ /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SASEGASA.cs	(revision 5725)
@@ -503,5 +503,5 @@
       successfulOffspringAnalyzer.ResultsParameter.ActualName = "Results";
       successfulOffspringAnalyzer.GenerationsParameter.ActualName = "Generations";
-      successfulOffspringAnalyzer.SuccessfulOffspringFlag.Value.Value = "SuccessfulOffspring";
+      successfulOffspringAnalyzer.SuccessfulOffspringFlagParameter.Value.Value = "SuccessfulOffspring";
       successfulOffspringAnalyzer.DepthParameter.Value = new IntValue(2);
 
Index: /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SuccessfulOffspringAnalysis/SuccessfulOffspringAnalyzer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SuccessfulOffspringAnalysis/SuccessfulOffspringAnalyzer.cs	(revision 5724)
+++ /trunk/sources/HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm/3.3/SuccessfulOffspringAnalysis/SuccessfulOffspringAnalyzer.cs	(revision 5725)
@@ -40,9 +40,9 @@
   [StorableClass]
   public sealed class SuccessfulOffspringAnalyzer : SingleSuccessorOperator, IAnalyzer {
-    public ValueParameter<StringValue> SuccessfulOffspringFlag {
+    public ValueParameter<StringValue> SuccessfulOffspringFlagParameter {
       get { return (ValueParameter<StringValue>)Parameters["SuccessfulOffspringFlag"]; }
     }
 
-    public ValueParameter<ItemCollection<StringValue>> CollectedValues {
+    public ValueParameter<ItemCollection<StringValue>> CollectedValuesParameter {
       get { return (ValueParameter<ItemCollection<StringValue>>)Parameters["CollectedValues"]; }
     }
@@ -50,4 +50,8 @@
     public ValueLookupParameter<ResultCollection> ResultsParameter {
       get { return (ValueLookupParameter<ResultCollection>)Parameters["Results"]; }
+    }
+
+    public LookupParameter<ResultCollection> SuccessfulOffspringAnalysisParameter {
+      get { return (LookupParameter<ResultCollection>)Parameters["SuccessfulOffspringAnalysis"];  }
     }
 
@@ -71,5 +75,6 @@
         Parameters.Add(new ValueParameter<ItemCollection<StringValue>>("CollectedValues", "The properties of the successful offspring that should be collected.", new ItemCollection<StringValue>()));
         Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the succedd progress analysis results should be stored."));
-        Parameters.Add(new LookupParameter<IntValue>("Generations", "The current number of generations."));
+        Parameters.Add(new LookupParameter<IntValue>("Generations", "The current number of generations."));  
+        Parameters.Add(new LookupParameter<ResultCollection>("SuccessfulOffspringAnalysis", "The successful offspring analysis which is created."));
         Parameters.Add(new ValueParameter<IntValue>("Depth", "The depth of the individuals in the scope tree.", new IntValue(1)));
     }
@@ -82,5 +87,5 @@
         scopes = scopes.Select(x => (IEnumerable<IScope>)x.SubScopes).Aggregate((a, b) => a.Concat(b)).ToList();
 
-      ItemCollection<StringValue> collectedValues = CollectedValues.Value;
+      ItemCollection<StringValue> collectedValues = CollectedValuesParameter.Value;
         foreach (StringValue collected in collectedValues) {
           //collect the values of the successful offspring
@@ -88,5 +93,5 @@
           for (int i = 0; i < scopes.Count; i++) {
             IScope child = scopes[i];
-            string successfulOffspringFlag = SuccessfulOffspringFlag.Value.Value;
+            string successfulOffspringFlag = SuccessfulOffspringFlagParameter.Value.Value;
             if (child.Variables.ContainsKey(collected.Value) && 
                 child.Variables.ContainsKey(successfulOffspringFlag) && 
@@ -103,13 +108,28 @@
 
           //create a data table containing the collected values
+          ResultCollection successfulOffspringAnalysis;
+
+          if (SuccessfulOffspringAnalysisParameter.ActualValue == null) {
+            successfulOffspringAnalysis = new ResultCollection();
+            SuccessfulOffspringAnalysisParameter.ActualValue = successfulOffspringAnalysis;
+          } else {
+            successfulOffspringAnalysis = SuccessfulOffspringAnalysisParameter.ActualValue;
+          }
+
+          string resultKey = "SuccessfulOffspringAnalyzer Results";
+          if (!results.ContainsKey(resultKey)) {
+            results.Add(new Result(resultKey, successfulOffspringAnalysis));
+          } else {
+            results[resultKey].Value = successfulOffspringAnalysis;
+          }              
+
           DataTable successProgressAnalysis;
-          string resultKey = "Success Progress " + collected.Value;
-          if (!results.ContainsKey(resultKey)) {
+          if (!successfulOffspringAnalysis.ContainsKey(collected.Value)) {
             successProgressAnalysis = new DataTable();
-            successProgressAnalysis.Name = "Success Progress Analysis";
-            results.Add(new Result(resultKey, successProgressAnalysis));
+            successProgressAnalysis.Name = collected.Value;
+            successfulOffspringAnalysis.Add(new Result(collected.Value, successProgressAnalysis));
           } else {
-            successProgressAnalysis = results[resultKey].Value as DataTable;
-          }
+            successProgressAnalysis = successfulOffspringAnalysis[collected.Value].Value as DataTable;
+          }          
 
           int successfulCount = 0;
Index: /trunk/sources/HeuristicLab.Operators/3.3/StochasticMultiBranch.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/StochasticMultiBranch.cs	(revision 5724)
+++ /trunk/sources/HeuristicLab.Operators/3.3/StochasticMultiBranch.cs	(revision 5725)
@@ -52,6 +52,6 @@
       get { return (ValueParameter<BoolValue>)Parameters["TraceSelectedOperator"]; }
     }
-    public ValueLookupParameter<StringValue> SelectedOperatorParameter {
-      get { return (ValueLookupParameter<StringValue>)Parameters["SelectedOperator"]; }
+    public LookupParameter<StringValue> SelectedOperatorParameter {
+      get { return (LookupParameter<StringValue>)Parameters["SelectedOperator"]; }
     }
 
@@ -65,5 +65,5 @@
       #region Backwards Compatibility
       if (!Parameters.ContainsKey("SelectedOperator")) {
-        Parameters.Add(new ValueLookupParameter<StringValue>("SelectedOperator", "If the TraceSelectedOperator flag is set, the name of the operator is traced in this parameter."));
+        Parameters.Add(new LookupParameter<StringValue>("SelectedOperator", "If the TraceSelectedOperator flag is set, the name of the operator is traced in this parameter."));
       }
       if (!Parameters.ContainsKey("TraceSelectedOperator")) {
@@ -86,5 +86,5 @@
       Parameters.Add(new ValueLookupParameter<DoubleArray>("Probabilities", "The array of relative probabilities for each operator.", new DoubleArray()));
       Parameters.Add(new LookupParameter<IRandom>("Random", "The random number generator to use."));
-      Parameters.Add(new ValueLookupParameter<StringValue>("SelectedOperator", "If the TraceSelectedOperator flag is set, the name of the operator is traced in this parameter."));
+      Parameters.Add(new LookupParameter<StringValue>("SelectedOperator", "If the TraceSelectedOperator flag is set, the name of the operator is traced in this parameter."));
       Parameters.Add(new ValueParameter<BoolValue>("TraceSelectedOperator", "Indicates, if the selected operator should be traced.", new BoolValue(false)));
     }
