Index: /trunk/sources/HeuristicLab.CEDMA.Server/3.3/GridExecuter.cs
===================================================================
--- /trunk/sources/HeuristicLab.CEDMA.Server/3.3/GridExecuter.cs	(revision 2057)
+++ /trunk/sources/HeuristicLab.CEDMA.Server/3.3/GridExecuter.cs	(revision 2058)
@@ -53,7 +53,7 @@
     }
 
-    public GridExecuter(IDispatcher dispatcher, IStore store, string gridUrl)
+    public GridExecuter(IDispatcher dispatcher, IStore store, IGridServer server)
       : base(dispatcher, store) {
-      this.jobManager = new JobManager(gridUrl);
+      this.jobManager = new JobManager(server);
       activeAlgorithms = new Dictionary<AsyncGridResult, IAlgorithm>();
       jobManager.Reset();
Index: /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj	(revision 2057)
+++ /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLab.CEDMA.Server-3.3.csproj	(revision 2058)
@@ -92,7 +92,4 @@
   <ItemGroup>
     <Compile Include="ExecuterBase.cs" />
-    <Compile Include="HiveExecuter.cs">
-      <SubType>Code</SubType>
-    </Compile>
     <Compile Include="IExecuter.cs" />
     <Compile Include="DispatcherBase.cs" />
@@ -136,11 +133,11 @@
       <Name>HeuristicLab.Data-3.2</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Grid.HiveBridge\3.2\HeuristicLab.Grid.HiveBridge-3.2.csproj">
+      <Project>{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}</Project>
+      <Name>HeuristicLab.Grid.HiveBridge-3.2</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Grid\3.2\HeuristicLab.Grid-3.2.csproj">
       <Project>{545CE756-98D8-423B-AC2E-6E7D70926E5C}</Project>
       <Name>HeuristicLab.Grid-3.2</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Hive.Engine\3.2\HeuristicLab.Hive.Engine-3.2.csproj">
-      <Project>{C8FEDAC1-0326-4293-B585-F0FEDDEDFC11}</Project>
-      <Name>HeuristicLab.Hive.Engine-3.2</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Modeling\3.2\HeuristicLab.Modeling-3.2.csproj">
Index: /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLabCedmaServerPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLabCedmaServerPlugin.cs	(revision 2057)
+++ /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HeuristicLabCedmaServerPlugin.cs	(revision 2058)
@@ -31,4 +31,5 @@
   [Dependency(Dependency = "HeuristicLab.CEDMA.DB-3.3")]
   [Dependency(Dependency = "HeuristicLab.Grid-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Grid.HiveBridge-3.2")]
   [Dependency(Dependency = "HeuristicLab.Core-3.2")]
   [Dependency(Dependency = "HeuristicLab.Data-3.2")]
Index: unk/sources/HeuristicLab.CEDMA.Server/3.3/HiveExecuter.cs
===================================================================
--- /trunk/sources/HeuristicLab.CEDMA.Server/3.3/HiveExecuter.cs	(revision 2057)
+++ 	(revision )
@@ -1,129 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.PluginInfrastructure;
-using System.Net;
-using System.ServiceModel;
-using HeuristicLab.CEDMA.DB.Interfaces;
-using HeuristicLab.CEDMA.DB;
-using System.ServiceModel.Description;
-using System.Linq;
-using HeuristicLab.CEDMA.Core;
-using HeuristicLab.GP.StructureIdentification;
-using HeuristicLab.Data;
-using HeuristicLab.Grid;
-using System.Diagnostics;
-using HeuristicLab.Core;
-using System.Threading;
-using HeuristicLab.Hive.Engine;
-using HeuristicLab.Modeling;
-
-namespace HeuristicLab.CEDMA.Server {
-  public class HiveExecuter : ExecuterBase {
-    private Dictionary<WaitHandle, IAlgorithm> activeAlgorithms;
-    private Dictionary<WaitHandle, HiveEngine> activeEngines;
-    private string hiveUrl;
-
-    private TimeSpan StartJobInterval {
-      get { return TimeSpan.FromMilliseconds(500); }
-    }
-
-    private TimeSpan WaitForFinishedJobsTimeout {
-      get { return TimeSpan.FromMilliseconds(100); }
-    }
-
-    public HiveExecuter(IDispatcher dispatcher, IStore store, string hiveUrl)
-      : base(dispatcher, store) {
-      this.hiveUrl = hiveUrl;
-      activeAlgorithms = new Dictionary<WaitHandle, IAlgorithm>();
-      activeEngines = new Dictionary<WaitHandle, HiveEngine>();
-    }
-
-    protected override void StartJobs() {
-      List<WaitHandle> wh = new List<WaitHandle>();
-      while (true) {
-        try {
-          // start new jobs as long as there are less than MaxActiveJobs 
-          while (wh.Count < MaxActiveJobs) {
-            Thread.Sleep(StartJobInterval);
-            // get an algo from the dispatcher and execute in grid via job-manager
-            IAlgorithm algorithm = Dispatcher.GetNextJob();
-            if (algorithm != null) {
-              HiveEngine engine = new HiveEngine();
-              engine.HiveServerUrl = hiveUrl;
-              IOperator initialOp = algorithm.Engine.OperatorGraph.InitialOperator;
-              engine.OperatorGraph.AddOperator(initialOp);
-              engine.OperatorGraph.InitialOperator = initialOp;
-              RegisterFinishedCallback(engine, algorithm, wh);
-              engine.Reset();
-              engine.Execute();
-            }
-          }
-          // wait until any job is finished
-          WaitHandle[] whArr = wh.ToArray();
-          int readyHandleIndex = WaitHandle.WaitAny(whArr, WaitForFinishedJobsTimeout);
-          if (readyHandleIndex != WaitHandle.WaitTimeout) {
-            WaitHandle readyHandle = whArr[readyHandleIndex];
-            wh.Remove(readyHandle);
-            HiveEngine finishedEngine = activeEngines[readyHandle];
-            activeEngines.Remove(readyHandle);
-
-            IAlgorithm finishedAlgorithm = activeAlgorithms[readyHandle];
-            lock (activeAlgorithms) {
-              activeAlgorithms.Remove(readyHandle);
-            }
-            SetResults(finishedEngine.GlobalScope, finishedAlgorithm.Engine.GlobalScope);
-            StoreResults(finishedAlgorithm);
-            readyHandle.Close();
-          }
-        }
-        catch (Exception ex) {
-          HeuristicLab.Tracing.HiveLogger.Debug("CEDMA Executer: Exception in job-management thread. " + ex.Message + "\n" + ex.StackTrace);
-        }
-      }
-    }
-
-    private void RegisterFinishedCallback(HiveEngine engine, IAlgorithm algorithm, List<WaitHandle> wh) {
-      ManualResetEvent waithandle = new ManualResetEvent(false);
-      wh.Add(waithandle);
-      engine.Finished += (sender, args) => waithandle.Set();
-      lock (activeAlgorithms) {
-        activeAlgorithms.Add(waithandle, algorithm);
-      }
-      activeEngines.Add(waithandle, engine);
-    }
-
-    public override string[] GetJobs() {
-      lock (activeAlgorithms) {
-        string[] retVal = new string[activeAlgorithms.Count];
-        int i = 0;
-        foreach (IAlgorithm a in activeAlgorithms.Values) {
-          retVal[i++] = a.Name + " " + a.Dataset.GetVariableName(a.TargetVariable);
-        }
-        return retVal;
-      }
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.CEDMA.Server/3.3/Server.cs
===================================================================
--- /trunk/sources/HeuristicLab.CEDMA.Server/3.3/Server.cs	(revision 2057)
+++ /trunk/sources/HeuristicLab.CEDMA.Server/3.3/Server.cs	(revision 2058)
@@ -30,4 +30,6 @@
 using HeuristicLab.CEDMA.DB;
 using System.ServiceModel.Description;
+using HeuristicLab.Grid;
+using HeuristicLab.Grid.HiveBridge;
 
 namespace HeuristicLab.CEDMA.Server {
@@ -105,10 +107,12 @@
     internal void Connect(string serverUrl) {
       dispatcher = new SimpleDispatcher(store);
+      IGridServer gridServer = null;
       if (serverUrl.Contains("ExecutionEngine")) {
-        executer = new HiveExecuter(dispatcher, store, serverUrl);
+        gridServer = new HiveGridServerWrapper(serverUrl);
       } else {
         // default is grid backend
-        executer = new GridExecuter(dispatcher, store, serverUrl);
+        gridServer = new GridServerProxy(serverUrl);
       }
+      executer = new GridExecuter(dispatcher, store, gridServer);
       executer.Start();
     }
Index: /trunk/sources/HeuristicLab.DistributedEngine/3.2/DistributedEngine.cs
===================================================================
--- /trunk/sources/HeuristicLab.DistributedEngine/3.2/DistributedEngine.cs	(revision 2057)
+++ /trunk/sources/HeuristicLab.DistributedEngine/3.2/DistributedEngine.cs	(revision 2058)
@@ -72,5 +72,5 @@
 
     public override void Execute() {
-      if (jobManager == null) this.jobManager = new JobManager(serverAddress);
+      if (jobManager == null) this.jobManager = new JobManager(new GridServerProxy(serverAddress));
       jobManager.Reset();
       base.Execute();
Index: /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HeuristicLab.Grid.HiveBridge-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HeuristicLab.Grid.HiveBridge-3.2.csproj	(revision 2058)
+++ /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HeuristicLab.Grid.HiveBridge-3.2.csproj	(revision 2058)
@@ -0,0 +1,106 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Grid.HiveBridge_3._2</RootNamespace>
+    <AssemblyName>HeuristicLab.Grid.HiveBridge-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HiveGridServerWrapper.cs" />
+    <Compile Include="HeuristicLabGridHiveBridgePlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ServiceLocator.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.2\HeuristicLab.DataAccess-3.2.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Grid\3.2\HeuristicLab.Grid-3.2.csproj">
+      <Project>{545CE756-98D8-423B-AC2E-6E7D70926E5C}</Project>
+      <Name>HeuristicLab.Grid-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Contracts\3.2\HeuristicLab.Hive.Contracts-3.2.csproj">
+      <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
+      <Name>HeuristicLab.Hive.Contracts-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.JobBase\3.2\HeuristicLab.Hive.JobBase-3.2.csproj">
+      <Project>{21187322-52DD-4243-80A4-A85F0263E63B}</Project>
+      <Name>HeuristicLab.Hive.JobBase-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HeuristicLabGridHiveBridgePlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HeuristicLabGridHiveBridgePlugin.cs	(revision 2058)
+++ /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HeuristicLabGridHiveBridgePlugin.cs	(revision 2058)
@@ -0,0 +1,36 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Grid.HiveBridge {
+  [ClassInfo(Name = "HeuristicLab.Grid.HiveBridge-3.2")]
+  [PluginFile(Filename = "HeuristicLab.Grid.HiveBridge-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Grid-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Hive.Contracts-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Hive.JobBase-3.2")]
+  public class HeuristicLabGridPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HiveGridServerWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HiveGridServerWrapper.cs	(revision 2058)
+++ /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HiveGridServerWrapper.cs	(revision 2058)
@@ -0,0 +1,117 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading;
+using HeuristicLab.Hive.Contracts.Interfaces;
+using HeuristicLab.Hive.Contracts;
+using System.IO;
+using System.IO.Compression;
+using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Grid.HiveBridge {
+  public class HiveGridServerWrapper : IGridServer {
+    private string address;
+
+    public HiveGridServerWrapper(string address) {
+      this.address = address;
+    }
+
+    public JobState JobState(Guid guid) {
+      IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(address);
+      ResponseObject<JobResult> response = executionEngineFacade.GetLastResult(guid, false);
+      if (response.Success == true &&
+        (response.StatusMessage == ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE ||
+          response.StatusMessage == ApplicationConstants.RESPONSE_JOB_REQUEST_SET ||
+          response.StatusMessage == ApplicationConstants.RESPONSE_JOB_REQUEST_ALLREADY_SET ||
+          response.StatusMessage == ApplicationConstants.RESPONSE_JOB_JOB_RESULT_SENT)) {
+          return HeuristicLab.Grid.JobState.Busy;
+      } else return HeuristicLab.Grid.JobState.Unknown;
+    }
+
+    public Guid BeginExecuteEngine(byte[] engine) {
+      var jobObj = CreateJobObj(engine);
+
+      IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(address);
+      ResponseObject<HeuristicLab.Hive.Contracts.BusinessObjects.Job> res = executionEngineFacade.AddJob(jobObj);
+      return res.Obj.Id;
+    }
+
+    public byte[] TryEndExecuteEngine(Guid guid) {
+      IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(address);
+      ResponseObject<JobResult> response = executionEngineFacade.GetLastResult(guid, false);
+      if (response.Success && response.Obj != null) {
+        Job restoredJob = (Job)PersistenceManager.RestoreFromGZip(response.Obj.Result);
+        return restoredJob.SerializedJob;
+      } else return null;
+    }
+
+    private HeuristicLab.Hive.Contracts.BusinessObjects.Job CreateJobObj(byte[] serializedEngine) {
+      HeuristicLab.Hive.Contracts.BusinessObjects.Job jobObj = new HeuristicLab.Hive.Contracts.BusinessObjects.Job();
+
+      // unzip and restore to determine the list of required plugins (NB: inefficient!)
+      MemoryStream memStream = new MemoryStream();
+      GZipStream stream = new GZipStream(memStream, CompressionMode.Decompress, true);
+      XmlDocument document = new XmlDocument();
+      document.Load(stream);
+
+      Dictionary<Guid, IStorable> dictionary = new Dictionary<Guid, IStorable>();
+      XmlNode rootNode = document.ChildNodes[0].ChildNodes[0];
+      PersistenceManager.Restore(rootNode, dictionary);
+      stream.Close();
+
+      DiscoveryService service = new DiscoveryService();
+      List<PluginInfo> plugins = new List<PluginInfo>();
+
+      foreach (IStorable storeable in dictionary.Values) {
+        PluginInfo pluginInfo = service.GetDeclaringPlugin(storeable.GetType());
+        if (!plugins.Contains(pluginInfo)) {
+          plugins.Add(pluginInfo);
+          foreach (var dependency in pluginInfo.Dependencies) {
+            if (!plugins.Contains(dependency)) plugins.Add(dependency);
+          }
+        }
+      }
+
+      List<HivePluginInfo> pluginsNeeded =
+        new List<HivePluginInfo>();
+      foreach (PluginInfo uniquePlugin in plugins) {
+        HivePluginInfo pluginInfo =
+          new HivePluginInfo();
+        pluginInfo.Name = uniquePlugin.Name;
+        pluginInfo.Version = uniquePlugin.Version.ToString();
+        pluginInfo.BuildDate = uniquePlugin.BuildDate;
+        pluginsNeeded.Add(pluginInfo);
+      }
+
+      jobObj.SerializedJob = serializedEngine;
+      jobObj.CoresNeeded = 1;
+      jobObj.PluginsNeeded = pluginsNeeded;
+      jobObj.State = HeuristicLab.Hive.Contracts.BusinessObjects.State.offline;
+      return jobObj;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/Properties/AssemblyInfo.frame	(revision 2058)
+++ /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/Properties/AssemblyInfo.frame	(revision 2058)
@@ -0,0 +1,58 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Grid.HiveBridge")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2009 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("390a4020-8f30-4c57-b039-6f3647df86b0")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/ServiceLocator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/ServiceLocator.cs	(revision 2058)
+++ /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/ServiceLocator.cs	(revision 2058)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using HeuristicLab.Hive.Contracts.Interfaces;
+using System.ServiceModel;
+using HeuristicLab.Hive.Contracts;
+
+namespace HeuristicLab.Grid.HiveBridge {
+  internal class ServiceLocator {
+    internal static IExecutionEngineFacade CreateExecutionEngineFacade(string url) {
+      ChannelFactory<IExecutionEngineFacade> factory =
+        new ChannelFactory<IExecutionEngineFacade>(
+          WcfSettings.GetStreamedBinding(),
+          new EndpointAddress(url));
+
+      return factory.CreateChannel();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Grid/3.2/GridServerProxy.cs
===================================================================
--- /trunk/sources/HeuristicLab.Grid/3.2/GridServerProxy.cs	(revision 2058)
+++ /trunk/sources/HeuristicLab.Grid/3.2/GridServerProxy.cs	(revision 2058)
@@ -0,0 +1,91 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ServiceModel;
+using HeuristicLab.Tracing;
+using System.Threading;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Grid {
+  public class GridServerProxy : IGridServer {
+    private const int MAX_CONNECTION_RETRIES = 10;
+    private const int RETRY_TIMEOUT_SEC = 60;
+    private string address;
+    private object connectionLock = new object();
+    private ChannelFactory<IGridServer> factory;
+    private IGridServer server;
+
+    public GridServerProxy(string address) {
+      this.address = address;
+    }
+
+    public JobState JobState(Guid guid) {
+      return SavelyExecute(() => server.JobState(guid));
+    }
+
+    public Guid BeginExecuteEngine(byte[] engine) {
+      return SavelyExecute(() => server.BeginExecuteEngine(engine));
+    }
+
+    public byte[] TryEndExecuteEngine(Guid guid) {
+      return SavelyExecute(() => server.TryEndExecuteEngine(guid));
+    }
+
+    private void ResetConnection() {
+      Logger.Info("Reset connection in JobManager");
+      lock (connectionLock) {
+        // open a new channel
+        NetTcpBinding binding = new NetTcpBinding();
+        binding.MaxReceivedMessageSize = 100000000; // 100Mbytes
+        binding.ReaderQuotas.MaxStringContentLength = 100000000; // also 100M chars
+        binding.ReaderQuotas.MaxArrayLength = 100000000; // also 100M elements;
+
+        factory = new ChannelFactory<IGridServer>(binding);
+        server = factory.CreateChannel(new EndpointAddress(address));
+      }
+    }
+
+    private TResult SavelyExecute<TResult>(Func<TResult> a) {
+      int retries = 0;
+      do {
+        try {
+          lock (connectionLock) {
+            return a();
+          }
+        }
+        catch (TimeoutException) {
+          retries++;
+          Thread.Sleep(TimeSpan.FromSeconds(RETRY_TIMEOUT_SEC));
+        }
+        catch (CommunicationException) {
+          ResetConnection();
+          retries++;
+          Thread.Sleep(TimeSpan.FromSeconds(RETRY_TIMEOUT_SEC));
+        }
+      } while (retries < MAX_CONNECTION_RETRIES);
+      Logger.Warn("Reached max connection retries");
+      return default(TResult);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Grid/3.2/HeuristicLab.Grid-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Grid/3.2/HeuristicLab.Grid-3.2.csproj	(revision 2057)
+++ /trunk/sources/HeuristicLab.Grid/3.2/HeuristicLab.Grid-3.2.csproj	(revision 2058)
@@ -99,4 +99,5 @@
     </Compile>
     <Compile Include="AsyncGridResult.cs" />
+    <Compile Include="GridServerProxy.cs" />
     <Compile Include="Database.cs" />
     <Compile Include="EngineRunner.cs" />
@@ -128,4 +129,8 @@
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
       <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Tracing\3.2\HeuristicLab.Tracing-3.2.csproj">
+      <Project>{EE2034D9-6E27-48A1-B855-42D45F69A4FC}</Project>
+      <Name>HeuristicLab.Tracing-3.2</Name>
     </ProjectReference>
   </ItemGroup>
Index: /trunk/sources/HeuristicLab.Grid/3.2/HeuristicLabGridPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Grid/3.2/HeuristicLabGridPlugin.cs	(revision 2057)
+++ /trunk/sources/HeuristicLab.Grid/3.2/HeuristicLabGridPlugin.cs	(revision 2058)
@@ -30,4 +30,5 @@
   [PluginFile(Filename = "HeuristicLab.Grid-3.2.dll", Filetype = PluginFileType.Assembly)]
   [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Tracing-3.2")]
   public class HeuristicLabGridPlugin : PluginBase {
   }
Index: /trunk/sources/HeuristicLab.Grid/3.2/JobManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Grid/3.2/JobManager.cs	(revision 2057)
+++ /trunk/sources/HeuristicLab.Grid/3.2/JobManager.cs	(revision 2058)
@@ -39,6 +39,4 @@
   public class JobManager {
     private const int MAX_RESTARTS = 5;
-    private const int MAX_CONNECTION_RETRIES = 10;
-    private const int RETRY_TIMEOUT_SEC = 60;
     private const int RESULT_POLLING_TIMEOUT = 5;
 
@@ -49,13 +47,10 @@
     private object runningQueueLock = new object();
     private Queue<AsyncGridResult> runningJobs = new Queue<AsyncGridResult>();
-    private object connectionLock = new object();
-
     private AutoResetEvent runningWaitHandle = new AutoResetEvent(false);
     private AutoResetEvent waitingWaitHandle = new AutoResetEvent(false);
 
-    private ChannelFactory<IGridServer> factory;
 
-    public JobManager(string address) {
-      this.address = address;
+    public JobManager(IGridServer server) {
+      this.server = server;
       Thread starterThread = new Thread(StartEngines);
       Thread resultsGatheringThread = new Thread(GetResults);
@@ -65,5 +60,4 @@
 
     public void Reset() {
-      ResetConnection();
       lock (waitingQueueLock) {
         foreach (AsyncGridResult r in waitingJobs) {
@@ -80,17 +74,4 @@
     }
 
-    private void ResetConnection() {
-      Trace.TraceInformation("Reset connection in JobManager");
-      lock (connectionLock) {
-        // open a new channel
-        NetTcpBinding binding = new NetTcpBinding();
-        binding.MaxReceivedMessageSize = 100000000; // 100Mbytes
-        binding.ReaderQuotas.MaxStringContentLength = 100000000; // also 100M chars
-        binding.ReaderQuotas.MaxArrayLength = 100000000; // also 100M elements;
-
-        factory = new ChannelFactory<IGridServer>(binding);
-        server = factory.CreateChannel(new EndpointAddress(address));
-      }
-    }
 
     public void StartEngines() {
@@ -103,5 +84,5 @@
           if (job == null) waitingWaitHandle.WaitOne(); // no jobs waiting
           else {
-            Guid currentEngineGuid = TryStartExecuteEngine(job.Engine);
+            Guid currentEngineGuid = server.BeginExecuteEngine(ZipEngine(job.Engine));
             if (currentEngineGuid == Guid.Empty) {
               // couldn't start the job -> requeue
@@ -141,5 +122,5 @@
           if (job == null) runningWaitHandle.WaitOne(); // no jobs running
           else {
-            byte[] zippedResult = TryEndExecuteEngine(server, job.Guid);
+            byte[] zippedResult = server.TryEndExecuteEngine(job.Guid);
             if (zippedResult != null) { 
               // successful => store result
@@ -149,5 +130,5 @@
             } else {
               // there was a problem -> check the state of the job and restart if necessary
-              JobState jobState = TryGetJobState(server, job.Guid);
+              JobState jobState = server.JobState(job.Guid);
               if (jobState == JobState.Unknown) {
                 job.Restarts++;
@@ -195,42 +176,4 @@
       }
     }
-
-    private Guid TryStartExecuteEngine(IEngine engine) {
-      byte[] zippedEngine = ZipEngine(engine);
-      return SavelyExecute(() => server.BeginExecuteEngine(zippedEngine));
-    }
-
-    private byte[] TryEndExecuteEngine(IGridServer server, Guid engineGuid) {
-      return SavelyExecute(() => {
-        byte[] zippedResult = server.TryEndExecuteEngine(engineGuid);
-        return zippedResult;
-      });
-    }
-
-    private JobState TryGetJobState(IGridServer server, Guid engineGuid) {
-      return SavelyExecute(() => server.JobState(engineGuid));
-    }
-
-    private TResult SavelyExecute<TResult>(Func<TResult> a) {
-      int retries = 0;
-      do {
-        try {
-          lock (connectionLock) {
-            return a();
-          }
-        }
-        catch (TimeoutException) {
-          retries++;
-          Thread.Sleep(TimeSpan.FromSeconds(RETRY_TIMEOUT_SEC));
-        }
-        catch (CommunicationException) {
-          ResetConnection();
-          retries++;
-          Thread.Sleep(TimeSpan.FromSeconds(RETRY_TIMEOUT_SEC));
-        }
-      } while (retries < MAX_CONNECTION_RETRIES);
-      Trace.TraceWarning("Reached max connection retries");
-      return default(TResult);
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.sln
===================================================================
--- /trunk/sources/HeuristicLab.sln	(revision 2057)
+++ /trunk/sources/HeuristicLab.sln	(revision 2058)
@@ -230,4 +230,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Modeling-3.3", "HeuristicLab.Modeling\3.3\HeuristicLab.Modeling-3.3.csproj", "{3A5ACA94-47A7-47D6-B644-2B8A7503FCCC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Grid.HiveBridge-3.2", "HeuristicLab.Grid.HiveBridge\3.2\HeuristicLab.Grid.HiveBridge-3.2.csproj", "{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}"
 EndProject
 Global
@@ -976,4 +978,5 @@
 		{E66D1EAA-525C-4F6D-BD25-DBCAE3750E25}.CEDMA Debug|x64.Build.0 = Debug|x64
 		{E66D1EAA-525C-4F6D-BD25-DBCAE3750E25}.CEDMA Debug|x86.ActiveCfg = Debug|x86
+		{E66D1EAA-525C-4F6D-BD25-DBCAE3750E25}.CEDMA Debug|x86.Build.0 = Debug|x86
 		{E66D1EAA-525C-4F6D-BD25-DBCAE3750E25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E66D1EAA-525C-4F6D-BD25-DBCAE3750E25}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -1181,4 +1184,5 @@
 		{74223A32-C726-4978-BE78-37113A18373C}.CEDMA Debug|x64.Build.0 = Debug|x64
 		{74223A32-C726-4978-BE78-37113A18373C}.CEDMA Debug|x86.ActiveCfg = Debug|x86
+		{74223A32-C726-4978-BE78-37113A18373C}.CEDMA Debug|x86.Build.0 = Debug|x86
 		{74223A32-C726-4978-BE78-37113A18373C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{74223A32-C726-4978-BE78-37113A18373C}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -1216,4 +1220,5 @@
 		{7C20D100-8BEB-433A-9499-F075E2CB9297}.CEDMA Debug|x64.Build.0 = Debug|x64
 		{7C20D100-8BEB-433A-9499-F075E2CB9297}.CEDMA Debug|x86.ActiveCfg = Debug|x86
+		{7C20D100-8BEB-433A-9499-F075E2CB9297}.CEDMA Debug|x86.Build.0 = Debug|x86
 		{7C20D100-8BEB-433A-9499-F075E2CB9297}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{7C20D100-8BEB-433A-9499-F075E2CB9297}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -1251,4 +1256,5 @@
 		{6084CFB5-733F-449D-9F92-2E40D13F0514}.CEDMA Debug|x64.Build.0 = Debug|x64
 		{6084CFB5-733F-449D-9F92-2E40D13F0514}.CEDMA Debug|x86.ActiveCfg = Debug|x86
+		{6084CFB5-733F-449D-9F92-2E40D13F0514}.CEDMA Debug|x86.Build.0 = Debug|x86
 		{6084CFB5-733F-449D-9F92-2E40D13F0514}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6084CFB5-733F-449D-9F92-2E40D13F0514}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -1286,4 +1292,5 @@
 		{545CE756-98D8-423B-AC2E-6E7D70926E5C}.CEDMA Debug|x64.Build.0 = Debug|x64
 		{545CE756-98D8-423B-AC2E-6E7D70926E5C}.CEDMA Debug|x86.ActiveCfg = Debug|x86
+		{545CE756-98D8-423B-AC2E-6E7D70926E5C}.CEDMA Debug|x86.Build.0 = Debug|x86
 		{545CE756-98D8-423B-AC2E-6E7D70926E5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{545CE756-98D8-423B-AC2E-6E7D70926E5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -1842,5 +1849,4 @@
 		{4095C92C-5A4C-44BC-9963-5F384CF5CC3F}.Modeling Debug|x64.Build.0 = Debug|x64
 		{4095C92C-5A4C-44BC-9963-5F384CF5CC3F}.Modeling Debug|x86.ActiveCfg = Debug|x86
-		{4095C92C-5A4C-44BC-9963-5F384CF5CC3F}.Modeling Debug|x86.Build.0 = Debug|x86
 		{4095C92C-5A4C-44BC-9963-5F384CF5CC3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4095C92C-5A4C-44BC-9963-5F384CF5CC3F}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -3343,4 +3349,5 @@
 		{7E18E25A-BCEB-467A-BACC-ABCA73F9D655}.CEDMA Debug|x64.ActiveCfg = Debug|Any CPU
 		{7E18E25A-BCEB-467A-BACC-ABCA73F9D655}.CEDMA Debug|x86.ActiveCfg = Debug|x86
+		{7E18E25A-BCEB-467A-BACC-ABCA73F9D655}.CEDMA Debug|x86.Build.0 = Debug|x86
 		{7E18E25A-BCEB-467A-BACC-ABCA73F9D655}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{7E18E25A-BCEB-467A-BACC-ABCA73F9D655}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -3401,4 +3408,5 @@
 		{80F7FADA-549D-4151-8856-79B620A50DBA}.CEDMA Debug|x64.ActiveCfg = Debug|Any CPU
 		{80F7FADA-549D-4151-8856-79B620A50DBA}.CEDMA Debug|x86.ActiveCfg = Debug|x86
+		{80F7FADA-549D-4151-8856-79B620A50DBA}.CEDMA Debug|x86.Build.0 = Debug|x86
 		{80F7FADA-549D-4151-8856-79B620A50DBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{80F7FADA-549D-4151-8856-79B620A50DBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -3851,4 +3859,29 @@
 		{3A5ACA94-47A7-47D6-B644-2B8A7503FCCC}.Visualization Debug|x86.ActiveCfg = Debug|x86
 		{3A5ACA94-47A7-47D6-B644-2B8A7503FCCC}.Visualization Debug|x86.Build.0 = Debug|x86
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.CEDMA Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.CEDMA Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.CEDMA Debug|x64.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.CEDMA Debug|x86.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Debug|x86.ActiveCfg = Debug|x86
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Debug|x86.Build.0 = Debug|x86
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Modeling Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Modeling Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Modeling Debug|x64.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Modeling Debug|x86.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Release|x64.ActiveCfg = Release|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Release|x86.ActiveCfg = Release|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.v3.2 Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.v3.2 Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.v3.2 Debug|x64.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.v3.2 Debug|x86.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Visualization Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Visualization Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Visualization Debug|x64.ActiveCfg = Debug|Any CPU
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB}.Visualization Debug|x86.ActiveCfg = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
@@ -3934,4 +3967,5 @@
 		{80F7FADA-549D-4151-8856-79B620A50DBA} = {410732DB-725A-4824-896B-C298978343C0}
 		{ABAE70E0-14E3-4588-B6BB-15DF022985C3} = {410732DB-725A-4824-896B-C298978343C0}
+		{DFAC1BEA-6D9D-477F-AC7B-E64977644DDB} = {410732DB-725A-4824-896B-C298978343C0}
 		{A9E282EA-180F-4233-B809-AEDF0787545C} = {78982D7C-D63D-4A3D-AE1F-F58AC007603B}
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71} = {78982D7C-D63D-4A3D-AE1F-F58AC007603B}
Index: /trunk/sources/HeuristicLab/CopyAssemblies.cmd
===================================================================
--- /trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 2057)
+++ /trunk/sources/HeuristicLab/CopyAssemblies.cmd	(revision 2058)
@@ -50,4 +50,5 @@
 copy "%SolutionDir%\HeuristicLab.GP.StructureIdentification.TimeSeries\3.3\%Outdir%\HeuristicLab.GP.StructureIdentification.TimeSeries-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Grid\3.2\%Outdir%\HeuristicLab.Grid-3.2.dll" .\plugins
+copy "%SolutionDir%\HeuristicLab.Grid.HiveBridge\3.2\%Outdir%\HeuristicLab.Grid.HiveBridge-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Hive.Client.Common\3.2\%Outdir%\HeuristicLab.Hive.Client.Common-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Hive.Client.Communication\3.2\%Outdir%\HeuristicLab.Hive.Client.Communication-3.2.dll" .\plugins
