Index: trunk/sources/HeuristicLab.FixedOperators/3.2/FixedGAMainBase.cs
===================================================================
--- trunk/sources/HeuristicLab.FixedOperators/3.2/FixedGAMainBase.cs	(revision 2121)
+++ trunk/sources/HeuristicLab.FixedOperators/3.2/FixedGAMainBase.cs	(revision 2129)
@@ -180,4 +180,5 @@
       Execute(mr, scope);
       Execute(sorter, scope);
+
     } // DoReplacement
   
Index: trunk/sources/HeuristicLab.FixedOperators/3.2/FixedOSGAMain.cs
===================================================================
--- trunk/sources/HeuristicLab.FixedOperators/3.2/FixedOSGAMain.cs	(revision 2121)
+++ trunk/sources/HeuristicLab.FixedOperators/3.2/FixedOSGAMain.cs	(revision 2129)
@@ -66,4 +66,6 @@
       IScope s;
       IScope s2;
+      bool loopSkipped = true;
+      bool running = false;
 
       DoubleData selectionPressure = null;
@@ -105,13 +107,18 @@
               Execute(wofc, s2);
               Execute(sr, s2);
+              loopSkipped = false;
+            } // foreach
 
-            } // foreach
-            subscopeNr.Data = 0;
+            // if for loop skipped, we had to add skiped operations
+            // to execution pointer.
+            if (loopSkipped)
+              executionPointer += 5;
 
             Execute(sorter, s);
             ////// END Create Children //////
-
-
-          } while (os.Execute(scope) != null);
+            
+            running = ExecuteFirstOperator(os, scope);
+            if (running) subscopeNr.Data = 0;
+          } while (running);
 
           DoReplacement(scope);
@@ -129,4 +136,5 @@
             break;
 
+          subscopeNr.Data = 0;
           ResetExecutionPointer();
         } // for i generations
Index: trunk/sources/HeuristicLab.FixedOperators/3.2/FixedOperatorBase.cs
===================================================================
--- trunk/sources/HeuristicLab.FixedOperators/3.2/FixedOperatorBase.cs	(revision 2121)
+++ trunk/sources/HeuristicLab.FixedOperators/3.2/FixedOperatorBase.cs	(revision 2129)
@@ -70,4 +70,25 @@
     } // SetRegion
 
+    /// <summary>
+    /// Executes only the operator op, suboperator are wont be executed.
+    /// </summary>
+    /// <param name="op">Operator to execute.</param>
+    /// <param name="scope">Scope on which operator is executed.</param>
+    /// <returns>True, if operator has suboperators after execution. </returns>
+    protected virtual bool ExecuteFirstOperator(IOperator op, IScope scope){
+      bool suboperatorsExist = false;
+      
+      if (!IsExecuted()) {
+        suboperatorsExist = op.Execute(scope) != null;
+        persistedExecutionPointer.Data++;
+      } // if not executed
+      executionPointer++;
+
+      if (Canceled)
+        throw new CancelException();
+
+      return suboperatorsExist;
+    } // ExecuteFirstOperator
+
     protected virtual void Execute(IOperator op, IScope scope) {
       if (!IsExecuted()) {
@@ -90,5 +111,6 @@
         }
       } else {
-        executionStack = new Stack<IOperation>(persistedOperations);  
+        executionStack = new Stack<IOperation>(persistedOperations);
+        persistedOperations.Clear();
       }
 
@@ -121,5 +143,5 @@
 
     private void SaveExecutionStack(Stack<IOperation> stack) {
-      persistedOperations = new ItemList<IOperation>();
+      persistedOperations.Clear();
       persistedOperations.AddRange(stack.ToArray());
     } // SaveExecutionStack
Index: trunk/sources/HeuristicLab.FixedOperators/3.2/FixedSGAMain.cs
===================================================================
--- trunk/sources/HeuristicLab.FixedOperators/3.2/FixedSGAMain.cs	(revision 2121)
+++ trunk/sources/HeuristicLab.FixedOperators/3.2/FixedSGAMain.cs	(revision 2129)
@@ -333,5 +333,9 @@
       IScope s;
       IScope s2;
-
+      bool loopSkipped = true;
+
+      tempExePointer = new int[10];
+      tempPersExePointer = new int[10];
+      
       try {
         for (; nrOfGenerations.Data < maxGenerations.Data; nrOfGenerations.Data++) {
@@ -368,5 +372,11 @@
             Execute(sr, s2);
             Execute(counter, s2);
+            loopSkipped = false;
           } // foreach
+
+          // if for loop skipped, we had to add skiped operations
+          // to execution pointer.
+          if (loopSkipped)
+            executionPointer += 5;
 
           Execute(sorter, s);
@@ -394,4 +404,7 @@
         return new AtomicOperation(this, scope);
       }
+      catch (Exception ex) {
+        ex.ToString();
+      }
 
       return null;
