Index: trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveJobs/HiveTask.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveJobs/HiveTask.cs	(revision 7152)
+++ trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveJobs/HiveTask.cs	(revision 7177)
@@ -121,6 +121,5 @@
               hiveJob.IsControllable = value;
             }
-          }
-          finally {
+          } finally {
             childHiveTasksLock.ExitReadLock();
           }
@@ -136,6 +135,5 @@
         try {
           return childHiveTasks.AsReadOnly();
-        }
-        finally { childHiveTasksLock.ExitReadLock(); }
+        } finally { childHiveTasksLock.ExitReadLock(); }
       }
     }
@@ -192,6 +190,5 @@
       try {
         this.childHiveTasks = cloner.Clone(original.childHiveTasks);
-      }
-      finally { original.childHiveTasksLock.ExitReadLock(); }
+      } finally { original.childHiveTasksLock.ExitReadLock(); }
       this.syncTasksWithOptimizers = original.syncTasksWithOptimizers;
       this.isFinishedTaskDownloaded = original.isFinishedTaskDownloaded;
@@ -242,6 +239,5 @@
       try {
         this.childHiveTasks.Add(hiveTask);
-      }
-      finally { childHiveTasksLock.ExitWriteLock(); }
+      } finally { childHiveTasksLock.ExitWriteLock(); }
     }
 
@@ -340,4 +336,9 @@
         IsFinishedTaskDownloaded = false;
       }
+      if (e.PropertyName == "Priority" && Task != null) {
+        foreach (var task in childHiveTasks) {
+          task.Task.Priority = Task.Priority;
+        }
+      }
     }
     #endregion
@@ -355,6 +356,5 @@
         }
         return jobs;
-      }
-      finally { childHiveTasksLock.ExitReadLock(); }
+      } finally { childHiveTasksLock.ExitReadLock(); }
     }
 
@@ -370,6 +370,5 @@
         }
         return null;
-      }
-      finally { childHiveTasksLock.ExitWriteLock(); }
+      } finally { childHiveTasksLock.ExitWriteLock(); }
     }
 
@@ -388,6 +387,5 @@
               return result;
           }
-        }
-        finally { childHiveTasksLock.ExitReadLock(); }
+        } finally { childHiveTasksLock.ExitReadLock(); }
       }
       return null;
@@ -404,6 +402,5 @@
           child.RemoveByTaskId(jobId);
         }
-      }
-      finally { childHiveTasksLock.ExitWriteLock(); }
+      } finally { childHiveTasksLock.ExitWriteLock(); }
     }
 
@@ -458,6 +455,5 @@
             HiveServiceLocator.Instance.CallHiveService(s => s.PauseTask(child.task.Id));
           }
-        }
-        finally { childHiveTasksLock.ExitReadLock(); }
+        } finally { childHiveTasksLock.ExitReadLock(); }
       } else {
         HiveServiceLocator.Instance.CallHiveService(s => s.PauseTask(this.task.Id));
@@ -472,6 +468,5 @@
             HiveServiceLocator.Instance.CallHiveService(s => s.StopTask(child.task.Id));
           }
-        }
-        finally { childHiveTasksLock.ExitReadLock(); }
+        } finally { childHiveTasksLock.ExitReadLock(); }
       } else {
         HiveServiceLocator.Instance.CallHiveService(s => s.StopTask(this.task.Id));
Index: trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveJobs/OptimizerHiveTask.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveJobs/OptimizerHiveTask.cs	(revision 7152)
+++ trunk/sources/HeuristicLab.Clients.Hive/3.3/HiveJobs/OptimizerHiveTask.cs	(revision 7177)
@@ -65,5 +65,7 @@
             Optimization.Experiment experiment = (Optimization.Experiment)ItemTask.Item;
             foreach (IOptimizer childOpt in experiment.Optimizers) {
-              this.childHiveTasks.Add(new OptimizerHiveTask(childOpt));
+              var optimizerHiveTask = new OptimizerHiveTask(childOpt);
+              optimizerHiveTask.Task.Priority = Task.Priority; //inherit priority from parent
+              this.childHiveTasks.Add(optimizerHiveTask);
             }
           } else if (ItemTask.Item is Optimization.BatchRun) {
@@ -71,5 +73,7 @@
             if (batchRun.Optimizer != null) {
               while (this.childHiveTasks.Count < batchRun.Repetitions) {
-                this.childHiveTasks.Add(new OptimizerHiveTask(batchRun.Optimizer));
+                var optimizerHiveTask = new OptimizerHiveTask(batchRun.Optimizer);
+                optimizerHiveTask.Task.Priority = Task.Priority;
+                this.childHiveTasks.Add(optimizerHiveTask);
               }
               while (this.childHiveTasks.Count > batchRun.Repetitions) {
