Index: /branches/Async/HeuristicLab.Algorithms.Benchmarks/3.3/BenchmarkAlgorithm.cs
===================================================================
--- /branches/Async/HeuristicLab.Algorithms.Benchmarks/3.3/BenchmarkAlgorithm.cs	(revision 13353)
+++ /branches/Async/HeuristicLab.Algorithms.Benchmarks/3.3/BenchmarkAlgorithm.cs	(revision 13354)
@@ -305,5 +305,5 @@
     }
     public async Task StartAsync() {
-      await StartAsync(new CancellationToken());
+      await StartAsync(CancellationToken.None);
     }
     public async Task StartAsync(CancellationToken cancellationToken) {
Index: /branches/Async/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs
===================================================================
--- /branches/Async/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs	(revision 13353)
+++ /branches/Async/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs	(revision 13354)
@@ -41,4 +41,5 @@
   public sealed class CrossValidation : ParameterizedNamedItem, IAlgorithm, IStorableContent {
     private readonly ManualResetEvent signaler = new ManualResetEvent(true);
+    private CancellationToken cancellationToken;
 
     public CrossValidation()
@@ -272,7 +273,8 @@
     }
     public async Task StartAsync() {
-      await StartAsync(new CancellationToken());
+      await StartAsync(CancellationToken.None);
     }
     public async Task StartAsync(CancellationToken cancellationToken) {
+      this.cancellationToken = cancellationToken;
       signaler.Reset();
       await Task.Run(() => {
@@ -682,5 +684,5 @@
           IAlgorithm preparedAlgorithm = clonedAlgorithms.FirstOrDefault(alg => alg.ExecutionState == ExecutionState.Prepared ||
                                                                                 alg.ExecutionState == ExecutionState.Paused);
-          if (preparedAlgorithm != null) preparedAlgorithm.StartAsync();
+          if (preparedAlgorithm != null) preparedAlgorithm.StartAsync(cancellationToken);
         }
         if (ExecutionState != ExecutionState.Stopped) {
Index: /branches/Async/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBAlgorithm.cs
===================================================================
--- /branches/Async/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBAlgorithm.cs	(revision 13353)
+++ /branches/Async/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBAlgorithm.cs	(revision 13354)
@@ -255,5 +255,5 @@
     }
     public async Task StartAsync() {
-      await StartAsync(new CancellationToken());
+      await StartAsync(CancellationToken.None);
     }
     public async Task StartAsync(CancellationToken cancellationToken) {
Index: /branches/Async/HeuristicLab.Core/3.3/Executable.cs
===================================================================
--- /branches/Async/HeuristicLab.Core/3.3/Executable.cs	(revision 13353)
+++ /branches/Async/HeuristicLab.Core/3.3/Executable.cs	(revision 13354)
@@ -88,5 +88,5 @@
     }
     public async Task StartAsync() {
-      await StartAsync(new CancellationToken());
+      await StartAsync(CancellationToken.None);
     }
     public virtual async Task StartAsync(CancellationToken cancellationToken) {
Index: /branches/Async/HeuristicLab.Optimization/3.3/Algorithms/Algorithm.cs
===================================================================
--- /branches/Async/HeuristicLab.Optimization/3.3/Algorithms/Algorithm.cs	(revision 13353)
+++ /branches/Async/HeuristicLab.Optimization/3.3/Algorithms/Algorithm.cs	(revision 13354)
@@ -208,5 +208,5 @@
     }
     public async Task StartAsync() {
-      await StartAsync(new CancellationToken());
+      await StartAsync(CancellationToken.None);
     }
     public virtual async Task StartAsync(CancellationToken cancellationToken) {
Index: /branches/Async/HeuristicLab.Optimization/3.3/MetaOptimizers/BatchRun.cs
===================================================================
--- /branches/Async/HeuristicLab.Optimization/3.3/MetaOptimizers/BatchRun.cs	(revision 13353)
+++ /branches/Async/HeuristicLab.Optimization/3.3/MetaOptimizers/BatchRun.cs	(revision 13354)
@@ -42,4 +42,5 @@
   public sealed class BatchRun : NamedItem, IOptimizer, IStorableContent {
     private readonly ManualResetEvent signaler = new ManualResetEvent(true);
+    private CancellationToken cancellationToken;
 
     public string Filename { get; set; }
@@ -251,7 +252,8 @@
     }
     public async Task StartAsync() {
-      await StartAsync(new CancellationToken());
+      await StartAsync(CancellationToken.None);
     }
     public async Task StartAsync(CancellationToken cancellationToken) {
+      this.cancellationToken = cancellationToken;
       signaler.Reset();
       await Task.Run(async () => {
@@ -413,5 +415,5 @@
       else if (batchRunAction == BatchRunAction.Start) {
         Optimizer.Prepare();
-        Optimizer.StartAsync();
+        Optimizer.StartAsync(cancellationToken);
       } else if (executionState == ExecutionState.Started) {
         // if the batch run hasn't been started but the inner optimizer was run then pause
Index: /branches/Async/HeuristicLab.Optimization/3.3/MetaOptimizers/Experiment.cs
===================================================================
--- /branches/Async/HeuristicLab.Optimization/3.3/MetaOptimizers/Experiment.cs	(revision 13353)
+++ /branches/Async/HeuristicLab.Optimization/3.3/MetaOptimizers/Experiment.cs	(revision 13354)
@@ -40,4 +40,5 @@
   public sealed class Experiment : NamedItem, IOptimizer, IStorableContent {
     private readonly ManualResetEvent signaler = new ManualResetEvent(true);
+    private CancellationToken cancellationToken;
 
     public string Filename { get; set; }
@@ -192,7 +193,8 @@
     }
     public async Task StartAsync() {
-      await StartAsync(new CancellationToken());
+      await StartAsync(CancellationToken.None);
     }
     public async Task StartAsync(CancellationToken cancellationToken) {
+      this.cancellationToken = cancellationToken;
       signaler.Reset();
       await Task.Run(async () => {
@@ -395,5 +397,5 @@
         } else {
           if (experimentStarted && Optimizers.Any(x => (x.ExecutionState == ExecutionState.Prepared) || (x.ExecutionState == ExecutionState.Paused))) {
-            Optimizers.First(x => (x.ExecutionState == ExecutionState.Prepared) || (x.ExecutionState == ExecutionState.Paused)).StartAsync();
+            Optimizers.First(x => (x.ExecutionState == ExecutionState.Prepared) || (x.ExecutionState == ExecutionState.Paused)).StartAsync(cancellationToken);
           } else if (Optimizers.All(x => x.ExecutionState == ExecutionState.Stopped)) OnStopped();
           else if (Optimizers.Any(x => (x.ExecutionState == ExecutionState.Prepared) || (x.ExecutionState == ExecutionState.Paused)) && Optimizers.All(o => o.ExecutionState != ExecutionState.Started)) OnPaused();
Index: /branches/Async/HeuristicLab.Optimization/3.3/MetaOptimizers/TimeLimitRun.cs
===================================================================
--- /branches/Async/HeuristicLab.Optimization/3.3/MetaOptimizers/TimeLimitRun.cs	(revision 13353)
+++ /branches/Async/HeuristicLab.Optimization/3.3/MetaOptimizers/TimeLimitRun.cs	(revision 13354)
@@ -244,5 +244,5 @@
     }
     public async Task StartAsync() {
-      await StartAsync(new CancellationToken());
+      await StartAsync(CancellationToken.None);
     }
     public async Task StartAsync(CancellationToken cancellationToken) {
