Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Calendar/3.3/HeuristicLab.Calendar-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Calendar/3.3/HeuristicLab.Calendar-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Calendar/3.3/HeuristicLab.Calendar-3.3.csproj	(revision 4121)
@@ -62,4 +62,12 @@
     <WarningLevel>4</WarningLevel>
     <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\Debug\</OutputPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <PlatformTarget>x86</PlatformTarget>
+    <OutputPath>bin\x86\Release\</OutputPath>
   </PropertyGroup>
   <ItemGroup>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Calendar/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Calendar/3.3/Properties/AssemblyInfo.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Calendar/3.3/Properties/AssemblyInfo.cs	(revision 4121)
@@ -57,5 +57,5 @@
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.3.0.4107")]
-[assembly: AssemblyFileVersion("3.3.0.4107")]
-[assembly: AssemblyBuildDate("2010/07/27 12:52:47")]
+[assembly: AssemblyVersion("3.3.0.4111")]
+[assembly: AssemblyFileVersion("3.3.0.4111")]
+[assembly: AssemblyBuildDate("2010/07/30 12:22:35")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/HeuristicLab.DataAccess.ADOHelper-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/HeuristicLab.DataAccess.ADOHelper-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess.ADOHelper/3.3/HeuristicLab.DataAccess.ADOHelper-3.3.csproj	(revision 4121)
@@ -58,5 +58,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/HeuristicLab.DataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/HeuristicLab.DataAccess-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/HeuristicLab.DataAccess-3.3.csproj	(revision 4121)
@@ -58,5 +58,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln	(revision 4121)
@@ -16,4 +16,5 @@
 		{D59E852C-F205-4647-8C05-EB9ED1CF44E9} = {D59E852C-F205-4647-8C05-EB9ED1CF44E9}
 		{CE2DFB48-6A9C-4507-96C6-5FC40E92035C} = {CE2DFB48-6A9C-4507-96C6-5FC40E92035C}
+		{E3288D4B-7A51-499A-AC5B-019319CE51DC} = {E3288D4B-7A51-499A-AC5B-019319CE51DC}
 		{89F4BC52-C174-481E-9BD2-3814171020E8} = {89F4BC52-C174-481E-9BD2-3814171020E8}
 		{5CDACE54-5FB2-4344-A21C-963F63CB7C2B} = {5CDACE54-5FB2-4344-A21C-963F63CB7C2B}
@@ -28,4 +29,5 @@
 		{48D4AEB1-2247-4B58-8B63-20B81BF8D4B1} = {48D4AEB1-2247-4B58-8B63-20B81BF8D4B1}
 		{C8FEDAC1-0326-4293-B585-F0FEDDEDFC11} = {C8FEDAC1-0326-4293-B585-F0FEDDEDFC11}
+		{FD1AFEC2-7A79-45CF-9365-5195B04A2C9F} = {FD1AFEC2-7A79-45CF-9365-5195B04A2C9F}
 		{898B31CF-81DC-453B-AEB3-BDF83197A7EE} = {898B31CF-81DC-453B-AEB3-BDF83197A7EE}
 		{134F93D7-E7C8-4ECD-9923-7F63259A60D8} = {134F93D7-E7C8-4ECD-9923-7F63259A60D8}
@@ -83,7 +85,4 @@
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HeuristicLab.Security", "HeuristicLab.Security", "{3721CE4A-1148-49E1-B8DD-D9F5309AB8D9}"
-	ProjectSection(SolutionItems) = preProject
-		HeuristicLab.Security.ADODataAccess\3.3\HeuristicLab.Security.ADODataAccess-3.3.csproj = HeuristicLab.Security.ADODataAccess\3.3\HeuristicLab.Security.ADODataAccess-3.3.csproj
-	EndProjectSection
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HeuristicLab.Hive", "HeuristicLab.Hive", "{84899895-AC52-4053-8A91-61753EF8E0A8}"
@@ -472,5 +471,6 @@
 		{D17A4D6A-4CAA-4470-8A19-F42463C021FD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 		{D17A4D6A-4CAA-4470-8A19-F42463C021FD}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{D17A4D6A-4CAA-4470-8A19-F42463C021FD}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D17A4D6A-4CAA-4470-8A19-F42463C021FD}.Debug|x86.ActiveCfg = Debug|x86
+		{D17A4D6A-4CAA-4470-8A19-F42463C021FD}.Debug|x86.Build.0 = Debug|x86
 		{D17A4D6A-4CAA-4470-8A19-F42463C021FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D17A4D6A-4CAA-4470-8A19-F42463C021FD}.Release|Any CPU.Build.0 = Release|Any CPU
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/HeuristicLab.Hive.Client.Common-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/HeuristicLab.Hive.Client.Common-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Common/3.3/HeuristicLab.Hive.Client.Common-3.3.csproj	(revision 4121)
@@ -57,5 +57,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/HeuristicLab.Hive.Client.Communication-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/HeuristicLab.Hive.Client.Communication-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Communication/3.3/HeuristicLab.Hive.Client.Communication-3.3.csproj	(revision 4121)
@@ -41,5 +41,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HeuristicLab.Hive.Client.Console-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HeuristicLab.Hive.Client.Console-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Console/3.3/HeuristicLab.Hive.Client.Console-3.3.csproj	(revision 4121)
@@ -43,5 +43,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Heartbeat.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Heartbeat.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Heartbeat.cs	(revision 4121)
@@ -84,4 +84,7 @@
           wcfService.Connect();
         }
+        if (wcfService.ConnState == NetworkEnum.WcfConnState.Connected) {
+          wcfService.LoginSync(ConfigManager.Instance.GetClientInfo());
+        }
 
         ClientDto info = ConfigManager.Instance.GetClientInfo();
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/HeuristicLab.Hive.Client.Core-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/HeuristicLab.Hive.Client.Core-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/HeuristicLab.Hive.Client.Core-3.3.csproj	(revision 4121)
@@ -41,5 +41,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Properties/AssemblyInfo.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.Core/3.3/Properties/AssemblyInfo.cs	(revision 4121)
@@ -57,5 +57,5 @@
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.3.0.4119")]
-[assembly: AssemblyFileVersion("3.3.0.4119")]
-[assembly: AssemblyBuildDate("2010/07/29 16:49:03")]
+[assembly: AssemblyVersion("3.3.0.4120")]
+[assembly: AssemblyFileVersion("3.3.0.4120")]
+[assembly: AssemblyBuildDate("2010/07/30 13:39:23")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/HeuristicLab.Hive.Client.ExecutionEngine-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/HeuristicLab.Hive.Client.ExecutionEngine-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Client.ExecutionEngine/3.3/HeuristicLab.Hive.Client.ExecutionEngine-3.3.csproj	(revision 4121)
@@ -41,5 +41,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HeuristicLab.Hive.Contracts-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HeuristicLab.Hive.Contracts-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/HeuristicLab.Hive.Contracts-3.3.csproj	(revision 4121)
@@ -41,5 +41,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IExecutionEngineFacade.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IExecutionEngineFacade.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IExecutionEngineFacade.cs	(revision 4121)
@@ -39,5 +39,7 @@
     ResponseObject<SerializedJob> GetLastSerializedResult(Guid jobId, bool requested, bool snapshot);
     [OperationContract]
-    Response AbortJob(Guid jobId);    
+    Response AbortJob(Guid jobId);
+    [OperationContract]
+    ResponseObject<JobDto> GetJobById(Guid jobId);
   }
 }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IJobManager.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IJobManager.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/IJobManager.cs	(revision 4121)
@@ -66,5 +66,5 @@
     ResponseList<JobDto> GetJobsByProject(Guid projectId);
     [OperationContract]
-    ResponseObject<JobDto> AddJobWithGroupStrings(SerializedJob job, IEnumerable<string> resources);    
+    ResponseObject<JobDto> AddJobWithGroupStrings(SerializedJob job, IEnumerable<string> resources);
   }
 }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLab.Hive.Engine-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLab.Hive.Engine-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Engine/3.3/HeuristicLab.Hive.Engine-3.3.csproj	(revision 4121)
@@ -56,5 +56,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/ControlExtensions.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/ControlExtensions.cs	(revision 4121)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/ControlExtensions.cs	(revision 4121)
@@ -0,0 +1,17 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Hive.Experiment.Views {
+  public static class ControlExtensions {
+    public static void InvokeIfRequired(this Control c, Action<Control> action) {
+      if (c.InvokeRequired) {
+        c.Invoke((Action)(() => action(c)));
+      } else {
+        action(c);
+      }
+    }
+  }
+}
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLab.Hive.Experiment.Views-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLab.Hive.Experiment.Views-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLab.Hive.Experiment.Views-3.3.csproj	(revision 4121)
@@ -73,8 +73,6 @@
       <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Data-3.3.dll</HintPath>
     </Reference>
-    <Reference Include="HeuristicLab.DataAccess-3.3, Version=3.3.0.4091, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Hive.Experiment.Views-3.3, Version=3.3.0.4119, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Hive.Server.Console-3.3">
-      <HintPath>..\..\HeuristicLab.Hive.Server.Console\3.3\obj\Debug\HeuristicLab.Hive.Server.Console-3.3.dll</HintPath>
+    <Reference Include="HeuristicLab.DataAccess-3.3, Version=3.3.0.4091, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
     </Reference>
     <Reference Include="HeuristicLab.MainForm-3.3">
@@ -93,5 +91,7 @@
       <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Optimization.Views-3.3.dll</HintPath>
     </Reference>
-    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
+    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+    </Reference>
     <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
       <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
@@ -107,4 +107,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="ControlExtensions.cs" />
     <Compile Include="HeuristicLabHiveExperimentViewsPlugin.cs" />
     <Compile Include="HiveExperimentView.cs">
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLabHiveExperimentViewsPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLabHiveExperimentViewsPlugin.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLabHiveExperimentViewsPlugin.cs	(revision 4121)
@@ -28,9 +28,20 @@
   [Plugin("HeuristicLab.Hive.Experiment.Views", "3.3")]
   [PluginFile("HeuristicLab.Hive.Experiment.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
   [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.DataAccess", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.Contracts", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.Experiment", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.JobBase", "3.3")]
   [PluginDependency("HeuristicLab.MainForm", "3.3")]
-  [PluginDependency("HeuristicLab.Hive.Experiment", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Operators.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabHiveExperimentViewsPlugin : PluginBase {
 
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemListView.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemListView.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemListView.cs	(revision 4121)
@@ -22,5 +22,5 @@
       InitializeComponent();
       itemsGroupBox.Text = "Jobs";
-      //this.ReadOnly = true;
+      this.viewHost.ReadOnly = true;
     }
 
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.Designer.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.Designer.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.Designer.cs	(revision 4121)
@@ -52,5 +52,8 @@
       this.dateCalculatedText = new System.Windows.Forms.TextBox();
       this.dateCalculatedLabel = new System.Windows.Forms.Label();
+      this.jobStatusGroupBox = new System.Windows.Forms.GroupBox();
+      this.percentageProgressBar = new System.Windows.Forms.ProgressBar();
       this.snapshotGroupBox.SuspendLayout();
+      this.jobStatusGroupBox.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -58,5 +61,5 @@
       // 
       this.stateLabel.AutoSize = true;
-      this.stateLabel.Location = new System.Drawing.Point(4, 4);
+      this.stateLabel.Location = new System.Drawing.Point(7, 19);
       this.stateLabel.Name = "stateLabel";
       this.stateLabel.Size = new System.Drawing.Size(35, 13);
@@ -67,5 +70,5 @@
       // 
       this.userIdLabel.AutoSize = true;
-      this.userIdLabel.Location = new System.Drawing.Point(4, 26);
+      this.userIdLabel.Location = new System.Drawing.Point(4, 3);
       this.userIdLabel.Name = "userIdLabel";
       this.userIdLabel.Size = new System.Drawing.Size(41, 13);
@@ -77,7 +80,7 @@
       this.stateTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.stateTextBox.Location = new System.Drawing.Point(92, 4);
+      this.stateTextBox.Location = new System.Drawing.Point(95, 19);
       this.stateTextBox.Name = "stateTextBox";
-      this.stateTextBox.Size = new System.Drawing.Size(319, 20);
+      this.stateTextBox.Size = new System.Drawing.Size(395, 20);
       this.stateTextBox.TabIndex = 2;
       // 
@@ -86,16 +89,14 @@
       this.userIdTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.userIdTextBox.Location = new System.Drawing.Point(92, 26);
+      this.userIdTextBox.Location = new System.Drawing.Point(92, 3);
       this.userIdTextBox.Name = "userIdTextBox";
-      this.userIdTextBox.Size = new System.Drawing.Size(319, 20);
+      this.userIdTextBox.Size = new System.Drawing.Size(411, 20);
       this.userIdTextBox.TabIndex = 3;
       // 
       // percentageTextBox
       // 
-      this.percentageTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.percentageTextBox.Location = new System.Drawing.Point(92, 48);
+      this.percentageTextBox.Location = new System.Drawing.Point(95, 41);
       this.percentageTextBox.Name = "percentageTextBox";
-      this.percentageTextBox.Size = new System.Drawing.Size(319, 20);
+      this.percentageTextBox.Size = new System.Drawing.Size(52, 20);
       this.percentageTextBox.TabIndex = 4;
       // 
@@ -104,7 +105,7 @@
       this.dateCreatedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.dateCreatedTextBox.Location = new System.Drawing.Point(92, 70);
+      this.dateCreatedTextBox.Location = new System.Drawing.Point(95, 63);
       this.dateCreatedTextBox.Name = "dateCreatedTextBox";
-      this.dateCreatedTextBox.Size = new System.Drawing.Size(319, 20);
+      this.dateCreatedTextBox.Size = new System.Drawing.Size(395, 20);
       this.dateCreatedTextBox.TabIndex = 5;
       // 
@@ -113,7 +114,7 @@
       this.dateFinishedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.dateFinishedTextBox.Location = new System.Drawing.Point(92, 114);
+      this.dateFinishedTextBox.Location = new System.Drawing.Point(95, 107);
       this.dateFinishedTextBox.Name = "dateFinishedTextBox";
-      this.dateFinishedTextBox.Size = new System.Drawing.Size(319, 20);
+      this.dateFinishedTextBox.Size = new System.Drawing.Size(395, 20);
       this.dateFinishedTextBox.TabIndex = 6;
       // 
@@ -122,7 +123,7 @@
       this.priorityTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.priorityTextBox.Location = new System.Drawing.Point(92, 136);
+      this.priorityTextBox.Location = new System.Drawing.Point(92, 25);
       this.priorityTextBox.Name = "priorityTextBox";
-      this.priorityTextBox.Size = new System.Drawing.Size(319, 20);
+      this.priorityTextBox.Size = new System.Drawing.Size(411, 20);
       this.priorityTextBox.TabIndex = 7;
       // 
@@ -131,7 +132,7 @@
       this.coresNeededTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.coresNeededTextBox.Location = new System.Drawing.Point(92, 158);
+      this.coresNeededTextBox.Location = new System.Drawing.Point(92, 47);
       this.coresNeededTextBox.Name = "coresNeededTextBox";
-      this.coresNeededTextBox.Size = new System.Drawing.Size(319, 20);
+      this.coresNeededTextBox.Size = new System.Drawing.Size(411, 20);
       this.coresNeededTextBox.TabIndex = 8;
       // 
@@ -140,7 +141,7 @@
       this.memoryNeededTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.memoryNeededTextBox.Location = new System.Drawing.Point(92, 180);
+      this.memoryNeededTextBox.Location = new System.Drawing.Point(92, 69);
       this.memoryNeededTextBox.Name = "memoryNeededTextBox";
-      this.memoryNeededTextBox.Size = new System.Drawing.Size(319, 20);
+      this.memoryNeededTextBox.Size = new System.Drawing.Size(411, 20);
       this.memoryNeededTextBox.TabIndex = 9;
       // 
@@ -149,7 +150,7 @@
       this.pluginsNeededTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.pluginsNeededTextBox.Location = new System.Drawing.Point(92, 202);
+      this.pluginsNeededTextBox.Location = new System.Drawing.Point(92, 91);
       this.pluginsNeededTextBox.Name = "pluginsNeededTextBox";
-      this.pluginsNeededTextBox.Size = new System.Drawing.Size(319, 20);
+      this.pluginsNeededTextBox.Size = new System.Drawing.Size(411, 20);
       this.pluginsNeededTextBox.TabIndex = 10;
       // 
@@ -158,7 +159,7 @@
       this.projectTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.projectTextBox.Location = new System.Drawing.Point(92, 224);
+      this.projectTextBox.Location = new System.Drawing.Point(92, 113);
       this.projectTextBox.Name = "projectTextBox";
-      this.projectTextBox.Size = new System.Drawing.Size(319, 20);
+      this.projectTextBox.Size = new System.Drawing.Size(411, 20);
       this.projectTextBox.TabIndex = 11;
       // 
@@ -166,5 +167,5 @@
       // 
       this.percentageLabel.AutoSize = true;
-      this.percentageLabel.Location = new System.Drawing.Point(4, 48);
+      this.percentageLabel.Location = new System.Drawing.Point(7, 41);
       this.percentageLabel.Name = "percentageLabel";
       this.percentageLabel.Size = new System.Drawing.Size(65, 13);
@@ -175,5 +176,5 @@
       // 
       this.dateCreatedLabel.AutoSize = true;
-      this.dateCreatedLabel.Location = new System.Drawing.Point(4, 70);
+      this.dateCreatedLabel.Location = new System.Drawing.Point(7, 63);
       this.dateCreatedLabel.Name = "dateCreatedLabel";
       this.dateCreatedLabel.Size = new System.Drawing.Size(70, 13);
@@ -184,5 +185,5 @@
       // 
       this.dateFinishedLabel.AutoSize = true;
-      this.dateFinishedLabel.Location = new System.Drawing.Point(4, 114);
+      this.dateFinishedLabel.Location = new System.Drawing.Point(7, 107);
       this.dateFinishedLabel.Name = "dateFinishedLabel";
       this.dateFinishedLabel.Size = new System.Drawing.Size(72, 13);
@@ -193,5 +194,5 @@
       // 
       this.priorityLabel.AutoSize = true;
-      this.priorityLabel.Location = new System.Drawing.Point(4, 136);
+      this.priorityLabel.Location = new System.Drawing.Point(4, 25);
       this.priorityLabel.Name = "priorityLabel";
       this.priorityLabel.Size = new System.Drawing.Size(41, 13);
@@ -202,5 +203,5 @@
       // 
       this.coresNeededLabel.AutoSize = true;
-      this.coresNeededLabel.Location = new System.Drawing.Point(4, 158);
+      this.coresNeededLabel.Location = new System.Drawing.Point(4, 47);
       this.coresNeededLabel.Name = "coresNeededLabel";
       this.coresNeededLabel.Size = new System.Drawing.Size(75, 13);
@@ -211,5 +212,5 @@
       // 
       this.memoryNeededLabel.AutoSize = true;
-      this.memoryNeededLabel.Location = new System.Drawing.Point(4, 180);
+      this.memoryNeededLabel.Location = new System.Drawing.Point(4, 69);
       this.memoryNeededLabel.Name = "memoryNeededLabel";
       this.memoryNeededLabel.Size = new System.Drawing.Size(85, 13);
@@ -220,5 +221,5 @@
       // 
       this.pluginsNeededLabel.AutoSize = true;
-      this.pluginsNeededLabel.Location = new System.Drawing.Point(4, 202);
+      this.pluginsNeededLabel.Location = new System.Drawing.Point(4, 91);
       this.pluginsNeededLabel.Name = "pluginsNeededLabel";
       this.pluginsNeededLabel.Size = new System.Drawing.Size(82, 13);
@@ -229,5 +230,5 @@
       // 
       this.projectLabel.AutoSize = true;
-      this.projectLabel.Location = new System.Drawing.Point(4, 224);
+      this.projectLabel.Location = new System.Drawing.Point(4, 113);
       this.projectLabel.Name = "projectLabel";
       this.projectLabel.Size = new System.Drawing.Size(43, 13);
@@ -244,7 +245,7 @@
       this.snapshotGroupBox.Controls.Add(this.snapshotTimeLabel);
       this.snapshotGroupBox.Controls.Add(this.snapshotStatusLabel);
-      this.snapshotGroupBox.Location = new System.Drawing.Point(7, 246);
+      this.snapshotGroupBox.Location = new System.Drawing.Point(7, 279);
       this.snapshotGroupBox.Name = "snapshotGroupBox";
-      this.snapshotGroupBox.Size = new System.Drawing.Size(404, 100);
+      this.snapshotGroupBox.Size = new System.Drawing.Size(496, 100);
       this.snapshotGroupBox.TabIndex = 21;
       this.snapshotGroupBox.TabStop = false;
@@ -254,5 +255,5 @@
       // 
       this.openSnapshotButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.openSnapshotButton.Location = new System.Drawing.Point(297, 67);
+      this.openSnapshotButton.Location = new System.Drawing.Point(389, 67);
       this.openSnapshotButton.Name = "openSnapshotButton";
       this.openSnapshotButton.Size = new System.Drawing.Size(101, 26);
@@ -268,5 +269,5 @@
       this.snapshotTimeText.Location = new System.Drawing.Point(45, 41);
       this.snapshotTimeText.Name = "snapshotTimeText";
-      this.snapshotTimeText.Size = new System.Drawing.Size(353, 20);
+      this.snapshotTimeText.Size = new System.Drawing.Size(445, 20);
       this.snapshotTimeText.TabIndex = 24;
       // 
@@ -277,5 +278,5 @@
       this.snapshotStatusText.Location = new System.Drawing.Point(45, 19);
       this.snapshotStatusText.Name = "snapshotStatusText";
-      this.snapshotStatusText.Size = new System.Drawing.Size(353, 20);
+      this.snapshotStatusText.Size = new System.Drawing.Size(445, 20);
       this.snapshotStatusText.TabIndex = 23;
       // 
@@ -302,7 +303,7 @@
       this.dateCalculatedText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.dateCalculatedText.Location = new System.Drawing.Point(92, 92);
+      this.dateCalculatedText.Location = new System.Drawing.Point(95, 85);
       this.dateCalculatedText.Name = "dateCalculatedText";
-      this.dateCalculatedText.Size = new System.Drawing.Size(319, 20);
+      this.dateCalculatedText.Size = new System.Drawing.Size(395, 20);
       this.dateCalculatedText.TabIndex = 22;
       // 
@@ -310,5 +311,5 @@
       // 
       this.dateCalculatedLabel.AutoSize = true;
-      this.dateCalculatedLabel.Location = new System.Drawing.Point(4, 92);
+      this.dateCalculatedLabel.Location = new System.Drawing.Point(7, 85);
       this.dateCalculatedLabel.Name = "dateCalculatedLabel";
       this.dateCalculatedLabel.Size = new System.Drawing.Size(83, 13);
@@ -316,10 +317,40 @@
       this.dateCalculatedLabel.Text = "DateCalculated:";
       // 
+      // jobStatusGroupBox
+      // 
+      this.jobStatusGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.jobStatusGroupBox.Controls.Add(this.percentageProgressBar);
+      this.jobStatusGroupBox.Controls.Add(this.stateTextBox);
+      this.jobStatusGroupBox.Controls.Add(this.dateCalculatedLabel);
+      this.jobStatusGroupBox.Controls.Add(this.stateLabel);
+      this.jobStatusGroupBox.Controls.Add(this.dateCalculatedText);
+      this.jobStatusGroupBox.Controls.Add(this.dateFinishedTextBox);
+      this.jobStatusGroupBox.Controls.Add(this.percentageTextBox);
+      this.jobStatusGroupBox.Controls.Add(this.dateCreatedTextBox);
+      this.jobStatusGroupBox.Controls.Add(this.percentageLabel);
+      this.jobStatusGroupBox.Controls.Add(this.dateCreatedLabel);
+      this.jobStatusGroupBox.Controls.Add(this.dateFinishedLabel);
+      this.jobStatusGroupBox.Location = new System.Drawing.Point(7, 139);
+      this.jobStatusGroupBox.Name = "jobStatusGroupBox";
+      this.jobStatusGroupBox.Size = new System.Drawing.Size(496, 134);
+      this.jobStatusGroupBox.TabIndex = 24;
+      this.jobStatusGroupBox.TabStop = false;
+      this.jobStatusGroupBox.Text = "Job Status";
+      // 
+      // percentageProgressBar
+      // 
+      this.percentageProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.percentageProgressBar.Location = new System.Drawing.Point(153, 41);
+      this.percentageProgressBar.Name = "percentageProgressBar";
+      this.percentageProgressBar.Size = new System.Drawing.Size(337, 20);
+      this.percentageProgressBar.TabIndex = 25;
+      // 
       // JobItemView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dateCalculatedLabel);
-      this.Controls.Add(this.dateCalculatedText);
+      this.Controls.Add(this.jobStatusGroupBox);
       this.Controls.Add(this.snapshotGroupBox);
       this.Controls.Add(this.projectLabel);
@@ -328,7 +359,4 @@
       this.Controls.Add(this.coresNeededLabel);
       this.Controls.Add(this.priorityLabel);
-      this.Controls.Add(this.dateFinishedLabel);
-      this.Controls.Add(this.dateCreatedLabel);
-      this.Controls.Add(this.percentageLabel);
       this.Controls.Add(this.projectTextBox);
       this.Controls.Add(this.pluginsNeededTextBox);
@@ -336,15 +364,12 @@
       this.Controls.Add(this.coresNeededTextBox);
       this.Controls.Add(this.priorityTextBox);
-      this.Controls.Add(this.dateFinishedTextBox);
-      this.Controls.Add(this.dateCreatedTextBox);
-      this.Controls.Add(this.percentageTextBox);
       this.Controls.Add(this.userIdTextBox);
-      this.Controls.Add(this.stateTextBox);
       this.Controls.Add(this.userIdLabel);
-      this.Controls.Add(this.stateLabel);
       this.Name = "JobItemView";
-      this.Size = new System.Drawing.Size(414, 417);
+      this.Size = new System.Drawing.Size(506, 409);
       this.snapshotGroupBox.ResumeLayout(false);
       this.snapshotGroupBox.PerformLayout();
+      this.jobStatusGroupBox.ResumeLayout(false);
+      this.jobStatusGroupBox.PerformLayout();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -382,4 +407,6 @@
     private System.Windows.Forms.TextBox dateCalculatedText;
     private System.Windows.Forms.Label dateCalculatedLabel;
+    private System.Windows.Forms.GroupBox jobStatusGroupBox;
+    private System.Windows.Forms.ProgressBar percentageProgressBar;
   }
 }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.cs	(revision 4121)
@@ -34,7 +34,32 @@
       base.OnContentChanged();
       if (Content != null) {
+        Content_JobDtoChanged(this, EventArgs.Empty);
+        if (Content.LatestSnapshot != null) {
+          snapshotStatusText.InvokeIfRequired(c => c.Text = Content.LatestSnapshot.StatusMessage);
+          snapshotTimeText.InvokeIfRequired(c => { c.Text = Content.LatestSnapshotTime.ToString(); });
+        }
+      }
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.LatestSnapshotChanged += new EventHandler(Content_LatestSnapshotChanged);
+      Content.JobDtoChanged += new EventHandler(Content_JobDtoChanged);
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.LatestSnapshotChanged -= new EventHandler(Content_LatestSnapshotChanged);
+      Content.JobDtoChanged -= new EventHandler(Content_JobDtoChanged);
+      base.DeregisterContentEvents();
+    }
+
+    void Content_JobDtoChanged(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_JobDtoChanged), sender, e);
+      } else {
         this.stateTextBox.Text = Content.JobDto.State.ToString();
         this.userIdTextBox.Text = Content.JobDto.UserId.ToString();
-        this.percentageTextBox.Text = Content.JobDto.Percentage.ToString();
+        this.percentageTextBox.Text = (Content.JobDto.Percentage*100).ToString() + "%";
+        this.percentageProgressBar.Value = Convert.ToInt32(Content.JobDto.Percentage * percentageProgressBar.Maximum);
         this.dateCreatedTextBox.Text = Content.JobDto.DateCreated.ToString();
         this.dateCalculatedText.Text = Content.JobDto.DateCalculated.ToString();
@@ -45,30 +70,20 @@
         this.pluginsNeededTextBox.Text = string.Join(", ", Content.JobDto.PluginsNeeded.Select(x => x.Name + "-" + x.Version).ToArray());
         this.projectTextBox.Text = Content.JobDto.Project != null ? Content.JobDto.Project.Name : "-";
+      }
+    }
+
+    void Content_LatestSnapshotChanged(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_LatestSnapshotChanged), sender, e);
+      } else {
         if (Content.LatestSnapshot != null) {
           snapshotStatusText.Text = Content.LatestSnapshot.StatusMessage;
           snapshotTimeText.Text = Content.LatestSnapshotTime.ToString();
+        } else {
+          snapshotStatusText.Text = "";
+          snapshotTimeText.Text = "";
         }
+        SetEnabledStateOfControls();
       }
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.LatestSnapshotChanged += new EventHandler(Content_LatestSnapshotChanged);
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.LatestSnapshotChanged -= new EventHandler(Content_LatestSnapshotChanged);
-      base.DeregisterContentEvents();
-    }
-
-    void Content_LatestSnapshotChanged(object sender, EventArgs e) {
-      if (Content.LatestSnapshot != null) {
-        snapshotStatusText.Text = Content.LatestSnapshot.StatusMessage;
-        snapshotTimeText.Text = Content.LatestSnapshotTime.ToString();
-      } else {
-        snapshotStatusText.Text = "";
-        snapshotTimeText.Text = "";
-      }
-      SetEnabledStateOfControls();
     }
 
@@ -76,4 +91,17 @@
       base.SetEnabledStateOfControls();
       openSnapshotButton.Enabled = Content != null && Content.LatestSnapshot != null;
+      this.stateTextBox.ReadOnly = this.ReadOnly;
+      this.userIdTextBox.ReadOnly = this.ReadOnly;
+      this.percentageTextBox.ReadOnly = this.ReadOnly;
+      this.dateCreatedTextBox.ReadOnly = this.ReadOnly;
+      this.dateCalculatedText.ReadOnly = this.ReadOnly;
+      this.dateFinishedTextBox.ReadOnly = this.ReadOnly;
+      this.priorityTextBox.ReadOnly = this.ReadOnly;
+      this.coresNeededTextBox.ReadOnly = this.ReadOnly;
+      this.memoryNeededTextBox.ReadOnly = this.ReadOnly;
+      this.pluginsNeededTextBox.ReadOnly = this.ReadOnly;
+      this.projectTextBox.ReadOnly = this.ReadOnly;
+      this.snapshotStatusText.ReadOnly = this.ReadOnly;
+      this.snapshotTimeText.ReadOnly = this.ReadOnly;
     }
 
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.resx
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.resx	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.resx	(revision 4121)
@@ -118,39 +118,3 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="stateTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="userIdTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="percentageTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="dateCreatedTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="dateFinishedTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="priorityTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="coresNeededTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="memoryNeededTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="pluginsNeededTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="projectTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="snapshotStatusText.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="dateCalculatedText.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
 </root>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/Properties/AssemblyInfo.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/Properties/AssemblyInfo.cs	(revision 4121)
@@ -55,5 +55,5 @@
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("3.3.0.4119")]
-[assembly: AssemblyFileVersion("3.3.0.4119")]
-[assembly: AssemblyBuildDate("2010/07/29 16:49:22")]
+[assembly: AssemblyVersion("3.3.0.4120")]
+[assembly: AssemblyFileVersion("3.3.0.4120")]
+[assembly: AssemblyBuildDate("2010/07/30 13:39:18")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLabHiveExperimentPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLabHiveExperimentPlugin.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HeuristicLabHiveExperimentPlugin.cs	(revision 4121)
@@ -31,11 +31,16 @@
   [Plugin("HeuristicLab.Hive.Experiment", "3.3")]
   [PluginFile("HeuristicLab.Hive.Experiment-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
   [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.DataAccess", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.Contracts", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.JobBase", "3.3")]
   [PluginDependency("HeuristicLab.Optimization", "3.3")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
-  [PluginDependency("HeuristicLab.Hive.Contracts", "3.3")]
-  [PluginDependency("HeuristicLab.Hive.JobBase", "3.3")]
+  [PluginDependency("HeuristicLab.Tracing", "3.3")]
   public class HeuristicLabHiveExperimentPlugin : PluginBase {
 
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HiveExperiment.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HiveExperiment.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/HiveExperiment.cs	(revision 4121)
@@ -52,5 +52,5 @@
     private const string itemName = "Hive Experiment";
     private const string itemDescription = "An experiment which contains multiple batch runs of algorithms which are executed in the Hive.";
-    private const int resultPollingIntervalMs = 10000;
+    private const int resultPollingIntervalMs = 15000;
 
     private object locker = new object();
@@ -128,5 +128,5 @@
 
     public override IDeepCloneable Clone(Cloner cloner) {
-      log.LogMessage("I am beeing cloned");
+      LogMessage("I am beeing cloned");
       HiveExperiment clone = (HiveExperiment)base.Clone(cloner);
       clone.resourceIds = this.resourceIds;
@@ -148,5 +148,5 @@
     private void AfterDeserialization() {
       InitTimer();
-      log.LogMessage("I was deserialized.");
+      LogMessage("I was deserialized.");
     }
 
@@ -224,5 +224,4 @@
           ResponseObject<JobDto> response = executionEngineFacade.AddJobWithGroupStrings(serializedJob, groups);
           pendingOptimizers.Add(response.Obj.Id, optimizer);
-          StartResultPollingThread(response.Obj);
 
           JobItem jobItem = new JobItem() {
@@ -236,5 +235,10 @@
           jobItems.Add(jobItem);
 
-          log.LogMessage("Sent job to server (jobId: " + response.Obj.Id + ")");
+          LogMessage("Sent job to server (jobId: " + response.Obj.Id + ")");
+        }
+
+        // start results polling after sending sending the jobs to the server (to avoid race conflicts at the optimizers-collection)
+        foreach (JobItem jobItem in jobItems) {
+          StartResultPollingThread(jobItem.JobDto);
         }
       });
@@ -256,6 +260,8 @@
 
     private void ReplaceOptimizer(IOptimizer originalOptimizer, IOptimizer newOptimizer) {
-      int originalOptimizerIndex = experiment.Optimizers.IndexOf(originalOptimizer);
-      experiment.Optimizers[originalOptimizerIndex] = newOptimizer;
+      lock (locker) {
+        int originalOptimizerIndex = experiment.Optimizers.IndexOf(originalOptimizer);
+        experiment.Optimizers[originalOptimizerIndex] = newOptimizer;
+      }
     }
 
@@ -308,10 +314,13 @@
         do {
           Thread.Sleep(resultPollingIntervalMs);
-          lock (locker) {
+          //lock (locker) { [chn] try without locking for better performance
             if (stopPending) return;
-            
-            ResponseObject<SerializedJob> response = executionEngineFacade.GetLastSerializedResult(job.Id, false, false);
-            log.LogMessage("Received response for job: " + response.StatusMessage + " (jobId: " + job.Id + ")");
-            
+
+            ResponseObject<JobDto> response = executionEngineFacade.GetJobById(job.Id);
+            LogMessage("Response: " + response.StatusMessage + " (jobId: " + job.Id + ")");
+
+            if (response.Obj != null) {
+              UpdateJobItem(response.Obj);
+            }
             
             // loop while 
@@ -320,11 +329,13 @@
             // 3. no result for the job is available yet (response.Obj==null)
             // 4. the result that we get from the server is a snapshot and not the final result
-            if (response.Success && response.Obj != null && response.StatusMessage != ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE) {
-              restoredObject = XmlParser.Deserialize<IJob>(new MemoryStream(response.Obj.SerializedJobData));
+            if (response.Success && response.Obj != null && response.Obj.State == State.Finished) {
+              ResponseObject<SerializedJob> jobResponse = executionEngineFacade.GetLastSerializedResult(job.Id, false, false);
+              restoredObject = XmlParser.Deserialize<IJob>(new MemoryStream(jobResponse.Obj.SerializedJobData));
+              UpdateSnapshot(jobResponse);
             }
-          }
+          //}
         } while (restoredObject == null || restoredObject.ExecutionState != Core.ExecutionState.Stopped);
 
-        log.LogMessage("Job finished (jobId: " + job.Id + ")");
+        LogMessage("Job finished (jobId: " + job.Id + ")");
         // job retrieved... replace the existing optimizers with the finished one
         IOptimizer originalOptimizer = pendingOptimizers[job.Id];
@@ -340,7 +351,22 @@
         }
       });
-
-      Logger.Debug("HiveEngine: Starting results-polling thread");
       t.Start();
+    }
+
+    private void UpdateJobItem(JobDto jobDto) {
+      JobItem jobItem = jobItems.Single(x => x.JobDto.Id == jobDto.Id);
+      jobItem.JobDto = jobDto;
+    }
+
+    private void UpdateSnapshot(ResponseObject<SerializedJob> response) {
+      JobItem jobItem = jobItems.Single(x => x.JobDto.Id == response.Obj.JobInfo.Id);
+      jobItem.LatestSnapshot = response;
+    }
+
+    private void LogMessage(string message) {
+      // HeuristicLab.Log is not Thread-Safe, so lock every call
+      lock (locker) {
+        log.LogMessage(message);
+      }
     }
     
@@ -440,5 +466,5 @@
     public event EventHandler ExecutionStateChanged;
     private void OnExecutionStateChanged() {
-      log.LogMessage("ExecutionState changed to " + executionState.ToString());
+      LogMessage("ExecutionState changed to " + executionState.ToString());
       EventHandler handler = ExecutionStateChanged;
       if (handler != null) handler(this, EventArgs.Empty);
@@ -449,5 +475,5 @@
     public event EventHandler Started;
     private void OnStarted() {
-      log.LogMessage("Started");
+      LogMessage("Started");
       timer.Start();
       EventHandler handler = Started;
@@ -458,5 +484,5 @@
     private void OnStopped() {
       timer.Stop();
-      log.LogMessage("Stopped");
+      LogMessage("Stopped");
       EventHandler handler = Stopped;
       if (handler != null) handler(this, EventArgs.Empty);
@@ -466,5 +492,5 @@
     private void OnPaused() {
       timer.Stop();
-      log.LogMessage("Paused");
+      LogMessage("Paused");
       EventHandler handler = Paused;
       if (handler != null) handler(this, EventArgs.Empty);
@@ -473,5 +499,5 @@
     public event EventHandler Prepared;
     protected virtual void OnPrepared() {
-      log.LogMessage("Prepared");
+      LogMessage("Prepared");
       EventHandler handler = Prepared;
       if (handler != null) handler(this, EventArgs.Empty);
@@ -486,5 +512,5 @@
     public event EventHandler ExperimentChanged;
     protected virtual void OnExperimentChanged() {
-      log.LogMessage("Experiment changed");
+      LogMessage("Experiment changed");
       EventHandler handler = ExperimentChanged;
       if (handler != null) handler(this, EventArgs.Empty);
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/JobItem.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/JobItem.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/JobItem.cs	(revision 4121)
@@ -7,7 +7,18 @@
 using HeuristicLab.Hive.Contracts.BusinessObjects;
 using HeuristicLab.Hive.Contracts;
+using System.Drawing;
 
 namespace HeuristicLab.Hive.Experiment {
   public class JobItem : Item {
+    public override Image ItemImage {
+      get {
+        if (jobDto.State == State.Offline) return HeuristicLab.Common.Resources.VS2008ImageLibrary.ExecutableStopped;
+        else if (jobDto.State == State.Idle) return HeuristicLab.Common.Resources.VS2008ImageLibrary.ExecutableStopped;
+        else if (jobDto.State == State.Calculating) return HeuristicLab.Common.Resources.VS2008ImageLibrary.ExecutableStarted;
+        else if (jobDto.State == State.Offline) return HeuristicLab.Common.Resources.VS2008ImageLibrary.ExecutableStopped;
+        else return HeuristicLab.Common.Resources.VS2008ImageLibrary.Event;
+      }
+    }
+
     [Storable]
     private JobDto jobDto;
@@ -17,5 +28,7 @@
         if (jobDto != value) {
           jobDto = value;
+          OnJobDtoChanged();
           OnToStringChanged();
+          OnItemImageChanged();
         }
       }
@@ -41,5 +54,12 @@
     }
 
+    [Storable]
+    private ILog log;
+    public ILog Log {
+      get { return log; }
+    }
+
     public JobItem() {
+      log = new Log();
     }
 
@@ -57,4 +77,10 @@
       if (handler != null) handler(this, EventArgs.Empty);
     }
+
+    public event EventHandler JobDtoChanged;
+    private void OnJobDtoChanged() {
+      EventHandler handler = JobDtoChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
   }
 }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/AssemblyInfo.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment/3.3/Properties/AssemblyInfo.cs	(revision 4121)
@@ -55,5 +55,5 @@
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("3.3.0.4119")]
-[assembly: AssemblyFileVersion("3.3.0.4119")]
-[assembly: AssemblyBuildDate("2010/07/29 16:49:01")]
+[assembly: AssemblyVersion("3.3.0.4120")]
+[assembly: AssemblyFileVersion("3.3.0.4120")]
+[assembly: AssemblyBuildDate("2010/07/30 13:39:10")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.JobBase/3.3/HeuristicLab.Hive.JobBase-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.JobBase/3.3/HeuristicLab.Hive.JobBase-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.JobBase/3.3/HeuristicLab.Hive.JobBase-3.3.csproj	(revision 4121)
@@ -56,5 +56,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.JobBase/3.3/JobPlugin.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.JobBase/3.3/JobPlugin.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.JobBase/3.3/JobPlugin.cs	(revision 4121)
@@ -8,6 +8,7 @@
   [Plugin("HeuristicLab.Hive.JobBase", "3.3")]
   [PluginFile("HeuristicLab.Hive.JobBase-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
-  [PluginDependency("HeuristicLab.Common", "3.3")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class JobBasePlugin: PluginBase {
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj	(revision 4121)
@@ -43,5 +43,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobDataFetcher.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobDataFetcher.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/JobDataFetcher.cs	(revision 4121)
@@ -8,4 +8,5 @@
 using System.Collections;
 using System.Threading;
+using HeuristicLab.Hive.Contracts.Interfaces;
 
 namespace HeuristicLab.Hive.Server.ServerConsole {
@@ -15,5 +16,5 @@
     public IEnumerable<State> PollStates {
       get { return pollStates; }
-    } 
+    }
 
     public event EventHandler NewDataAvailable;
@@ -24,4 +25,6 @@
 
     public List<JobDto> CachedJobs { get; set; }
+
+    private IJobManager jobManager;
 
     public double Interval {
@@ -36,10 +39,10 @@
       }
       set {
-        Console.WriteLine("Setting for " + PollStates + " changed to: " + value);        
-        _nrOfEntriesOnPage = value;        
+        Console.WriteLine("Setting for " + PollStates + " changed to: " + value);
+        _nrOfEntriesOnPage = value;
         Thread t = new Thread(new ThreadStart(DoUpdateRun));
-        t.Start();        
+        t.Start();
       }
-    }    
+    }
     public int CurrentPage { get; set; }
 
@@ -50,7 +53,8 @@
       CurrentPage = 0;
       pollStates.AddRange(states);
+      jobManager = ServiceLocator.GetJobManager();
       timer = new System.Timers.Timer();
       timer.Interval = 5000;
-      timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);      
+      timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
     }
 
@@ -67,5 +71,5 @@
         CurrentPage--;
       DoUpdateRun();
-    } 
+    }
 
     private void Timer_Elapsed(object sender, ElapsedEventArgs e) {
@@ -77,22 +81,23 @@
       // todo: make access to PollStates thread-safe!
       // * added lock on locker -> didn't help
-      // * made public property PollStates an IEnumerable to be immutable -> lets see
-      lock (locker) {
-        foreach (State stat in PollStates) {
-          ResponseList<JobDto> resList = ServiceLocator.GetJobManager().GetAllJobsWithFilter(stat, CurrentPage * NrOfEntriesOnPage,
-                                                              NrOfEntriesOnPage);
-          if (resList.Success) {
-            if (resList.List.Count == 0) {
-              if (CurrentPage > 0) {
-                CurrentPage--;
-              }
-            } else {
-              CachedJobs = new List<JobDto>();
-              CachedJobs.AddRange(resList.List);
+      // * made public property PollStates an IEnumerable to be immutable -> didn't help
+      // * using for loop
+
+      State[] pollStatesCopy = PollStates.ToArray();
+      for (int i = 0; i < pollStatesCopy.Length; i++) {
+        ResponseList<JobDto> resList = jobManager.GetAllJobsWithFilter(pollStatesCopy[i], CurrentPage * NrOfEntriesOnPage, NrOfEntriesOnPage);
+        if (resList.Success) {
+          if (resList.List.Count == 0) {
+            if (CurrentPage > 0) {
+              CurrentPage--;
             }
+          } else {
+            CachedJobs = new List<JobDto>();
+            CachedJobs.AddRange(resList.List);
           }
         }
-        if (NewDataAvailable != null)
-          NewDataAvailable(this, new EventArgs());
+      }
+      if (NewDataAvailable != null) {
+        NewDataAvailable(this, new EventArgs());
       }
     }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs	(revision 4121)
@@ -26,6 +26,5 @@
     public bool ExistsJobForClient(HeuristicLab.Hive.Contracts.BusinessObjects.HeartBeatData hbData) {
       List<JobDto> allOfflineJobsForClient =
-        new List<JobDto>(DaoLocator.JobDao.FindFittingJobsForClient(State.Offline, hbData.FreeCores, hbData.FreeMemory,
-                                                                    hbData.ClientId));
+        new List<JobDto>(DaoLocator.JobDao.FindFittingJobsForClient(State.Offline, hbData.FreeCores, hbData.FreeMemory, hbData.ClientId));
       return (allOfflineJobsForClient != null && allOfflineJobsForClient.Count > 0);
     }
@@ -38,6 +37,5 @@
         ClientDto client = DaoLocator.ClientDao.FindById(clientId);
         LinkedList<JobDto> allOfflineJobsForClient =
-          new LinkedList<JobDto>(DaoLocator.JobDao.FindFittingJobsForClient(State.Offline, client.NrOfFreeCores,
-                                                                            client.FreeMemory, client.Id));        
+          new LinkedList<JobDto>(DaoLocator.JobDao.FindFittingJobsForClient(State.Offline, client.NrOfFreeCores, client.FreeMemory, client.Id));        
         if (allOfflineJobsForClient != null && allOfflineJobsForClient.Count > 0) {
           jobToCalculate = allOfflineJobsForClient.First.Value;
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Facades/ExecutionEngineFacade.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Facades/ExecutionEngineFacade.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Facades/ExecutionEngineFacade.cs	(revision 4121)
@@ -64,4 +64,10 @@
     }
 
+    public ResponseObject<JobDto> GetJobById(Guid jobId) {
+      using (contextFactory.GetContext()) {
+        return jobManager.GetJobById(jobId);
+      }
+    }
+
     public Response AbortJob(Guid jobId) {
       using (contextFactory.GetContext()) {
@@ -69,10 +75,4 @@
       }
     }
-
-    public ResponseObject<JobDto> GetJobById(Guid jobId) {
-      using (contextFactory.GetContext()) {
-        return jobManager.GetJobById(jobId);
-      }
-    }
     #endregion
   }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/HeuristicLab.Hive.Server.Core-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/HeuristicLab.Hive.Server.Core-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/HeuristicLab.Hive.Server.Core-3.3.csproj	(revision 4121)
@@ -41,5 +41,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs	(revision 4121)
@@ -135,4 +135,7 @@
     }
 
+    /// <summary>
+    /// Returns JobDto object with Client-Object attached
+    /// </summary>
     public ResponseObject<JobDto> GetJobByIdWithDetails(Guid jobId) {
       ResponseObject<JobDto> job = new ResponseObject<JobDto>();
@@ -354,4 +357,5 @@
 
     #endregion
+
   }
 }
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Properties/AssemblyInfo.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/Properties/AssemblyInfo.cs	(revision 4121)
@@ -55,5 +55,5 @@
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.3.0.4119")]
-[assembly: AssemblyFileVersion("3.3.0.4119")]
-[assembly: AssemblyBuildDate("2010/07/29 16:49:08")]
+[assembly: AssemblyVersion("3.3.0.4120")]
+[assembly: AssemblyFileVersion("3.3.0.4120")]
+[assembly: AssemblyBuildDate("2010/07/30 13:39:26")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/HeuristicLab.Hive.Server.DataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/HeuristicLab.Hive.Server.DataAccess-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.DataAccess/3.3/HeuristicLab.Hive.Server.DataAccess-3.3.csproj	(revision 4121)
@@ -43,5 +43,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HeuristicLab.Hive.Server.LINQDataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HeuristicLab.Hive.Server.LINQDataAccess-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/HeuristicLab.Hive.Server.LINQDataAccess-3.3.csproj	(revision 4121)
@@ -42,5 +42,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/HeuristicLab.Hive.Server.Scheduler-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/HeuristicLab.Hive.Server.Scheduler-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Scheduler/3.3/HeuristicLab.Hive.Server.Scheduler-3.3.csproj	(revision 4121)
@@ -41,5 +41,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HeuristicLab.Hive.Server-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HeuristicLab.Hive.Server-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server/3.3/HeuristicLab.Hive.Server-3.3.csproj	(revision 4121)
@@ -43,5 +43,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive/3.3/Properties/AssemblyInfo.cs	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive/3.3/Properties/AssemblyInfo.cs	(revision 4121)
@@ -51,4 +51,4 @@
 //      Revision
 //
-[assembly: AssemblyVersion("3.3.0.4119")]
-[assembly: AssemblyFileVersion("3.3.0.4119")]
+[assembly: AssemblyVersion("3.3.0.4120")]
+[assembly: AssemblyFileVersion("3.3.0.4120")]
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/HeuristicLab.Security.ADODataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/HeuristicLab.Security.ADODataAccess-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.ADODataAccess/3.3/HeuristicLab.Security.ADODataAccess-3.3.csproj	(revision 4121)
@@ -59,5 +59,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.3.csproj	(revision 4121)
@@ -58,5 +58,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/HeuristicLab.Security.Core-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/HeuristicLab.Security.Core-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Core/3.3/HeuristicLab.Security.Core-3.3.csproj	(revision 4121)
@@ -56,5 +56,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.DataAccess/3.3/HeuristicLab.Security.DataAccess-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.DataAccess/3.3/HeuristicLab.Security.DataAccess-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.DataAccess/3.3/HeuristicLab.Security.DataAccess-3.3.csproj	(revision 4121)
@@ -58,5 +58,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
Index: /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Server/3.3/HeuristicLab.Security.Server-3.3.csproj
===================================================================
--- /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Server/3.3/HeuristicLab.Security.Server-3.3.csproj	(revision 4120)
+++ /branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Server/3.3/HeuristicLab.Security.Server-3.3.csproj	(revision 4121)
@@ -56,5 +56,5 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
-    <OutputPath>bin\x86\Debug\</OutputPath>
+    <OutputPath>bin\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <DebugType>full</DebugType>
