Index: /branches/MPI/HeuristicLab.MPIAlgorithmRunner/3.3/HeuristicLab.MPIAlgorithmRunner-3.3.csproj
===================================================================
--- /branches/MPI/HeuristicLab.MPIAlgorithmRunner/3.3/HeuristicLab.MPIAlgorithmRunner-3.3.csproj	(revision 7565)
+++ /branches/MPI/HeuristicLab.MPIAlgorithmRunner/3.3/HeuristicLab.MPIAlgorithmRunner-3.3.csproj	(revision 7566)
@@ -115,4 +115,5 @@
       <Private>False</Private>
     </Reference>
+    <Reference Include="HeuristicLab.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
     <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
Index: /branches/MPI/HeuristicLab.MPIAlgorithmRunner/3.3/Program.cs
===================================================================
--- /branches/MPI/HeuristicLab.MPIAlgorithmRunner/3.3/Program.cs	(revision 7565)
+++ /branches/MPI/HeuristicLab.MPIAlgorithmRunner/3.3/Program.cs	(revision 7566)
@@ -33,4 +33,6 @@
 using HeuristicLab.Core;
 using System.Diagnostics;
+using HeuristicLab.Common;
+using System.IO;
 
 namespace HeuristicLab.MPIAlgorithmRunner {
@@ -41,12 +43,22 @@
       if (args.Length == 2) {
         string fileName = args[0];
-        string resultName = args[1];
-
-        using (new MPI.Environment(ref args)) {
-          if (MPI.Communicator.world.Rank != 0) {
-            Program p = new Program();
-            p.StartAlgorithm(fileName, resultName + MPI.Communicator.world.Rank + ".hl");
+        int calcTime;
+        if (int.TryParse(args[1], out calcTime)) {
+         using (new MPI.Environment(ref args)) {
+            if (MPI.Communicator.world.Rank != 0) {
+              Program p = new Program();
+              p.StartAlgorithm(fileName,calcTime);
+            }
+          }                     
+        } else {
+          string resultName = args[1];
+
+          using (new MPI.Environment(ref args)) {
+            if (MPI.Communicator.world.Rank != 0) {
+              Program p = new Program();
+              p.StartAlgorithm(fileName, resultName + MPI.Communicator.world.Rank + ".hl");
+            }
           }
-        }
+        }       
       } else {
         using (new MPI.Environment(ref args)) {
@@ -192,30 +204,32 @@
       sw.Start();
 
-     /* Thread.Sleep(10000);      
-      Thread t = new Thread(delegate() {
-        while (true) {
-          if (alg.ExecutionState == Core.ExecutionState.Started) {
-            alg.Pause();
-
-            while (alg.ExecutionState == Core.ExecutionState.Started)
-              Thread.Sleep(100);
-
-            if (alg.Results.ContainsKey("Best valid Solution Distance")) {
-              Console.WriteLine("BestDistance: " + alg.Results["Best valid Solution Distance"].Value.ToString());
-            }
-
-            if (alg.Results.ContainsKey("Best valid Solution Vehicles")) {
-              Console.WriteLine("BestVehicles: " + alg.Results["Best valid Solution Vehicles"].Value.ToString());
-            }
-
-            XmlGenerator.Serialize(alg, resultName);
-            alg.Start();
+      if (MPI.Communicator.world.Rank == 1) {
+        Thread.Sleep(10000);
+        Thread t = new Thread(delegate() {
+          while (true) {
+            if (alg.ExecutionState == Core.ExecutionState.Started) {
+              alg.Pause();
+
+              while (alg.ExecutionState == Core.ExecutionState.Started)
+                Thread.Sleep(100);
+
+              if (alg.Results.ContainsKey("Best valid VRP Solution Distance")) {
+                Console.WriteLine("BestDistance: " + alg.Results["Best valid VRP Solution Distance"].Value.ToString());
+              }
+
+              if (alg.Results.ContainsKey("Best valid VRP Solution VehicleUtilization")) {
+                Console.WriteLine("BestVehicles: " + alg.Results["Best valid VRP Solution VehicleUtilization"].Value.ToString());
+              }
+
+              XmlGenerator.Serialize(alg, resultName);
+              alg.Start();
+            }
+
+            Thread.Sleep(300000);
           }
-
-          Thread.Sleep(300000);
-        }
-      });
-      t.IsBackground = true;
-      t.Start();*/
+        });
+        t.IsBackground = true;
+        t.Start();
+      }
 
       waitHandle.WaitOne();
@@ -225,7 +239,7 @@
       Console.WriteLine("TIME: " + sw.ElapsedMilliseconds + "ms");
 
-      if (alg.Results.ContainsKey("Best valid Solution Distance") && alg.Results.ContainsKey("Best valid Solution Vehicles")) {
-        Console.WriteLine("BestDistance: " + alg.Results["Best valid Solution Distance"].Value.ToString() + ", " + 
-                          "BestVehicles: " + alg.Results["Best valid Solution Vehicles"].Value.ToString());
+      if (alg.Results.ContainsKey("Best valid VRP Solution Distance") && alg.Results.ContainsKey("Best valid VRP Solution VehicleUtilization")) {
+        Console.WriteLine("BestDistance: " + alg.Results["Best valid VRP Solution Distance"].Value.ToString() + ", " +
+                          "BestVehicles: " + alg.Results["Best valid VRP Solution VehicleUtilization"].Value.ToString());
       }
 
@@ -236,4 +250,36 @@
       waitHandle.Set(); 
     }
+
+    public void StartAlgorithm(string fileName, int calculationTime) {
+      IAlgorithm alg = XmlParser.Deserialize<HeuristicLab.Optimization.IAlgorithm>(fileName);
+      IOperator breakpoint = ((alg.Parameters["Analyzer"] as IValueParameter).Value as IOperator);
+
+      waitHandle.Reset();
+
+      alg.Start();
+
+      Thread.Sleep(calculationTime);
+
+      if (alg.ExecutionState == ExecutionState.Started) {
+        waitHandle.Reset();
+        alg.Paused += new EventHandler(alg_Paused);
+        breakpoint.Breakpoint = true;
+
+        waitHandle.WaitOne();
+
+        breakpoint.Breakpoint = false;
+        alg.Paused -= new EventHandler(alg_Paused);
+      }
+
+      Mutex mutex = new Mutex(false, "ResultFile");
+      mutex.WaitOne();
+      Console.WriteLine("SERIALIZING");
+      XmlGenerator.Serialize(alg, fileName);
+      MPI.Communicator.world.Abort(0);
+    }
+
+    void alg_Paused(object sender, EventArgs e) {
+      waitHandle.Set();
+    }
   }
 }
Index: /branches/MPI/HeuristicLab.MPIEngine/3.3/Plugin.cs.frame
===================================================================
--- /branches/MPI/HeuristicLab.MPIEngine/3.3/Plugin.cs.frame	(revision 7565)
+++ /branches/MPI/HeuristicLab.MPIEngine/3.3/Plugin.cs.frame	(revision 7566)
@@ -38,6 +38,4 @@
   [PluginDependency("HeuristicLab.MainForm", "3.3")]
   [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
-  [PluginDependency("HeuristicLab.MPInet", "1.0.0")]
-  [PluginDependency("HeuristicLab.MPIAlgorithmRunner", "3.3")]
   [PluginDependency("HeuristicLab.Operators.MPISupport", "3.3")]
   [PluginDependency("HeuristicLab.Optimization", "3.3")]
Index: /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/MPIHelper.cs
===================================================================
--- /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/MPIHelper.cs	(revision 7565)
+++ /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/MPIHelper.cs	(revision 7566)
@@ -27,5 +27,5 @@
     }
 
-    public static void Execute(IAtomicOperation op, CancellationToken cancellationToken) {
+    public static void Execute(IAtomicOperation op) {
       IOperation next;
       OperationCollection coll;
@@ -36,6 +36,4 @@
 
       while (executionStack.Count > 0) {
-        cancellationToken.ThrowIfCancellationRequested();
-
         next = executionStack.Pop();
         if (next is OperationCollection) {
@@ -46,5 +44,5 @@
           operation = (IAtomicOperation)next;
           try {
-            next = operation.Operator.Execute((IExecutionContext)operation, cancellationToken);
+            next = operation.Operator.Execute((IExecutionContext)operation, new CancellationToken());
           }
           catch (Exception ex) {
Index: /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/MPISolutionsCreator.cs
===================================================================
--- /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/MPISolutionsCreator.cs	(revision 7565)
+++ /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/MPISolutionsCreator.cs	(revision 7566)
@@ -29,4 +29,5 @@
 using System.Collections.Generic;
 using MPI;
+using System;
 
 namespace HeuristicLab.Operators.MPISupport {
@@ -103,10 +104,10 @@
           if (creator != null) {
             IAtomicOperation op = ExecutionContext.CreateOperation(creator, scopes[i]);
-            MPIHelper.Execute(op, CancellationToken);
+            MPIHelper.Execute(op);
           }
 
           if (evaluator != null) {
             IAtomicOperation op = ExecutionContext.CreateOperation(evaluator, scopes[i]);
-            MPIHelper.Execute(op, CancellationToken);
+            MPIHelper.Execute(op);
           }
 
Index: /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/MPIUniformSubscopesProcessor.cs
===================================================================
--- /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/MPIUniformSubscopesProcessor.cs	(revision 7565)
+++ /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/MPIUniformSubscopesProcessor.cs	(revision 7566)
@@ -64,5 +64,5 @@
           for (int i = start; i < end; i++) {
             IAtomicOperation op = ExecutionContext.CreateOperation(Operator, scopes[i]);
-            MPIHelper.Execute(op, CancellationToken);
+            MPIHelper.Execute(op);
             
             //SEND results to other clients
Index: /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/Plugin.cs.frame
===================================================================
--- /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/Plugin.cs.frame	(revision 7565)
+++ /branches/MPI/HeuristicLab.Operators.MPISupport/3.3/Plugin.cs.frame	(revision 7566)
@@ -28,5 +28,4 @@
   [Plugin("HeuristicLab.Operators.MPISupport", "3.3.4.$WCREV$")]
   [PluginFile("HeuristicLab.Operators.MPISupport-3.3.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.MPInet", "1.0.0")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
