Index: /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs	(revision 3358)
+++ /trunk/sources/HeuristicLab.Algorithms.GeneticAlgorithm/3.3/IslandGeneticAlgorithm.cs	(revision 3359)
@@ -41,12 +41,4 @@
   [StorableClass]
   public sealed class IslandGeneticAlgorithm : EngineAlgorithm {
-    #region Fields
-    [Storable]
-    private IslandGeneticAlgorithmMainLoop mainLoop;
-    [Storable]
-    private SolutionsCreator solutionsCreator;
-    [Storable]
-    private RandomCreator randomCreator;
-    #endregion
 
     #region Problem Properties
@@ -183,4 +175,13 @@
     private List<ISelector> immigrationSelectors;
     private List<IMigrator> migrators;
+    private RandomCreator RandomCreator {
+      get { return (RandomCreator)OperatorGraph.InitialOperator; }
+    }
+    private SolutionsCreator SolutionsCreator {
+      get { return (SolutionsCreator)((RandomCreator.Successor as SubScopesCreator).Successor as UniformSubScopesProcessor).Operator; }
+    }
+    private IslandGeneticAlgorithmMainLoop MainLoop {
+      get { return (IslandGeneticAlgorithmMainLoop)((RandomCreator.Successor as SubScopesCreator).Successor as UniformSubScopesProcessor).Successor; }
+    }
     #endregion
 
@@ -206,9 +207,9 @@
       Parameters.Add(new ValueParameter<BoolValue>("Parallel", "True if the islands should be run in parallel (also requires a parallel engine)", new BoolValue(false)));
 
-      randomCreator = new RandomCreator();
+      RandomCreator randomCreator = new RandomCreator();
       SubScopesCreator populationCreator = new SubScopesCreator();
       UniformSubScopesProcessor ussp1 = new UniformSubScopesProcessor();
-      solutionsCreator = new SolutionsCreator();
-      mainLoop = new IslandGeneticAlgorithmMainLoop();
+      SolutionsCreator solutionsCreator = new SolutionsCreator();
+      IslandGeneticAlgorithmMainLoop mainLoop = new IslandGeneticAlgorithmMainLoop();
       OperatorGraph.InitialOperator = randomCreator;
 
@@ -351,19 +352,19 @@
     }
     private void ParameterizeSolutionsCreator() {
-      solutionsCreator.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
-      solutionsCreator.SolutionCreatorParameter.ActualName = Problem.SolutionCreatorParameter.Name;
+      SolutionsCreator.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
+      SolutionsCreator.SolutionCreatorParameter.ActualName = Problem.SolutionCreatorParameter.Name;
     }
     private void ParameterizeMainLoop() {
-      mainLoop.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name;
-      mainLoop.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
-      mainLoop.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
-      mainLoop.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
-      mainLoop.VisualizerParameter.ActualName = Problem.VisualizerParameter.Name;
+      MainLoop.BestKnownQualityParameter.ActualName = Problem.BestKnownQualityParameter.Name;
+      MainLoop.EvaluatorParameter.ActualName = Problem.EvaluatorParameter.Name;
+      MainLoop.MaximizationParameter.ActualName = Problem.MaximizationParameter.Name;
+      MainLoop.QualityParameter.ActualName = Problem.Evaluator.QualityParameter.ActualName;
+      MainLoop.VisualizerParameter.ActualName = Problem.VisualizerParameter.Name;
       if (Problem.Visualizer != null)
-        mainLoop.VisualizationParameter.ActualName = Problem.Visualizer.VisualizationParameter.ActualName;
+        MainLoop.VisualizationParameter.ActualName = Problem.Visualizer.VisualizationParameter.ActualName;
     }
     private void ParameterizeStochasticOperator(IOperator op) {
       if (op is IStochasticOperator)
-        ((IStochasticOperator)op).RandomParameter.ActualName = randomCreator.RandomParameter.ActualName;
+        ((IStochasticOperator)op).RandomParameter.ActualName = RandomCreator.RandomParameter.ActualName;
     }
     private void InitializeSelectors() {
