Index: /branches/HeuristicLab.Problems.GrammaticalOptimization/Evaluation/MainWindow.xaml.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization/Evaluation/MainWindow.xaml.cs	(revision 12828)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization/Evaluation/MainWindow.xaml.cs	(revision 12829)
@@ -43,6 +43,7 @@
             this.DataContext = vm = new EvaluationViewModel();
             vm.MaxLen = 100;
-            vm.MaxIterations = 1000000;
-            vm.NrRuns = 10;
+            vm.MaxIterations = 500000;
+            vm.NrRuns = 20;
+            
         }
 
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.MonteCarloTreeSearch/MonteCarloTreeSearch.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.MonteCarloTreeSearch/MonteCarloTreeSearch.cs	(revision 12828)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.MonteCarloTreeSearch/MonteCarloTreeSearch.cs	(revision 12829)
@@ -28,6 +28,4 @@
         protected readonly ISimulation simulation;
         protected TreeNode rootNode;
-        protected bool isPaused = false;
-        protected object pauseLock = new object();
         protected int goodSelections;
 
@@ -59,10 +57,5 @@
 
         public bool StopRequested { get; set; }
-
-        public bool IsPaused
-        {
-            get { return this.isPaused; }
-        }
-
+        
         public int GoodSelections { get { return this.goodSelections; } }
 
@@ -81,14 +74,12 @@
             Reset();
             int selections = 0;
+            TreeNode currentNode;
+            string phrase;
+            string simulatedPhrase;
+            double quality;
+
             for (int i = 0; !StopRequested && i < maxIterations; i++)
             {
-                lock (pauseLock)
-                {
-                    if (isPaused)
-                    {
-                        Monitor.Wait(pauseLock);
-                    }
-                }
-                TreeNode currentNode = rootNode;
+                currentNode = rootNode;
 
                 while (!currentNode.IsLeaf())
@@ -101,5 +92,5 @@
                 }
 
-                string phrase = currentNode.phrase;
+                phrase = currentNode.phrase;
 
                 if (!grammar.IsTerminal(phrase) && phrase.Length <= maxLen)
@@ -114,6 +105,5 @@
                 if (currentNode.phrase.Length <= maxLen)
                 {
-                    string simulatedPhrase;
-                    double quality = simulation.Simulate(currentNode, out simulatedPhrase);
+                    quality = simulation.Simulate(currentNode, out simulatedPhrase);
                     OnSolutionEvaluated(simulatedPhrase, quality);
 
@@ -126,4 +116,6 @@
         {
             // create children on the first visit
+            Sequence newSequence;
+            TreeNode childNode;
             if (treeNode.children == null)
             {
@@ -140,9 +132,9 @@
                         foreach (Sequence alternative in grammar.GetAlternatives(symbol))
                         {
-                            Sequence newSequence = new Sequence(phrase);
+                            newSequence = new Sequence(phrase);
                             newSequence.ReplaceAt(i, 1, alternative);
                             if (newSequence.Length <= maxLen)
                             {
-                                TreeNode childNode = new TreeNode(treeNode, newSequence.ToString(),
+                                childNode = new TreeNode(treeNode, newSequence.ToString(),
                                     behaviourPolicy.CreateActionInfo(), treeNode.level + 1);
                                 treeNode.children.Add(childNode);
@@ -350,20 +342,4 @@
             return HexConverter(Color.FromArgb(newR, newG, newB));
         }
-
-        public void PauseContinue()
-        {
-            lock (pauseLock)
-            {
-                if (isPaused)
-                {
-                    isPaused = false;
-                    Monitor.Pulse(pauseLock);
-                }
-                else
-                {
-                    isPaused = true;
-                }
-            }
-        }
     }
 }
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.MonteCarloTreeSearch/MonteCarloTreeSearch_PruneLeaves.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.MonteCarloTreeSearch/MonteCarloTreeSearch_PruneLeaves.cs	(revision 12828)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.MonteCarloTreeSearch/MonteCarloTreeSearch_PruneLeaves.cs	(revision 12829)
@@ -22,14 +22,11 @@
             Reset();
             int selections = 0;
+            TreeNode currentNode;
+            string phrase;
+            string simulatedPhrase;
+            double quality;
             for (int i = 0; !StopRequested && i < maxIterations; i++)
             {
-                lock (pauseLock)
-                {
-                    if (isPaused)
-                    {
-                        Monitor.Wait(pauseLock);
-                    }
-                }
-                TreeNode currentNode = rootNode;
+                currentNode = rootNode;
 
                 while (!currentNode.IsLeaf())
@@ -42,5 +39,5 @@
                 }
 
-                string phrase = currentNode.phrase;
+                phrase = currentNode.phrase;
 
                 if (phrase.Length <= maxLen)
@@ -71,6 +68,5 @@
                 if (currentNode.phrase.Length <= maxLen)
                 {
-                    string simulatedPhrase;
-                    double quality = simulation.Simulate(currentNode, out simulatedPhrase);
+                    quality = simulation.Simulate(currentNode, out simulatedPhrase);
                     OnSolutionEvaluated(simulatedPhrase, quality);
 
