Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/HeuristicLab.Common.Resources-3.2.csproj
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/HeuristicLab.Common.Resources-3.2.csproj	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/HeuristicLab.Common.Resources-3.2.csproj	(revision 2860)
@@ -0,0 +1,392 @@
+﻿<?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>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Common.Resources</RootNamespace>
+    <AssemblyName>HeuristicLab.Common.Resources-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </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>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <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>
+    <None Include="HeuristicLabCommonResourcesPlugin.cs.frame" />
+    <Compile Include="HeuristicLabCommonResourcesPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="VS2008ImageLibrary.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>VS2008ImageLibrary.resx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="Resources\CopyIcon.png" />
+    <None Include="Resources\CutIcon.png" />
+    <None Include="Resources\DeleteFolderIcon.png" />
+    <None Include="Resources\DeleteIcon.png" />
+    <None Include="Resources\FlagBlueIcon.png" />
+    <None Include="Resources\FlagGreenIcon.png" />
+    <None Include="Resources\FlagRedIcon.png" />
+    <None Include="Resources\FormulaEvaluatorIcon.png" />
+    <None Include="Resources\FunctionIcon.png" />
+    <None Include="Resources\HeuristicLab.ico" />
+    <None Include="Resources\HeuristicLab.png" />
+    <None Include="Resources\NewFolderIcon.png" />
+    <None Include="Resources\NewIcon.png" />
+    <None Include="Resources\OpenIcon.png" />
+    <None Include="Resources\PasteIcon.png" />
+    <None Include="Resources\PrintIcon.png" />
+    <None Include="Resources\PrintPreviewIcon.png" />
+    <None Include="Resources\RedoIcon.png" />
+    <None Include="Resources\RefreshDocument.png" />
+    <None Include="Resources\SaveAllIcon.png" />
+    <None Include="Resources\SaveIcon.png" />
+    <None Include="Resources\ShowDetails.png" />
+    <None Include="Resources\ShowLargeIcons.png" />
+    <None Include="Resources\ShowSmallIcons.png" />
+    <None Include="Resources\UndoIcon.png" />
+    <None Include="Resources\WarningIcon.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Resources.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="VS2008ImageLibrary.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>VS2008ImageLibrary.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Method.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Module.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Script.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Assembly.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Class.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Component.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Constant.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Control.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Database.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Delegate.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Document.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Drive.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Enum.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_EnumItem.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Error.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Event.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Exception.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Field.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_File.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Insall.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Interface.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Internet.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Library.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Macro.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Map.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_MapItem.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_MethodOverload.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Namespace.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_NetworkConnections.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Object.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Operator.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Properties.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Structure.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Template.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Timer.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Type.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_TypeDef.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Union.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_User.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_UserAccounts.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_ValueType.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_CommonElements_Actions_Add.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_CommonElements_Actions_Remove.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_CommonElements_Objects_Arrow_Down.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_CommonElements_Objects_Arrow_Up.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Pause.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Play.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Stop.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Restart.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_EditTable.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_OrgChart.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_ProtectForm.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Redo.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Sort.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_SortUp.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Undo.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Windows.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Open.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Save.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_SaveAll.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_NewDocument.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_NewFolder.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Flag_Blue.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Flag_Green.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Flag_Red.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Zoom.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Copy.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Cut.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_FormulaEvaluator.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Function.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Paste.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Print.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_PrintPreview.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Warning.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_RefreshDocument.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Delete.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_DeleteFolder.png" />
+  </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>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\HeuristicLabCommonResourcesPlugin.cs.frame" "%25ProjectDir%25\HeuristicLabCommonResourcesPlugin.cs"</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/HeuristicLabCommonResourcesPlugin.cs.frame
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/HeuristicLabCommonResourcesPlugin.cs.frame	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/HeuristicLabCommonResourcesPlugin.cs.frame	(revision 2860)
@@ -0,0 +1,32 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Communication.Data {
+  [Plugin("HeuristicLab.Common.Resources", "3.2.0.$WCREV$")]
+  [PluginFile("HeuristicLab.Common.Resources-3.2.dll", PluginFileType.Assembly)]
+  public class HeuristicLabCommonResourcesPlugin : PluginBase {
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/Properties/AssemblyInfo.frame
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/Properties/AssemblyInfo.frame	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/Properties/AssemblyInfo.frame	(revision 2860)
@@ -0,0 +1,33 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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.Common.Resources")]
+[assembly: AssemblyDescription("This assembly contains common resources")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2010 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("e477780c-b901-4f5d-80d6-056991e55248")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("3.2.0.0")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/Resources.Designer.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/Resources.Designer.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/Resources.Designer.cs	(revision 2860)
@@ -0,0 +1,245 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.4200
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Common.Resources {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.Common.Resources.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        public static System.Drawing.Bitmap CopyIcon {
+            get {
+                object obj = ResourceManager.GetObject("CopyIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap CutIcon {
+            get {
+                object obj = ResourceManager.GetObject("CutIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap DeleteFolderIcon {
+            get {
+                object obj = ResourceManager.GetObject("DeleteFolderIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap DeleteIcon {
+            get {
+                object obj = ResourceManager.GetObject("DeleteIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap FlagBlueIcon {
+            get {
+                object obj = ResourceManager.GetObject("FlagBlueIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap FlagGreenIcon {
+            get {
+                object obj = ResourceManager.GetObject("FlagGreenIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap FlagRedIcon {
+            get {
+                object obj = ResourceManager.GetObject("FlagRedIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap FormulaEvaluatorIcon {
+            get {
+                object obj = ResourceManager.GetObject("FormulaEvaluatorIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap FunctionIcon {
+            get {
+                object obj = ResourceManager.GetObject("FunctionIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap HeuristicLab {
+            get {
+                object obj = ResourceManager.GetObject("HeuristicLab", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Icon HeuristicLabIcon {
+            get {
+                object obj = ResourceManager.GetObject("HeuristicLabIcon", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap NewFolderIcon {
+            get {
+                object obj = ResourceManager.GetObject("NewFolderIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap NewIcon {
+            get {
+                object obj = ResourceManager.GetObject("NewIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap OpenIcon {
+            get {
+                object obj = ResourceManager.GetObject("OpenIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap PasteIcon {
+            get {
+                object obj = ResourceManager.GetObject("PasteIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap PrintIcon {
+            get {
+                object obj = ResourceManager.GetObject("PrintIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap PrintPreviewIcon {
+            get {
+                object obj = ResourceManager.GetObject("PrintPreviewIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap RedoIcon {
+            get {
+                object obj = ResourceManager.GetObject("RedoIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap RefreshDocument {
+            get {
+                object obj = ResourceManager.GetObject("RefreshDocument", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap SaveAllIcon {
+            get {
+                object obj = ResourceManager.GetObject("SaveAllIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap SaveIcon {
+            get {
+                object obj = ResourceManager.GetObject("SaveIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap ShowDetails {
+            get {
+                object obj = ResourceManager.GetObject("ShowDetails", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap ShowLargeIcons {
+            get {
+                object obj = ResourceManager.GetObject("ShowLargeIcons", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap ShowSmallIcons {
+            get {
+                object obj = ResourceManager.GetObject("ShowSmallIcons", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap UndoIcon {
+            get {
+                object obj = ResourceManager.GetObject("UndoIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap WarningIcon {
+            get {
+                object obj = ResourceManager.GetObject("WarningIcon", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/Resources.resx
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/Resources.resx	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/Resources.resx	(revision 2860)
@@ -0,0 +1,199 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="CopyIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\CopyIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="CutIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\CutIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="DeleteFolderIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\DeleteFolderIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="DeleteIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\DeleteIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="FlagBlueIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\FlagBlueIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="FlagGreenIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\FlagGreenIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="FlagRedIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\FlagRedIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="FormulaEvaluatorIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\FormulaEvaluatorIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="FunctionIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\FunctionIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="HeuristicLab" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\HeuristicLab.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="HeuristicLabIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\HeuristicLab.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="NewFolderIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\NewFolderIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="NewIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\NewIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="OpenIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\OpenIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="PasteIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\PasteIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="PrintIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\PrintIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="PrintPreviewIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\PrintPreviewIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="RedoIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\RedoIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="RefreshDocument" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\RefreshDocument.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="SaveAllIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\SaveAllIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="SaveIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\SaveIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ShowDetails" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\ShowDetails.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ShowLargeIcons" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\ShowLargeIcons.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ShowSmallIcons" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\ShowSmallIcons.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="UndoIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\UndoIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="WarningIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\WarningIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/VS2008ImageLibrary.Designer.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/VS2008ImageLibrary.Designer.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/VS2008ImageLibrary.Designer.cs	(revision 2860)
@@ -0,0 +1,602 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.4200
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Common.Resources {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class VS2008ImageLibrary {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal VS2008ImageLibrary() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.Common.Resources.VS2008ImageLibrary", typeof(VS2008ImageLibrary).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        public static System.Drawing.Bitmap Add {
+            get {
+                object obj = ResourceManager.GetObject("Add", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap ArrowDown {
+            get {
+                object obj = ResourceManager.GetObject("ArrowDown", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap ArrowUp {
+            get {
+                object obj = ResourceManager.GetObject("ArrowUp", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Assembly {
+            get {
+                object obj = ResourceManager.GetObject("Assembly", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Class {
+            get {
+                object obj = ResourceManager.GetObject("Class", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Component {
+            get {
+                object obj = ResourceManager.GetObject("Component", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Constant {
+            get {
+                object obj = ResourceManager.GetObject("Constant", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Control {
+            get {
+                object obj = ResourceManager.GetObject("Control", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Copy {
+            get {
+                object obj = ResourceManager.GetObject("Copy", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Cut {
+            get {
+                object obj = ResourceManager.GetObject("Cut", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Database {
+            get {
+                object obj = ResourceManager.GetObject("Database", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Delegate {
+            get {
+                object obj = ResourceManager.GetObject("Delegate", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Delete {
+            get {
+                object obj = ResourceManager.GetObject("Delete", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap DeleteFolder {
+            get {
+                object obj = ResourceManager.GetObject("DeleteFolder", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Document {
+            get {
+                object obj = ResourceManager.GetObject("Document", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Drive {
+            get {
+                object obj = ResourceManager.GetObject("Drive", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap EditTable {
+            get {
+                object obj = ResourceManager.GetObject("EditTable", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Enum {
+            get {
+                object obj = ResourceManager.GetObject("Enum", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap EnumItem {
+            get {
+                object obj = ResourceManager.GetObject("EnumItem", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Error {
+            get {
+                object obj = ResourceManager.GetObject("Error", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Event {
+            get {
+                object obj = ResourceManager.GetObject("Event", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Exception {
+            get {
+                object obj = ResourceManager.GetObject("Exception", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Field {
+            get {
+                object obj = ResourceManager.GetObject("Field", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap File {
+            get {
+                object obj = ResourceManager.GetObject("File", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap FlagBlue {
+            get {
+                object obj = ResourceManager.GetObject("FlagBlue", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap FlagGreen {
+            get {
+                object obj = ResourceManager.GetObject("FlagGreen", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap FlagRed {
+            get {
+                object obj = ResourceManager.GetObject("FlagRed", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap FormulaEvaluator {
+            get {
+                object obj = ResourceManager.GetObject("FormulaEvaluator", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Function {
+            get {
+                object obj = ResourceManager.GetObject("Function", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Install {
+            get {
+                object obj = ResourceManager.GetObject("Install", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Interface {
+            get {
+                object obj = ResourceManager.GetObject("Interface", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Internet {
+            get {
+                object obj = ResourceManager.GetObject("Internet", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Library {
+            get {
+                object obj = ResourceManager.GetObject("Library", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Macro {
+            get {
+                object obj = ResourceManager.GetObject("Macro", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Map {
+            get {
+                object obj = ResourceManager.GetObject("Map", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap MapItem {
+            get {
+                object obj = ResourceManager.GetObject("MapItem", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Method {
+            get {
+                object obj = ResourceManager.GetObject("Method", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap MethodOverload {
+            get {
+                object obj = ResourceManager.GetObject("MethodOverload", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Module {
+            get {
+                object obj = ResourceManager.GetObject("Module", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Namespace {
+            get {
+                object obj = ResourceManager.GetObject("Namespace", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap NetworkConnections {
+            get {
+                object obj = ResourceManager.GetObject("NetworkConnections", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap NewDocument {
+            get {
+                object obj = ResourceManager.GetObject("NewDocument", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap NewFolder {
+            get {
+                object obj = ResourceManager.GetObject("NewFolder", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Object {
+            get {
+                object obj = ResourceManager.GetObject("Object", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Open {
+            get {
+                object obj = ResourceManager.GetObject("Open", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Operator {
+            get {
+                object obj = ResourceManager.GetObject("Operator", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap OrgChart {
+            get {
+                object obj = ResourceManager.GetObject("OrgChart", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Paste {
+            get {
+                object obj = ResourceManager.GetObject("Paste", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Pause {
+            get {
+                object obj = ResourceManager.GetObject("Pause", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Play {
+            get {
+                object obj = ResourceManager.GetObject("Play", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Print {
+            get {
+                object obj = ResourceManager.GetObject("Print", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap PrintPreview {
+            get {
+                object obj = ResourceManager.GetObject("PrintPreview", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Properties {
+            get {
+                object obj = ResourceManager.GetObject("Properties", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap ProtectForm {
+            get {
+                object obj = ResourceManager.GetObject("ProtectForm", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Redo {
+            get {
+                object obj = ResourceManager.GetObject("Redo", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap RefreshDocument {
+            get {
+                object obj = ResourceManager.GetObject("RefreshDocument", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Remove {
+            get {
+                object obj = ResourceManager.GetObject("Remove", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Restart {
+            get {
+                object obj = ResourceManager.GetObject("Restart", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Save {
+            get {
+                object obj = ResourceManager.GetObject("Save", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap SaveAll {
+            get {
+                object obj = ResourceManager.GetObject("SaveAll", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Script {
+            get {
+                object obj = ResourceManager.GetObject("Script", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Sort {
+            get {
+                object obj = ResourceManager.GetObject("Sort", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap SortUp {
+            get {
+                object obj = ResourceManager.GetObject("SortUp", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Stop {
+            get {
+                object obj = ResourceManager.GetObject("Stop", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Structure {
+            get {
+                object obj = ResourceManager.GetObject("Structure", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Template {
+            get {
+                object obj = ResourceManager.GetObject("Template", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Timer {
+            get {
+                object obj = ResourceManager.GetObject("Timer", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Type {
+            get {
+                object obj = ResourceManager.GetObject("Type", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap TypeDef {
+            get {
+                object obj = ResourceManager.GetObject("TypeDef", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Undo {
+            get {
+                object obj = ResourceManager.GetObject("Undo", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Union {
+            get {
+                object obj = ResourceManager.GetObject("Union", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap User {
+            get {
+                object obj = ResourceManager.GetObject("User", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap UserAccounts {
+            get {
+                object obj = ResourceManager.GetObject("UserAccounts", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap ValueType {
+            get {
+                object obj = ResourceManager.GetObject("ValueType", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Warning {
+            get {
+                object obj = ResourceManager.GetObject("Warning", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Windows {
+            get {
+                object obj = ResourceManager.GetObject("Windows", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap Zoom {
+            get {
+                object obj = ResourceManager.GetObject("Zoom", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/VS2008ImageLibrary.resx
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/VS2008ImageLibrary.resx	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common.Resources/3.2/VS2008ImageLibrary.resx	(revision 2860)
@@ -0,0 +1,352 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="Add" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_CommonElements_Actions_Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ArrowDown" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_CommonElements_Objects_Arrow_Down.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ArrowUp" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_CommonElements_Objects_Arrow_Up.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Assembly" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Assembly.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Class" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Class.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Component" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Component.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Constant" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Constant.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Control" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Control.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Cut" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Cut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Database" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Database.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Delegate" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Delegate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="DeleteFolder" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_DeleteFolder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Document" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Document.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Drive" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Drive.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="EditTable" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_EditTable.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Enum" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Enum.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="EnumItem" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_EnumItem.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Error" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Event" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Event.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Exception" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Exception.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Field" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Field.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="File" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_File.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="FlagBlue" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Flag_Blue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="FlagGreen" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Flag_Green.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="FlagRed" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Flag_Red.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="FormulaEvaluator" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_FormulaEvaluator.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Function" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Function.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Install" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Insall.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Interface" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Interface.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Internet" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Internet.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Library" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Library.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Macro" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Macro.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Map" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Map.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="MapItem" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_MapItem.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Method" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Method.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="MethodOverload" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_MethodOverload.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Module" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Module.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Namespace" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Namespace.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="NetworkConnections" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_NetworkConnections.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="NewDocument" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_NewDocument.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="NewFolder" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_NewFolder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Object" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Object.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Open" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Operator" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Operator.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="OrgChart" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_OrgChart.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Paste" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Pause" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Play" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Print" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Print.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="PrintPreview" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_PrintPreview.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Properties" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Properties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ProtectForm" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_ProtectForm.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Redo" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="RefreshDocument" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_RefreshDocument.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Remove" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_CommonElements_Actions_Remove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Restart" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Restart.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Save" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="SaveAll" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_SaveAll.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Script" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Script.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Sort" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Sort.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="SortUp" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_SortUp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Stop" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Structure" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Structure.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Template" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Template.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Timer" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Timer.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Type" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Type.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="TypeDef" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_TypeDef.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Undo" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Union" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_Union.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="User" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_User.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="UserAccounts" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_UserAccounts.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ValueType" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Objects_ValueType.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Warning" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Warning.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Windows" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Windows.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Zoom" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\VS2008ImageLibrary\VS2008ImageLibrary_Actions_Zoom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/CancelEventArgs.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/CancelEventArgs.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/CancelEventArgs.cs	(revision 2860)
@@ -0,0 +1,60 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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 System.ComponentModel;
+
+namespace HeuristicLab.Common {
+  public class CancelEventArgs<T> : CancelEventArgs {
+    private T myValue;
+    public T Value {
+      get { return myValue; }
+    }
+
+    public CancelEventArgs(T value)
+      : base() {
+      myValue = value;
+    }
+    public CancelEventArgs(T value, bool cancel)
+      : base(cancel) {
+      myValue = value;
+    }
+  }
+
+  public class CancelEventArgs<T, U> : CancelEventArgs<T> {
+    private U myValue2;
+    public U Value2 {
+      get { return myValue2; }
+    }
+
+    public CancelEventArgs(T value, U value2)
+      : base(value) {
+      myValue2 = value2;
+    }
+    public CancelEventArgs(T value, U value2, bool cancel)
+      : base(value, cancel) {
+      myValue2 = value2;
+    }
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/DoubleExtensions.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/DoubleExtensions.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/DoubleExtensions.cs	(revision 2860)
@@ -0,0 +1,29 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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;
+namespace HeuristicLab.Common {
+  public static class DoubleExtensions {
+    public static bool IsAlmost(this double x, double y) {
+      return Math.Abs(x - y) < 1.0E-12;
+    }
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/EnumerableEventArgs.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/EnumerableEventArgs.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/EnumerableEventArgs.cs	(revision 2860)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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;
+
+namespace HeuristicLab.Common {
+  [Obsolete("Use generic event args EventArgs<T> instead of EnumberableEventArgs<T>", false)]
+  public class EnumerableEventArgs<T> : EventArgs {
+    public EnumerableEventArgs(IEnumerable<T> data) {
+      this.data = data;
+    }
+
+    private IEnumerable<T> data;
+    public IEnumerable<T> Data {
+      get { return data; }
+    }
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/EventArgs.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/EventArgs.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/EventArgs.cs	(revision 2860)
@@ -0,0 +1,47 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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;
+
+namespace HeuristicLab.Common {
+  public class EventArgs<T> : EventArgs {
+    private T myValue;
+    public T Value {
+      get { return myValue; }
+    }
+
+    public EventArgs(T value) {
+      myValue = value;
+    }
+  }
+
+  public class EventArgs<T, U> : EventArgs<T> {
+    private U myValue2;
+    public U Value2 {
+      get { return myValue2; }
+    }
+
+    public EventArgs(T value, U value2)
+      : base(value) {
+      myValue2 = value2;
+    }
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/HeuristicLab.Common-3.2.csproj
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/HeuristicLab.Common-3.2.csproj	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/HeuristicLab.Common-3.2.csproj	(revision 2860)
@@ -0,0 +1,127 @@
+﻿<?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>{1FC004FC-59AF-4249-B1B6-FF25873A20E4}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Common</RootNamespace>
+    <AssemblyName>HeuristicLab.Common-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </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>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</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" />
+    <Reference Include="WindowsBase">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="CancelEventArgs.cs" />
+    <None Include="HeuristicLabCommonPlugin.cs.frame" />
+    <Compile Include="ReferenceEqualityComparer.cs" />
+    <Compile Include="TypeExtensions.cs" />
+    <Compile Include="ObservableList.cs" />
+    <Compile Include="DoubleExtensions.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="EnumerableEventArgs.cs" />
+    <Compile Include="EventArgs.cs" />
+    <Compile Include="HeuristicLabCommonPlugin.cs" />
+    <Compile Include="NotificationDictionary.cs" />
+    <Compile Include="ObservableCollection.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Properties\AssemblyInfo.frame" />
+    <None Include="HeuristicLab.snk" />
+  </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>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+SubWCRev "%25ProjectDir%25\" "%25ProjectDir%25\HeuristicLabCommonPlugin.cs.frame" "%25ProjectDir%25\HeuristicLabCommonPlugin.cs"</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/HeuristicLabCommonPlugin.cs.frame
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/HeuristicLabCommonPlugin.cs.frame	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/HeuristicLabCommonPlugin.cs.frame	(revision 2860)
@@ -0,0 +1,35 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Common {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Common plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Common", "3.2.0.$WCREV$")]
+  [PluginFile("HeuristicLab.Common-3.2.dll", PluginFileType.Assembly)]
+  public class HeuristicLabCommonPlugin : PluginBase {
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/NotificationDictionary.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/NotificationDictionary.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/NotificationDictionary.cs	(revision 2860)
@@ -0,0 +1,179 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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 System.Xml;
+using System.Collections;
+
+namespace HeuristicLab.Common {
+  [Obsolete("Use collections of the HeuristicLab.Collections plugin instead", false)]
+  public class NotificationDictionary<TKey, TValue> : IDictionary<TKey, TValue> {
+    
+    public NotificationDictionary() {
+      this.myDictionary = new Dictionary<TKey, TValue>(); 
+    }
+
+    #region Event Handler
+
+    public event EventHandler BeforeInsertEvent;
+    public event EventHandler AfterInsertEvent;
+    public event EventHandler BeforeRemoveEvent;
+    public event EventHandler AfterRemoveEvent;
+    public event EventHandler ChangeEvent;
+    public event EventHandler ClearEvent;
+
+    private Dictionary<TKey, TValue> myDictionary; 
+
+    protected virtual void OnBeforeInsert() {
+      if (BeforeInsertEvent != null)
+        BeforeInsertEvent(this, EventArgs.Empty);
+    }
+
+    protected virtual void OnAfterInsert() {
+      if (AfterInsertEvent != null)
+        AfterInsertEvent(this, EventArgs.Empty);
+    }
+
+    protected virtual void OnBeforeRemove() {
+      if (BeforeRemoveEvent != null)
+        BeforeRemoveEvent(this, EventArgs.Empty);
+    }
+
+    protected virtual void OnAfterRemove() {
+      if (AfterRemoveEvent != null)
+        AfterRemoveEvent(this, EventArgs.Empty);
+    }
+
+    protected virtual void OnChange() {
+      if (ChangeEvent != null)
+        ChangeEvent(this, EventArgs.Empty);
+    }
+
+    protected virtual void OnClear() {
+      if (ClearEvent != null)
+        ClearEvent(this, EventArgs.Empty);
+    }
+
+    #endregion
+
+    #region IDictionary<TKey,TValue> Members
+
+    public void Add(TKey key, TValue value) {
+      OnBeforeInsert(); 
+      myDictionary.Add(key, value);
+      OnAfterInsert();
+    }
+
+    public bool ContainsKey(TKey key) {
+      return myDictionary.ContainsKey(key);
+    }
+
+    public ICollection<TKey> Keys {
+      get { return myDictionary.Keys; }
+    }
+
+    public bool Remove(TKey key) {
+      OnBeforeRemove(); 
+      bool returnVal = myDictionary.Remove(key);
+      OnAfterRemove();
+      return returnVal;
+    }
+
+    public bool TryGetValue(TKey key, out TValue value) {
+      return TryGetValue(key, out value); 
+    }
+
+    public ICollection<TValue> Values {
+      get { return myDictionary.Values; }
+    }
+
+    public TValue this[TKey key] {
+      get {
+        return myDictionary[key];
+      }
+      set {
+        if (!value.Equals(myDictionary[key])) {
+          myDictionary[key] = value;
+          OnChange(); 
+        }
+      }
+    }
+
+    #endregion
+
+    #region ICollection<KeyValuePair<TKey,TValue>> Members
+
+    public void Add(KeyValuePair<TKey, TValue> item) {
+      OnBeforeInsert();
+      myDictionary.Add(item.Key, item.Value);
+      OnAfterInsert();
+    }
+
+    public void Clear() {
+      myDictionary.Clear();
+      OnClear(); 
+    }
+
+    public bool Contains(KeyValuePair<TKey, TValue> item) {
+      return myDictionary.Contains(item); 
+    }
+
+    public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex) {
+      ((IDictionary<TKey, TValue>)myDictionary).CopyTo(array, arrayIndex); 
+    }
+
+    public int Count {
+      get { return myDictionary.Count; }
+    }
+
+    public bool IsReadOnly {
+      get { return false; }
+    }
+
+    public bool Remove(KeyValuePair<TKey, TValue> item) {
+      OnBeforeRemove(); 
+      bool returnVal = myDictionary.Remove(item.Key);
+      OnAfterRemove();
+      return returnVal;
+    }
+
+    #endregion
+
+    #region IEnumerable<KeyValuePair<TKey,TValue>> Members
+
+    public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator() {
+      return myDictionary.GetEnumerator(); 
+    }
+
+    #endregion
+
+    #region IEnumerable Members
+
+    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
+      return myDictionary.GetEnumerator(); 
+    }
+
+    #endregion
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/ObservableCollection.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/ObservableCollection.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/ObservableCollection.cs	(revision 2860)
@@ -0,0 +1,132 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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 System.Collections.Specialized;
+
+namespace HeuristicLab.Common {
+  [Obsolete("Use collections of the HeuristicLab.Collections plugin instead", false)]
+  public class ObservableCollection<T> : ICollection<T>, INotifyCollectionChanged {
+    protected List<T> list;
+
+    public ObservableCollection() {
+      list = new List<T>();
+    }
+
+    #region Events
+    public event NotifyCollectionChangedEventHandler CollectionChanged;
+
+    protected void FireCollectionChanged(NotifyCollectionChangedEventArgs e) {
+      if (CollectionChanged != null) {
+        CollectionChanged(this, e);
+      }
+    }
+
+    protected virtual void FireCollectionCleared() {
+        NotifyCollectionChangedEventArgs e = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset);
+        FireCollectionChanged( e);
+    }
+
+    protected virtual void FireItemsAdded(IEnumerable<T> addedItems, int index) {
+        NotifyCollectionChangedEventArgs e = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, addedItems.ToList(), index);
+        FireCollectionChanged(e);
+    }
+
+    protected virtual void FireItemsRemoved(IEnumerable<T> removedItems) {
+        NotifyCollectionChangedEventArgs e = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, removedItems.ToList());
+        FireCollectionChanged(e);
+    }
+    #endregion
+
+    #region ICollection<T> Members
+    public void Add(T item) {
+      int index = this.list.Count - 1;
+      this.list.Add(item);
+      FireItemsAdded(new List<T> { item }, index);
+    }
+
+    public void AddRange(IEnumerable<T> items) {
+      int index = this.list.Count - 1;
+      this.list.AddRange(items);
+      FireItemsAdded(items, index);
+    }
+
+    public void Clear() {
+      IEnumerable<T> temp = this.list.ToArray<T>();
+      this.list.Clear();
+      FireItemsRemoved(temp);
+      FireCollectionCleared();
+    }
+
+    public bool Contains(T item) {
+      return this.list.Contains(item);
+    }
+
+    public void CopyTo(T[] array, int arrayIndex) {
+      this.list.CopyTo(array, arrayIndex);
+    }
+
+    public int Count {
+      get { return this.list.Count; }
+    }
+
+    public bool IsReadOnly {
+      get { return false; }
+    }
+
+    public bool Remove(T item) {
+      bool ret = this.list.Remove(item);
+      if (ret)
+        FireItemsRemoved(new List<T> { item });
+      return ret;
+    }
+
+    public void RemoveRange(IEnumerable<T> items) {
+      bool ret = false;
+      foreach (T item in items)
+        ret |= list.Remove(item);
+      if (ret)
+        FireItemsRemoved(items);
+    }
+
+    #endregion
+
+    #region IEnumerable<T> Members
+
+    public IEnumerator<T> GetEnumerator() {
+      return list.GetEnumerator();
+    }
+
+    #endregion
+
+    #region IEnumerable Members
+
+    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
+      return list.GetEnumerator();
+    }
+
+    #endregion
+
+
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/ObservableList.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/ObservableList.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/ObservableList.cs	(revision 2860)
@@ -0,0 +1,75 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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 System.Collections.Specialized;
+
+namespace HeuristicLab.Common {
+  [Obsolete("Use collections of the HeuristicLab.Collections plugin instead", false)]
+  public class ObservableList<T> : ObservableCollection<T>, IList<T> {
+
+    public ObservableList()
+      : base() {
+    }
+
+    #region IList<T> Members
+    public int IndexOf(T item) {
+      return list.IndexOf(item);
+    }
+
+    public void Insert(int index, T item) {
+      list.Insert(index, item);
+      FireItemsInserted(new List<T>() { item }, index);
+    }
+
+    public void RemoveAt(int index) {
+      T itemRemoved = list[index];
+      list.RemoveAt(index);
+      FireItemsRemoved(new List<T>() { itemRemoved });
+    }
+
+    public T this[int index] {
+      get {
+        return list[index];
+      }
+      set {
+        T oldItem = list[index];
+        list[index] = value;
+        FireItemsReplaced(value, oldItem, index);
+      }
+    }
+    #endregion
+
+    #region events
+    protected virtual void FireItemsInserted(IEnumerable<T> insertedItems, int index) {
+      NotifyCollectionChangedEventArgs e = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, insertedItems.ToList(), index);
+      FireCollectionChanged(e);
+    }
+
+    protected virtual void FireItemsReplaced(T newItem, T oldItem, int index) {
+      NotifyCollectionChangedEventArgs e = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, newItem, oldItem);
+      FireCollectionChanged(e);
+    }
+    #endregion
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/Properties/AssemblyInfo.frame
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/Properties/AssemblyInfo.frame	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/Properties/AssemblyInfo.frame	(revision 2860)
@@ -0,0 +1,56 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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;
+
+// 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.Common")]
+[assembly: AssemblyDescription("Auxiliary HeuristicLab classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2010 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("f1962e16-e911-49fa-a685-1bb0a2a86526")]
+
+// 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 Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.2.0.0")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/ReferenceEqualityComparer.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/ReferenceEqualityComparer.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/ReferenceEqualityComparer.cs	(revision 2860)
@@ -0,0 +1,37 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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;
+
+namespace HeuristicLab.Common {
+  public class ReferenceEqualityComparer<T> : IEqualityComparer<T> where T : class {
+    bool IEqualityComparer<T>.Equals(T x, T y) {
+      return object.ReferenceEquals(x, y);
+    }
+
+    int IEqualityComparer<T>.GetHashCode(T obj) {
+      if (obj == null) return 0;
+      return obj.GetHashCode();
+    }
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/TypeExtensions.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/TypeExtensions.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Common/3.2/TypeExtensions.cs	(revision 2860)
@@ -0,0 +1,48 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Text;
+
+namespace HeuristicLab.Common {
+  public static class TypeExtensions {
+    public static string GetPrettyName(this Type x) {
+      return x.GetPrettyName(false);
+    }
+    public static string GetPrettyName(this Type x, bool includeNamespace) {
+      StringBuilder sb = new StringBuilder();
+      if ((includeNamespace) && !string.IsNullOrEmpty(x.Namespace))
+        sb.Append(x.Namespace).Append(".");
+      sb.Append(x.Name);
+      if (x.IsGenericType) {
+        Type[] genericParams = x.GetGenericArguments();
+        sb.Remove(sb.ToString().LastIndexOf('`'), genericParams.Length.ToString().Length + 1);
+        sb.Append("<");
+        for (int i = 0; i < genericParams.Length; i++) {
+          if (i > 0) sb.Append(", ");
+          sb.Append(genericParams[i].GetPrettyName(includeNamespace));
+        }
+        sb.Append(">");
+      }
+      return sb.ToString();
+    }
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/HeuristicLab.DeploymentService.AdminClient.csproj
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/HeuristicLab.DeploymentService.AdminClient.csproj	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/HeuristicLab.DeploymentService.AdminClient.csproj	(revision 2860)
@@ -74,9 +74,9 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="ServerPluginView.cs">
+    <Compile Include="PluginComparisonView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ServerPluginView.Designer.cs">
-      <DependentUpon>ServerPluginView.cs</DependentUpon>
+    <Compile Include="PluginComparisonView.Designer.cs">
+      <DependentUpon>PluginComparisonView.cs</DependentUpon>
     </Compile>
     <Compile Include="PluginView.cs">
@@ -91,10 +91,4 @@
     <Compile Include="LicenseView.Designer.cs">
       <DependentUpon>LicenseView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="LocalPluginView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="LocalPluginView.Designer.cs">
-      <DependentUpon>LocalPluginView.cs</DependentUpon>
     </Compile>
     <Compile Include="ProductEditor.cs">
@@ -121,4 +115,8 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Common.Resources\3.2\HeuristicLab.Common.Resources-3.2.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.2</Name>
+    </ProjectReference>
     <ProjectReference Include="..\HeuristicLab.MainForm.WindowsForms\3.2\HeuristicLab.MainForm.WindowsForms-3.2.csproj">
       <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
@@ -140,6 +138,9 @@
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="ServerPluginView.resx">
-      <DependentUpon>ServerPluginView.cs</DependentUpon>
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PluginComparisonView.resx">
+      <DependentUpon>PluginComparisonView.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="PluginView.resx">
@@ -148,7 +149,4 @@
     <EmbeddedResource Include="LicenseView.resx">
       <DependentUpon>LicenseView.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="LocalPluginView.resx">
-      <DependentUpon>LocalPluginView.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="ProductEditor.resx">
Index: anches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/LocalPluginView.Designer.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/LocalPluginView.Designer.cs	(revision 2859)
+++ 	(revision )
@@ -1,125 +1,0 @@
-﻿namespace HeuristicLab.DeploymentService.AdminClient {
-  partial class LocalPluginView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.filesListView = new System.Windows.Forms.ListView();
-      this.fileNameHeader = new System.Windows.Forms.ColumnHeader();
-      this.fileTypeHeader = new System.Windows.Forms.ColumnHeader();
-      this.filesGroupBox = new System.Windows.Forms.GroupBox();
-      this.dependenciesGroupBox.SuspendLayout();
-      this.filesGroupBox.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // nameTextBox
-      // 
-      this.nameTextBox.Size = new System.Drawing.Size(211, 20);
-      // 
-      // versionTextBox
-      // 
-      this.versionTextBox.Size = new System.Drawing.Size(211, 20);
-      // 
-      // contactTextBox
-      // 
-      this.contactTextBox.Size = new System.Drawing.Size(211, 20);
-      // 
-      // licenseButton
-      // 
-      this.licenseButton.Location = new System.Drawing.Point(3, 398);
-      this.licenseButton.Click += new System.EventHandler(this.licenseButton_Click);
-      // 
-      // dependenciesGroupBox
-      // 
-      this.dependenciesGroupBox.Location = new System.Drawing.Point(6, 255);
-      this.dependenciesGroupBox.Size = new System.Drawing.Size(276, 137);
-      // 
-      // dependenciesListView
-      // 
-      this.dependenciesListView.Size = new System.Drawing.Size(270, 118);
-      // 
-      // filesListView
-      // 
-      this.filesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.fileNameHeader,
-            this.fileTypeHeader});
-      this.filesListView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.filesListView.Location = new System.Drawing.Point(3, 16);
-      this.filesListView.Name = "filesListView";
-      this.filesListView.Size = new System.Drawing.Size(273, 149);
-      this.filesListView.TabIndex = 0;
-      this.filesListView.UseCompatibleStateImageBehavior = false;
-      this.filesListView.View = System.Windows.Forms.View.Details;
-      // 
-      // fileNameHeader
-      // 
-      this.fileNameHeader.Text = "Name";
-      this.fileNameHeader.Width = 200;
-      // 
-      // fileTypeHeader
-      // 
-      this.fileTypeHeader.Text = "Type";
-      this.fileTypeHeader.Width = 100;
-      // 
-      // filesGroupBox
-      // 
-      this.filesGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.filesGroupBox.Controls.Add(this.filesListView);
-      this.filesGroupBox.Location = new System.Drawing.Point(6, 81);
-      this.filesGroupBox.Name = "filesGroupBox";
-      this.filesGroupBox.Size = new System.Drawing.Size(279, 168);
-      this.filesGroupBox.TabIndex = 11;
-      this.filesGroupBox.TabStop = false;
-      this.filesGroupBox.Text = "Files";
-      // 
-      // LocalPluginView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.filesGroupBox);
-      this.Name = "LocalPluginView";
-      this.Size = new System.Drawing.Size(288, 424);
-      this.Controls.SetChildIndex(this.filesGroupBox, 0);
-      this.Controls.SetChildIndex(this.dependenciesGroupBox, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.versionLabel, 0);
-      this.Controls.SetChildIndex(this.versionTextBox, 0);
-      this.Controls.SetChildIndex(this.contactInfoLabel, 0);
-      this.Controls.SetChildIndex(this.contactTextBox, 0);
-      this.Controls.SetChildIndex(this.licenseButton, 0);
-      this.dependenciesGroupBox.ResumeLayout(false);
-      this.filesGroupBox.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.ListView filesListView;
-    private System.Windows.Forms.ColumnHeader fileNameHeader;
-    private System.Windows.Forms.ColumnHeader fileTypeHeader;
-    private System.Windows.Forms.GroupBox filesGroupBox;
-  }
-}
Index: anches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/LocalPluginView.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/LocalPluginView.cs	(revision 2859)
+++ 	(revision )
@@ -1,54 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.DeploymentService.AdminClient {
-  public partial class LocalPluginView : PluginView {
-    private IPluginDescription plugin;
-
-    public LocalPluginView() {
-      InitializeComponent();
-    }
-
-    public LocalPluginView(IPluginDescription plugin) {
-      InitializeComponent();
-      this.plugin = plugin;
-      UpdateControls();
-    }
-
-    public void UpdateControls() {
-      nameTextBox.Text = plugin.Name;
-      versionTextBox.Text = plugin.Version.ToString();
-      contactTextBox.Text = CombineStrings(plugin.ContactName, plugin.ContactEmail);
-      foreach (IPluginDescription dependency in plugin.Dependencies) {
-        dependenciesListView.Items.Add(new ListViewItem(new string[] { dependency.Name, dependency.Version.ToString() }));
-      }
-      foreach (var file in plugin.Files) {
-        filesListView.Items.Add(new ListViewItem(new string[] { file.Name, file.Type.ToString() }));
-      }
-      licenseButton.Enabled = !string.IsNullOrEmpty(plugin.LicenseText);
-    }
-
-    private string CombineStrings(string a, string b) {
-      if (string.IsNullOrEmpty(a))
-        // a is empty
-        if (!string.IsNullOrEmpty(b)) return CombineStrings(b, string.Empty);
-        else return string.Empty;
-      // a is not empty
-      else if (string.IsNullOrEmpty(b)) return a;
-      // and b are not empty
-      else return a + ", " + b;
-    }
-
-    private void licenseButton_Click(object sender, EventArgs e) {
-      LicenseView view = new LicenseView(plugin.Name, plugin.Version.ToString(), plugin.LicenseText);
-      view.Show();
-    }
-  }
-}
Index: anches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/LocalPluginView.resx
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/LocalPluginView.resx	(revision 2859)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/MainForm.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/MainForm.cs	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/MainForm.cs	(revision 2860)
@@ -7,5 +7,10 @@
 namespace HeuristicLab.DeploymentService.AdminClient {
   class MainForm : DockingMainForm {
-    public MainForm(Type type) : base(type) { }
+    private System.Windows.Forms.ProgressBar progressBar;
+
+    public MainForm(Type type)
+      : base(type) {
+      InitializeComponent();
+    }
 
     protected override void OnInitialized(EventArgs e) {
@@ -13,4 +18,37 @@
       (new PluginListView()).Show();
     }
+
+    private void InitializeComponent() {
+      this.progressBar = new System.Windows.Forms.ProgressBar();
+      this.SuspendLayout();
+      // 
+      // progressBar
+      // 
+      this.progressBar.Location = new System.Drawing.Point(0, 528);
+      this.progressBar.Name = "progressBar";
+      this.progressBar.Size = new System.Drawing.Size(129, 23);
+      this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
+      this.progressBar.TabIndex = 7;
+      this.progressBar.Visible = false;
+      // 
+      // MainForm
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.ClientSize = new System.Drawing.Size(770, 550);
+      this.Controls.Add(this.progressBar);
+      this.Name = "MainForm";
+      this.Controls.SetChildIndex(this.progressBar, 0);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    public void ShowProgressBar() {
+      progressBar.Visible = true;
+    }
+
+    public void HideProgressBar() {
+      progressBar.Visible = false;
+    }
   }
 }
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/MainForm.resx
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/MainForm.resx	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/MainForm.resx	(revision 2860)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginComparisonView.Designer.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginComparisonView.Designer.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginComparisonView.Designer.cs	(revision 2860)
@@ -0,0 +1,58 @@
+﻿namespace HeuristicLab.DeploymentService.AdminClient {
+  partial class PluginComparisonView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
+      this.SuspendLayout();
+      // 
+      // tableLayoutPanel
+      // 
+      this.tableLayoutPanel.ColumnCount = 2;
+      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+      this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tableLayoutPanel.Location = new System.Drawing.Point(0, 0);
+      this.tableLayoutPanel.Name = "tableLayoutPanel";
+      this.tableLayoutPanel.RowCount = 1;
+      this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+      this.tableLayoutPanel.Size = new System.Drawing.Size(539, 505);
+      this.tableLayoutPanel.TabIndex = 0;
+      // 
+      // PluginComparisonView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tableLayoutPanel);
+      this.Name = "PluginComparisonView";
+      this.Size = new System.Drawing.Size(539, 505);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
+
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginComparisonView.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginComparisonView.cs	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginComparisonView.cs	(revision 2860)
@@ -0,0 +1,40 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.PluginInfrastructure;
+using PluginDeploymentService = HeuristicLab.PluginInfrastructure.Advanced.DeploymentService;
+using HeuristicLab.PluginInfrastructure.Manager;
+using System.ServiceModel;
+using ICSharpCode.SharpZipLib.Zip;
+using System.IO;
+
+namespace HeuristicLab.DeploymentService.AdminClient {
+  public partial class PluginComparisonView : HeuristicLab.MainForm.WindowsForms.View {
+
+    public PluginComparisonView(IPluginDescription localPlugin, IPluginDescription serverPlugin) {
+      InitializeComponent();
+      Caption = "Compare plugins";
+
+      var localPluginView = new PluginView(localPlugin);
+      localPluginView.Dock = DockStyle.Fill;
+      tableLayoutPanel.Controls.Add(localPluginView, 0, 0);
+      if (serverPlugin != null) {
+        var serverPluginView = new PluginView(serverPlugin);
+        serverPluginView.Dock = DockStyle.Fill;
+        tableLayoutPanel.Controls.Add(serverPluginView, 1, 0);
+      } else {
+        Label emptyLabel = new Label();
+        emptyLabel.Text = "No matching server plugin";
+        emptyLabel.TextAlign = ContentAlignment.MiddleCenter;
+        emptyLabel.Dock = DockStyle.Fill;
+        tableLayoutPanel.Controls.Add(emptyLabel, 1, 0);
+      }
+    }
+  }
+}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginComparisonView.resx
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginComparisonView.resx	(revision 2860)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginComparisonView.resx	(revision 2860)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginListView.Designer.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginListView.Designer.cs	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginListView.Designer.cs	(revision 2860)
@@ -24,29 +24,24 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.listView = new System.Windows.Forms.ListView();
       this.nameHeader = new System.Windows.Forms.ColumnHeader();
       this.localVersion = new System.Windows.Forms.ColumnHeader();
-      this.uploadButton = new System.Windows.Forms.Button();
-      this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.label1 = new System.Windows.Forms.Label();
+      this.serverVersion = new System.Windows.Forms.ColumnHeader();
+      this.imageList = new System.Windows.Forms.ImageList(this.components);
+      this.serverUrlLabel = new System.Windows.Forms.Label();
       this.serverUrlTextBox = new System.Windows.Forms.TextBox();
       this.connectButton = new System.Windows.Forms.Button();
-      this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
-      this.serverPluginDetailsGroupBox = new System.Windows.Forms.GroupBox();
-      this.localPluginDetailsGroupBox = new System.Windows.Forms.GroupBox();
-      this.localPluginDetailsPanel = new System.Windows.Forms.Panel();
-      this.serverVersion = new System.Windows.Forms.ColumnHeader();
-      this.splitContainer.Panel1.SuspendLayout();
-      this.splitContainer.Panel2.SuspendLayout();
-      this.splitContainer.SuspendLayout();
-      this.tableLayoutPanel.SuspendLayout();
-      this.localPluginDetailsGroupBox.SuspendLayout();
+      this.refreshButton = new System.Windows.Forms.Button();
+      this.uploadButton = new System.Windows.Forms.Button();
       this.SuspendLayout();
       // 
       // listView
       // 
+      this.listView.Activation = System.Windows.Forms.ItemActivation.TwoClick;
       this.listView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
+      this.listView.CheckBoxes = true;
       this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
             this.nameHeader,
@@ -54,13 +49,16 @@
             this.serverVersion});
       this.listView.Enabled = false;
-      this.listView.Location = new System.Drawing.Point(3, 32);
-      this.listView.MultiSelect = false;
+      this.listView.FullRowSelect = true;
+      this.listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+      this.listView.Location = new System.Drawing.Point(0, 30);
       this.listView.Name = "listView";
       this.listView.ShowGroups = false;
-      this.listView.Size = new System.Drawing.Size(392, 459);
+      this.listView.Size = new System.Drawing.Size(536, 446);
+      this.listView.StateImageList = this.imageList;
       this.listView.TabIndex = 0;
       this.listView.UseCompatibleStateImageBehavior = false;
       this.listView.View = System.Windows.Forms.View.Details;
-      this.listView.SelectedIndexChanged += new System.EventHandler(this.listView_SelectedIndexChanged);
+      this.listView.ItemActivate += new System.EventHandler(this.listView_ItemActivate);
+      this.listView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listView_ItemChecked);
       // 
       // nameHeader
@@ -74,55 +72,34 @@
       this.localVersion.Width = 100;
       // 
-      // uploadButton
+      // serverVersion
       // 
-      this.uploadButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.uploadButton.Enabled = false;
-      this.uploadButton.Location = new System.Drawing.Point(6, 459);
-      this.uploadButton.Name = "uploadButton";
-      this.uploadButton.Size = new System.Drawing.Size(110, 23);
-      this.uploadButton.TabIndex = 2;
-      this.uploadButton.Text = "Upload plugin";
-      this.uploadButton.UseVisualStyleBackColor = true;
-      this.uploadButton.Click += new System.EventHandler(this.uploadButton_Click);
+      this.serverVersion.Text = "Server version";
+      this.serverVersion.Width = 100;
       // 
-      // splitContainer
+      // imageList
       // 
-      this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer.Name = "splitContainer";
+      this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+      this.imageList.ImageSize = new System.Drawing.Size(16, 16);
+      this.imageList.TransparentColor = System.Drawing.Color.Transparent;
       // 
-      // splitContainer.Panel1
+      // serverUrlLabel
       // 
-      this.splitContainer.Panel1.Controls.Add(this.label1);
-      this.splitContainer.Panel1.Controls.Add(this.serverUrlTextBox);
-      this.splitContainer.Panel1.Controls.Add(this.connectButton);
-      this.splitContainer.Panel1.Controls.Add(this.listView);
-      // 
-      // splitContainer.Panel2
-      // 
-      this.splitContainer.Panel2.Controls.Add(this.tableLayoutPanel);
-      this.splitContainer.Size = new System.Drawing.Size(852, 494);
-      this.splitContainer.SplitterDistance = 398;
-      this.splitContainer.TabIndex = 3;
-      // 
-      // label1
-      // 
-      this.label1.AutoSize = true;
-      this.label1.Location = new System.Drawing.Point(3, 8);
-      this.label1.Name = "label1";
-      this.label1.Size = new System.Drawing.Size(98, 13);
-      this.label1.TabIndex = 5;
-      this.label1.Text = "Deployment server:";
+      this.serverUrlLabel.AutoSize = true;
+      this.serverUrlLabel.Location = new System.Drawing.Point(3, 6);
+      this.serverUrlLabel.Name = "serverUrlLabel";
+      this.serverUrlLabel.Size = new System.Drawing.Size(98, 13);
+      this.serverUrlLabel.TabIndex = 5;
+      this.serverUrlLabel.Text = "Deployment server:";
       // 
       // serverUrlTextBox
       // 
-      this.serverUrlTextBox.Location = new System.Drawing.Point(107, 5);
+      this.serverUrlTextBox.Location = new System.Drawing.Point(107, 3);
       this.serverUrlTextBox.Name = "serverUrlTextBox";
-      this.serverUrlTextBox.Size = new System.Drawing.Size(107, 20);
+      this.serverUrlTextBox.Size = new System.Drawing.Size(246, 20);
       this.serverUrlTextBox.TabIndex = 4;
       // 
       // connectButton
       // 
-      this.connectButton.Location = new System.Drawing.Point(220, 3);
+      this.connectButton.Location = new System.Drawing.Point(359, 1);
       this.connectButton.Name = "connectButton";
       this.connectButton.Size = new System.Drawing.Size(75, 23);
@@ -132,55 +109,24 @@
       this.connectButton.Click += new System.EventHandler(this.connectButton_Click);
       // 
-      // tableLayoutPanel
+      // refreshButton
       // 
-      this.tableLayoutPanel.ColumnCount = 2;
-      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel.Controls.Add(this.serverPluginDetailsGroupBox, 1, 0);
-      this.tableLayoutPanel.Controls.Add(this.localPluginDetailsGroupBox, 0, 0);
-      this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tableLayoutPanel.Location = new System.Drawing.Point(0, 0);
-      this.tableLayoutPanel.Name = "tableLayoutPanel";
-      this.tableLayoutPanel.RowCount = 1;
-      this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
-      this.tableLayoutPanel.Size = new System.Drawing.Size(450, 494);
-      this.tableLayoutPanel.TabIndex = 3;
+      this.refreshButton.Location = new System.Drawing.Point(440, 1);
+      this.refreshButton.Name = "refreshButton";
+      this.refreshButton.Size = new System.Drawing.Size(75, 23);
+      this.refreshButton.TabIndex = 6;
+      this.refreshButton.Text = "Refresh";
+      this.refreshButton.UseVisualStyleBackColor = true;
+      this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
       // 
-      // serverPluginDetailsGroupBox
+      // uploadButton
       // 
-      this.serverPluginDetailsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.serverPluginDetailsGroupBox.Location = new System.Drawing.Point(228, 3);
-      this.serverPluginDetailsGroupBox.Name = "serverPluginDetailsGroupBox";
-      this.serverPluginDetailsGroupBox.Size = new System.Drawing.Size(219, 488);
-      this.serverPluginDetailsGroupBox.TabIndex = 3;
-      this.serverPluginDetailsGroupBox.TabStop = false;
-      this.serverPluginDetailsGroupBox.Text = "Server plugin information";
-      // 
-      // localPluginDetailsGroupBox
-      // 
-      this.localPluginDetailsGroupBox.Controls.Add(this.localPluginDetailsPanel);
-      this.localPluginDetailsGroupBox.Controls.Add(this.uploadButton);
-      this.localPluginDetailsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.localPluginDetailsGroupBox.Location = new System.Drawing.Point(3, 3);
-      this.localPluginDetailsGroupBox.Name = "localPluginDetailsGroupBox";
-      this.localPluginDetailsGroupBox.Size = new System.Drawing.Size(219, 488);
-      this.localPluginDetailsGroupBox.TabIndex = 4;
-      this.localPluginDetailsGroupBox.TabStop = false;
-      this.localPluginDetailsGroupBox.Text = "Local plugin information";
-      // 
-      // localPluginDetailsPanel
-      // 
-      this.localPluginDetailsPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.localPluginDetailsPanel.Location = new System.Drawing.Point(6, 19);
-      this.localPluginDetailsPanel.Name = "localPluginDetailsPanel";
-      this.localPluginDetailsPanel.Size = new System.Drawing.Size(207, 434);
-      this.localPluginDetailsPanel.TabIndex = 3;
-      // 
-      // serverVersion
-      // 
-      this.serverVersion.Text = "Server version";
-      this.serverVersion.Width = 100;
+      this.uploadButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.uploadButton.Location = new System.Drawing.Point(3, 482);
+      this.uploadButton.Name = "uploadButton";
+      this.uploadButton.Size = new System.Drawing.Size(75, 23);
+      this.uploadButton.TabIndex = 7;
+      this.uploadButton.Text = "Upload";
+      this.uploadButton.UseVisualStyleBackColor = true;
+      this.uploadButton.Click += new System.EventHandler(this.uploadButton_Click);
       // 
       // PluginListView
@@ -188,14 +134,14 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.splitContainer);
+      this.Controls.Add(this.uploadButton);
+      this.Controls.Add(this.refreshButton);
+      this.Controls.Add(this.connectButton);
+      this.Controls.Add(this.serverUrlTextBox);
+      this.Controls.Add(this.serverUrlLabel);
+      this.Controls.Add(this.listView);
       this.Name = "PluginListView";
-      this.Size = new System.Drawing.Size(852, 494);
-      this.splitContainer.Panel1.ResumeLayout(false);
-      this.splitContainer.Panel1.PerformLayout();
-      this.splitContainer.Panel2.ResumeLayout(false);
-      this.splitContainer.ResumeLayout(false);
-      this.tableLayoutPanel.ResumeLayout(false);
-      this.localPluginDetailsGroupBox.ResumeLayout(false);
+      this.Size = new System.Drawing.Size(539, 508);
       this.ResumeLayout(false);
+      this.PerformLayout();
 
     }
@@ -206,14 +152,11 @@
     private System.Windows.Forms.ColumnHeader nameHeader;
     private System.Windows.Forms.ColumnHeader localVersion;
+    private System.Windows.Forms.Button connectButton;
+    private System.Windows.Forms.Label serverUrlLabel;
+    private System.Windows.Forms.TextBox serverUrlTextBox;
+    private System.Windows.Forms.ColumnHeader serverVersion;
+    private System.Windows.Forms.Button refreshButton;
     private System.Windows.Forms.Button uploadButton;
-    private System.Windows.Forms.SplitContainer splitContainer;
-    private System.Windows.Forms.Button connectButton;
-    private System.Windows.Forms.Label label1;
-    private System.Windows.Forms.TextBox serverUrlTextBox;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
-    private System.Windows.Forms.GroupBox serverPluginDetailsGroupBox;
-    private System.Windows.Forms.GroupBox localPluginDetailsGroupBox;
-    private System.Windows.Forms.Panel localPluginDetailsPanel;
-    private System.Windows.Forms.ColumnHeader serverVersion;
+    private System.Windows.Forms.ImageList imageList;
   }
 }
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginListView.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginListView.cs	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginListView.cs	(revision 2860)
@@ -23,4 +23,6 @@
     public PluginListView() {
       InitializeComponent();
+      imageList.Images.Add(HeuristicLab.Common.Resources.VS2008ImageLibrary.Assembly);
+      imageList.Images.Add(HeuristicLab.Common.Resources.VS2008ImageLibrary.ArrowUp);
       Caption = "Plugins";
 
@@ -31,4 +33,5 @@
       localAndServerPlugins = new Dictionary<IPluginDescription, PluginDeploymentService.PluginDescription>();
 
+      #region initialize backgroundworkers
       pluginUploadWorker = new BackgroundWorker();
       pluginUploadWorker.DoWork += new DoWorkEventHandler(pluginUploadWorker_DoWork);
@@ -38,9 +41,16 @@
       updateServerPluginsWorker.DoWork += new DoWorkEventHandler(updateServerPluginsWorker_DoWork);
       updateServerPluginsWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(updateServerPluginsWorker_RunWorkerCompleted);
-    }
-
+      #endregion
+    }
+
+    #region refresh plugins from server backgroundworker
     void updateServerPluginsWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
       if (!e.Cancelled && e.Result != null) {
-        UpdateLocalPlugins();
+        // refresh local plugins
+        localAndServerPlugins.Clear();
+        foreach (var plugin in ApplicationManager.Manager.Plugins) {
+          localAndServerPlugins.Add(plugin, null);
+        }
+        // refresh server plugins (find matching local plugins)
         var plugins = (PluginDeploymentService.PluginDescription[])e.Result;
         foreach (var plugin in plugins) {
@@ -53,18 +63,16 @@
           }
         }
-        UpdatePluginList();
-        OnConnected();
-      } else {
-        OnDisconnected();
-      }
+        // refresh the list view with plugins
+        listView.Items.Clear();
+        foreach (var pair in localAndServerPlugins) {
+          var item = MakeListViewItem(pair.Key);
+          listView.Items.Add(item);
+        }
+        UpdateControlsConnectedState();
+      } else {
+        UpdateControlsDisconnectedState();
+      }
+      // make sure cursor is set correctly
       Cursor = Cursors.Default;
-    }
-
-    private void UpdatePluginList() {
-      listView.Items.Clear();
-      foreach (var pair in localAndServerPlugins) {
-        var item = MakeListViewItem(pair.Key);
-        listView.Items.Add(item);
-      }
     }
 
@@ -76,28 +84,112 @@
         }
       }
-      catch (EndpointNotFoundException ex) {
+      catch (EndpointNotFoundException) {
         e.Result = null;
         e.Cancel = true;
       }
-      catch (FaultException ex) {
+      catch (FaultException) {
         e.Result = null;
         e.Cancel = true;
       }
     }
-
+    #endregion
+
+    #region upload plugins to server backgroundworker
     void pluginUploadWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
-      this.Enabled = true;
+      Cursor = Cursors.Default;
+      if (e.Cancelled) {
+        UpdateControlsDisconnectedState();
+      } else {
+        UpdateControlsConnectedState();
+        // start another async call to refresh plugin information from server
+        RefreshPluginsAsync();
+      }
     }
 
     void pluginUploadWorker_DoWork(object sender, DoWorkEventArgs e) {
-      var selectedPlugins = (IEnumerable<IPluginDescription>)e.Argument;
-      using (PluginDeploymentService.AdminClient adminClient = new PluginDeploymentService.AdminClient()) {
-
-        foreach (var plugin in IteratePlugins(selectedPlugins)) {
-          adminClient.DeployPlugin(MakePluginDescription(plugin), CreateZipPackage(plugin));
-        }
-      }
-    }
-
+      try {
+        var selectedPlugins = (IEnumerable<IPluginDescription>)e.Argument;
+        using (PluginDeploymentService.AdminClient adminClient = new PluginDeploymentService.AdminClient()) {
+
+          foreach (var plugin in IteratePlugins(selectedPlugins)) {
+            adminClient.DeployPlugin(MakePluginDescription(plugin), CreateZipPackage(plugin));
+          }
+        }
+        e.Cancel = false;
+      }
+      catch (EndpointNotFoundException) {
+        e.Cancel = true;
+      }
+      catch (FaultException) {
+        e.Cancel = true;
+      }
+    }
+    #endregion
+
+
+    #region button events
+    private void uploadButton_Click(object sender, EventArgs e) {
+      var selectedPlugins = from item in listView.Items.Cast<ListViewItem>()
+                            where item.Checked
+                            where item.Tag is IPluginDescription
+                            select item.Tag as IPluginDescription;
+      if (selectedPlugins.Count() > 0) {
+        Cursor = Cursors.AppStarting;
+        DisableControl();
+        pluginUploadWorker.RunWorkerAsync(selectedPlugins.ToList());
+      }
+    }
+
+    private void connectButton_Click(object sender, EventArgs e) {
+      if (connectButton.Text == "Connect") {
+        DisableControl();
+        RefreshPluginsAsync();
+      } else {
+        UpdateControlsDisconnectedState();
+      }
+    }
+
+    private void refreshButton_Click(object sender, EventArgs e) {
+      DisableControl();
+      RefreshPluginsAsync();
+    }
+
+    #endregion
+
+    #region item list events
+    private void listView_ItemActivate(object sender, EventArgs e) {
+      foreach (var item in listView.SelectedItems) {
+        var plugin = (IPluginDescription)((ListViewItem)item).Tag;
+        var compView = new PluginComparisonView(plugin, localAndServerPlugins[plugin]);
+        compView.Show();
+      }
+    }
+
+    private void listView_ItemChecked(object sender, ItemCheckedEventArgs e) {
+      // also check all dependencies
+      if (e.Item.Checked) {
+        uploadButton.Enabled = true;
+        var plugin = (IPluginDescription)e.Item.Tag;
+        foreach (var dep in plugin.Dependencies) {
+          var depItem = FindItemForPlugin(dep);
+          if (!depItem.Checked) depItem.Checked = true;
+        }
+      } else {
+        uploadButton.Enabled = (from i in listView.Items.Cast<ListViewItem>()
+                                where i.Checked
+                                select i).Any();
+        // also uncheck all dependent plugins
+        var plugin = (IPluginDescription)e.Item.Tag;
+        foreach (ListViewItem item in listView.Items) {
+          var dep = (IPluginDescription)item.Tag;
+          if (dep.Dependencies.Contains(plugin) && item.Checked) {
+            item.Checked = false;
+          }
+        }
+      }
+    }
+    #endregion
+
+    #region helper methods
     private byte[] CreateZipPackage(IPluginDescription plugin) {
       using (MemoryStream stream = new MemoryStream()) {
@@ -113,4 +205,22 @@
     }
 
+    private ListViewItem MakeListViewItem(IPluginDescription plugin) {
+      ListViewItem item;
+      if (localAndServerPlugins[plugin] != null) {
+        item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), localAndServerPlugins[plugin].Version.ToString() });
+      } else {
+        item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), string.Empty });
+      }
+      item.Tag = plugin;
+      item.Checked = false;
+      return item;
+    }
+
+    private ListViewItem FindItemForPlugin(IPluginDescription dep) {
+      return (from i in listView.Items.Cast<ListViewItem>()
+              where i.Tag == dep
+              select i).Single();
+    }
+
     private PluginDeploymentService.PluginDescription MakePluginDescription(IPluginDescription plugin) {
       var dependencies = from dep in plugin.Dependencies
@@ -118,5 +228,5 @@
       if (string.IsNullOrEmpty(plugin.ContactName) || string.IsNullOrEmpty(plugin.ContactEmail)) {
         return new PluginDeploymentService.PluginDescription(plugin.Name, plugin.Version, dependencies);
-      } else return new PluginDeploymentService.PluginDescription(plugin.Name, plugin.Version, dependencies, plugin.ContactName + ", " + plugin.ContactEmail, plugin.LicenseText);
+      } else return new PluginDeploymentService.PluginDescription(plugin.Name, plugin.Version, dependencies, plugin.ContactName, plugin.ContactEmail, plugin.LicenseText);
     }
 
@@ -130,80 +240,45 @@
     }
 
-    public void UpdateLocalPlugins() {
-      localAndServerPlugins.Clear();
-
-      foreach (var plugin in ApplicationManager.Manager.Plugins) {
-        localAndServerPlugins.Add(plugin, null);
-      }
-    }
-
-
-    private ListViewItem MakeListViewItem(IPluginDescription plugin) {
-      ListViewItem item;
-      if (localAndServerPlugins[plugin] != null) {
-        item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), localAndServerPlugins[plugin].Version.ToString() });
-      } else {
-        item = new ListViewItem(new string[] { plugin.Name, plugin.Version.ToString(), string.Empty });
-      }
-      item.Tag = plugin;
-      return item;
-    }
-
-    private void listView_SelectedIndexChanged(object sender, EventArgs e) {
-      localPluginDetailsPanel.Controls.Clear();
-      serverPluginDetailsGroupBox.Controls.Clear();
-
-      if (listView.SelectedItems.Count > 0) {
-        var plugin = (IPluginDescription)listView.SelectedItems[0].Tag;
-        ShowPluginDetails(plugin);
-      }
-    }
-
-    private void ShowPluginDetails(IPluginDescription plugin) {
-      var localView = new LocalPluginView(plugin);
-      var serverView = new ServerPluginView(localAndServerPlugins[plugin]);
-      localView.Dock = DockStyle.Fill;
-      serverView.Dock = DockStyle.Fill;
-      localPluginDetailsPanel.Controls.Add(localView);
-      serverPluginDetailsGroupBox.Controls.Add(serverView);
-    }
-
-    private void uploadButton_Click(object sender, EventArgs e) {
-      if (listView.SelectedItems.Count > 0) {
-        var selectedPlugins = from item in listView.SelectedItems.Cast<ListViewItem>()
-                              where item.Tag is IPluginDescription
-                              select item.Tag as IPluginDescription;
-        this.Enabled = false;
-        pluginUploadWorker.RunWorkerAsync(selectedPlugins.ToList());
-      }
-    }
-
-    private void connectButton_Click(object sender, EventArgs e) {
-      OnDisconnected();
+    // start background process to refresh the plugin list (local and server)
+    private void RefreshPluginsAsync() {
       Cursor = Cursors.AppStarting;
+      DisableControl();
       updateServerPluginsWorker.RunWorkerAsync();
     }
 
-    private void OnConnected() {
-      connectButton.Enabled = false;
-      serverUrlTextBox.Enabled = false;
-      label1.Enabled = false;
-
-      listView.Enabled = true;
-      uploadButton.Enabled = true;
-    }
-
-    private void OnDisconnected() {
-      connectButton.Enabled = true;
+    // is called by all methods that start a background process
+    // controls must be enabled manuall again when the backgroundworker finishes
+    private void DisableControl() {
+      MainFormManager.GetMainForm<MainForm>().ShowProgressBar();
+      foreach (Control ctrl in Controls)
+        ctrl.Enabled = false;
+    }
+
+    private void UpdateControlsDisconnectedState() {
+      connectButton.Text = "Connect";
       serverUrlTextBox.Enabled = true;
-      label1.Enabled = true;
+      serverUrlLabel.Enabled = true;
+      refreshButton.Enabled = false;
 
       localAndServerPlugins.Clear();
       listView.Items.Clear();
-      localPluginDetailsPanel.Controls.Clear();
-      serverPluginDetailsGroupBox.Controls.Clear();
       listView.Enabled = false;
       uploadButton.Enabled = false;
-    }
+      MainFormManager.GetMainForm<MainForm>().HideProgressBar();
+    }
+
+    private void UpdateControlsConnectedState() {
+      connectButton.Text = "Disconnect";
+      connectButton.Enabled = true;
+      serverUrlTextBox.Enabled = false;
+      serverUrlLabel.Enabled = false;
+      refreshButton.Enabled = true;
+      listView.Enabled = true;
+      uploadButton.Enabled = false;
+      MainFormManager.GetMainForm<MainForm>().HideProgressBar();
+    }
+
+
+    #endregion
   }
 }
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginListView.resx
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginListView.resx	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginListView.resx	(revision 2860)
@@ -118,3 +118,6 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
 </root>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginView.Designer.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginView.Designer.cs	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginView.Designer.cs	(revision 2860)
@@ -24,4 +24,5 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.nameLabel = new System.Windows.Forms.Label();
       this.nameTextBox = new System.Windows.Forms.TextBox();
@@ -33,7 +34,13 @@
       this.dependenciesGroupBox = new System.Windows.Forms.GroupBox();
       this.dependenciesListView = new System.Windows.Forms.ListView();
-      this.nameHeader = new System.Windows.Forms.ColumnHeader();
-      this.versionHeader = new System.Windows.Forms.ColumnHeader();
+      this.pluginNameHeader = new System.Windows.Forms.ColumnHeader();
+      this.pluginVersionHeader = new System.Windows.Forms.ColumnHeader();
+      this.imageList = new System.Windows.Forms.ImageList(this.components);
+      this.filesListView = new System.Windows.Forms.ListView();
+      this.fileNameHeader = new System.Windows.Forms.ColumnHeader();
+      this.fileTypeHeader = new System.Windows.Forms.ColumnHeader();
+      this.filesGroupBox = new System.Windows.Forms.GroupBox();
       this.dependenciesGroupBox.SuspendLayout();
+      this.filesGroupBox.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -54,5 +61,5 @@
       this.nameTextBox.Name = "nameTextBox";
       this.nameTextBox.ReadOnly = true;
-      this.nameTextBox.Size = new System.Drawing.Size(191, 20);
+      this.nameTextBox.Size = new System.Drawing.Size(267, 20);
       this.nameTextBox.TabIndex = 1;
       // 
@@ -64,5 +71,5 @@
       this.versionTextBox.Name = "versionTextBox";
       this.versionTextBox.ReadOnly = true;
-      this.versionTextBox.Size = new System.Drawing.Size(191, 20);
+      this.versionTextBox.Size = new System.Drawing.Size(267, 20);
       this.versionTextBox.TabIndex = 3;
       // 
@@ -83,5 +90,5 @@
       this.contactTextBox.Name = "contactTextBox";
       this.contactTextBox.ReadOnly = true;
-      this.contactTextBox.Size = new System.Drawing.Size(191, 20);
+      this.contactTextBox.Size = new System.Drawing.Size(267, 20);
       this.contactTextBox.TabIndex = 5;
       // 
@@ -98,5 +105,5 @@
       // 
       this.licenseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.licenseButton.Location = new System.Drawing.Point(3, 397);
+      this.licenseButton.Location = new System.Drawing.Point(3, 486);
       this.licenseButton.Name = "licenseButton";
       this.licenseButton.Size = new System.Drawing.Size(103, 23);
@@ -104,4 +111,5 @@
       this.licenseButton.Text = "Show license";
       this.licenseButton.UseVisualStyleBackColor = true;
+      this.licenseButton.Click += new System.EventHandler(this.licenseButton_Click);
       // 
       // dependenciesGroupBox
@@ -111,7 +119,7 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.dependenciesGroupBox.Controls.Add(this.dependenciesListView);
-      this.dependenciesGroupBox.Location = new System.Drawing.Point(3, 81);
+      this.dependenciesGroupBox.Location = new System.Drawing.Point(3, 255);
       this.dependenciesGroupBox.Name = "dependenciesGroupBox";
-      this.dependenciesGroupBox.Size = new System.Drawing.Size(262, 310);
+      this.dependenciesGroupBox.Size = new System.Drawing.Size(338, 225);
       this.dependenciesGroupBox.TabIndex = 1;
       this.dependenciesGroupBox.TabStop = false;
@@ -121,23 +129,66 @@
       // 
       this.dependenciesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.nameHeader,
-            this.versionHeader});
+            this.pluginNameHeader,
+            this.pluginVersionHeader});
       this.dependenciesListView.Dock = System.Windows.Forms.DockStyle.Fill;
       this.dependenciesListView.Location = new System.Drawing.Point(3, 16);
       this.dependenciesListView.Name = "dependenciesListView";
-      this.dependenciesListView.Size = new System.Drawing.Size(256, 291);
+      this.dependenciesListView.Size = new System.Drawing.Size(332, 206);
+      this.dependenciesListView.SmallImageList = this.imageList;
       this.dependenciesListView.TabIndex = 0;
       this.dependenciesListView.UseCompatibleStateImageBehavior = false;
       this.dependenciesListView.View = System.Windows.Forms.View.Details;
       // 
-      // nameHeader
-      // 
-      this.nameHeader.Text = "Name";
-      this.nameHeader.Width = 180;
-      // 
-      // versionHeader
-      // 
-      this.versionHeader.Text = "Version";
-      this.versionHeader.Width = 100;
+      // pluginNameHeader
+      // 
+      this.pluginNameHeader.Text = "Name";
+      this.pluginNameHeader.Width = 200;
+      // 
+      // pluginVersionHeader
+      // 
+      this.pluginVersionHeader.Text = "Version";
+      this.pluginVersionHeader.Width = 120;
+      // 
+      // imageList
+      // 
+      this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+      this.imageList.ImageSize = new System.Drawing.Size(16, 16);
+      this.imageList.TransparentColor = System.Drawing.Color.Transparent;
+      // 
+      // filesListView
+      // 
+      this.filesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.fileNameHeader,
+            this.fileTypeHeader});
+      this.filesListView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.filesListView.Location = new System.Drawing.Point(3, 16);
+      this.filesListView.Name = "filesListView";
+      this.filesListView.Size = new System.Drawing.Size(329, 149);
+      this.filesListView.SmallImageList = this.imageList;
+      this.filesListView.TabIndex = 0;
+      this.filesListView.UseCompatibleStateImageBehavior = false;
+      this.filesListView.View = System.Windows.Forms.View.Details;
+      // 
+      // fileNameHeader
+      // 
+      this.fileNameHeader.Text = "Name";
+      this.fileNameHeader.Width = 200;
+      // 
+      // fileTypeHeader
+      // 
+      this.fileTypeHeader.Text = "Type";
+      this.fileTypeHeader.Width = 120;
+      // 
+      // filesGroupBox
+      // 
+      this.filesGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.filesGroupBox.Controls.Add(this.filesListView);
+      this.filesGroupBox.Location = new System.Drawing.Point(3, 81);
+      this.filesGroupBox.Name = "filesGroupBox";
+      this.filesGroupBox.Size = new System.Drawing.Size(335, 168);
+      this.filesGroupBox.TabIndex = 11;
+      this.filesGroupBox.TabStop = false;
+      this.filesGroupBox.Text = "Files";
       // 
       // PluginView
@@ -146,4 +197,5 @@
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.Controls.Add(this.dependenciesGroupBox);
+      this.Controls.Add(this.filesGroupBox);
       this.Controls.Add(this.licenseButton);
       this.Controls.Add(this.contactTextBox);
@@ -154,6 +206,7 @@
       this.Controls.Add(this.nameLabel);
       this.Name = "PluginView";
-      this.Size = new System.Drawing.Size(268, 423);
+      this.Size = new System.Drawing.Size(344, 512);
       this.dependenciesGroupBox.ResumeLayout(false);
+      this.filesGroupBox.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -171,7 +224,12 @@
     protected System.Windows.Forms.Button licenseButton;
     protected System.Windows.Forms.GroupBox dependenciesGroupBox;
-    private System.Windows.Forms.ColumnHeader nameHeader;
-    private System.Windows.Forms.ColumnHeader versionHeader;
+    private System.Windows.Forms.ColumnHeader pluginNameHeader;
+    private System.Windows.Forms.ColumnHeader pluginVersionHeader;
     protected System.Windows.Forms.ListView dependenciesListView;
+    private System.Windows.Forms.ListView filesListView;
+    private System.Windows.Forms.GroupBox filesGroupBox;
+    private System.Windows.Forms.ImageList imageList;
+    private System.Windows.Forms.ColumnHeader fileNameHeader;
+    private System.Windows.Forms.ColumnHeader fileTypeHeader;
 
   }
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginView.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginView.cs	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginView.cs	(revision 2860)
@@ -8,9 +8,71 @@
 using System.Windows.Forms;
 using HeuristicLab.PluginInfrastructure;
+using System.IO;
 
 namespace HeuristicLab.DeploymentService.AdminClient {
   public partial class PluginView : UserControl {
+    private const string IMAGE_KEY_ASSEMBLY = "Assembly";
+    private const string IMAGE_KEY_FILE = "File";
+    private const string IMAGE_KEY_DOCUMENT = "Document";
+
+    private IPluginDescription plugin;
+
     public PluginView() {
       InitializeComponent();
+      PopulateImageList();
+    }
+
+    public PluginView(IPluginDescription plugin) {
+      InitializeComponent();
+      PopulateImageList();
+
+      this.plugin = plugin;
+      UpdateControls();
+    }
+
+    private void PopulateImageList() {
+      imageList.Images.Add(IMAGE_KEY_ASSEMBLY, HeuristicLab.Common.Resources.VS2008ImageLibrary.Assembly);
+      imageList.Images.Add(IMAGE_KEY_FILE, HeuristicLab.Common.Resources.VS2008ImageLibrary.File);
+      imageList.Images.Add(IMAGE_KEY_DOCUMENT, HeuristicLab.Common.Resources.VS2008ImageLibrary.Document);
+    }
+
+    public void UpdateControls() {
+      string appDir = Path.GetDirectoryName(Application.ExecutablePath);
+      nameTextBox.Text = plugin.Name;
+      versionTextBox.Text = plugin.Version.ToString();
+      contactTextBox.Text = CombineStrings(plugin.ContactName, plugin.ContactEmail);
+      foreach (IPluginDescription dependency in plugin.Dependencies) {
+        var depItem = new ListViewItem(new string[] { dependency.Name, dependency.Version.ToString() });
+        depItem.ImageKey = IMAGE_KEY_ASSEMBLY;
+        dependenciesListView.Items.Add(depItem);
+      }
+      foreach (var file in plugin.Files) {
+        string displayedFileName = file.Name.Replace(appDir, string.Empty);
+        displayedFileName = displayedFileName.TrimStart(Path.DirectorySeparatorChar);
+        var fileItem = new ListViewItem(new string[] { displayedFileName, file.Type.ToString() });
+        if (file.Type == PluginFileType.Assembly) {
+          fileItem.ImageKey = IMAGE_KEY_ASSEMBLY;
+        } else if (file.Type == PluginFileType.License) {
+          fileItem.ImageKey = IMAGE_KEY_DOCUMENT;
+        } else fileItem.ImageKey = IMAGE_KEY_FILE;
+        filesListView.Items.Add(fileItem);
+      }
+      licenseButton.Enabled = !string.IsNullOrEmpty(plugin.LicenseText);
+    }
+
+    private string CombineStrings(string a, string b) {
+      if (string.IsNullOrEmpty(a))
+        // a is empty
+        if (!string.IsNullOrEmpty(b)) return CombineStrings(b, string.Empty);
+        else return string.Empty;
+      // a is not empty
+      else if (string.IsNullOrEmpty(b)) return a;
+      // and b are not empty
+      else return a + ", " + b;
+    }
+
+    private void licenseButton_Click(object sender, EventArgs e) {
+      LicenseView view = new LicenseView(plugin.Name, plugin.Version.ToString(), plugin.LicenseText);
+      view.Show();
     }
   }
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginView.resx
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginView.resx	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/PluginView.resx	(revision 2860)
@@ -118,3 +118,6 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
 </root>
Index: anches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/ServerPluginView.Designer.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/ServerPluginView.Designer.cs	(revision 2859)
+++ 	(revision )
@@ -1,70 +1,0 @@
-﻿namespace HeuristicLab.DeploymentService.AdminClient {
-  partial class ServerPluginView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.dependenciesGroupBox.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // nameTextBox
-      // 
-      this.nameTextBox.Size = new System.Drawing.Size(211, 20);
-      // 
-      // versionTextBox
-      // 
-      this.versionTextBox.Size = new System.Drawing.Size(211, 20);
-      // 
-      // contactTextBox
-      // 
-      this.contactTextBox.Size = new System.Drawing.Size(211, 20);
-      // 
-      // licenseButton
-      // 
-      this.licenseButton.Location = new System.Drawing.Point(3, 398);
-      this.licenseButton.Click += new System.EventHandler(this.licenseButton_Click);
-      // 
-      // dependenciesGroupBox
-      // 
-      this.dependenciesGroupBox.Location = new System.Drawing.Point(6, 81);
-      this.dependenciesGroupBox.Size = new System.Drawing.Size(276, 311);
-      // 
-      // dependenciesListView
-      // 
-      this.dependenciesListView.Size = new System.Drawing.Size(270, 292);
-      // 
-      // ServerPluginView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "ServerPluginView";
-      this.Size = new System.Drawing.Size(288, 424);
-      this.dependenciesGroupBox.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-  }
-}
Index: anches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/ServerPluginView.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/ServerPluginView.cs	(revision 2859)
+++ 	(revision )
@@ -1,49 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.PluginInfrastructure;
-using PluginDeploymentService = HeuristicLab.PluginInfrastructure.Advanced.DeploymentService;
-
-namespace HeuristicLab.DeploymentService.AdminClient {
-  public partial class ServerPluginView : PluginView {
-    private PluginDeploymentService.PluginDescription plugin;
-
-    public ServerPluginView() {
-      InitializeComponent();
-    }
-
-    public ServerPluginView(PluginDeploymentService.PluginDescription plugin) {
-      InitializeComponent();
-      this.plugin = plugin;
-      UpdateControls();
-    }
-
-    public void UpdateControls() {
-      if (plugin == null) {
-        this.Controls.Clear();
-        var label = new Label();
-        label.Dock = DockStyle.Fill;
-        label.Text = "No matching server plugin";
-        this.Controls.Add(label);
-      } else {
-        nameTextBox.Text = plugin.Name;
-        versionTextBox.Text = plugin.Version.ToString();
-        contactTextBox.Text = plugin.ContactInformation;
-        foreach (PluginDeploymentService.PluginDescription dependency in plugin.Dependencies) {
-          dependenciesListView.Items.Add(new ListViewItem(new string[] { dependency.Name, dependency.Version.ToString() }));
-        }
-        licenseButton.Enabled = !string.IsNullOrEmpty(plugin.LicenseText);
-      }
-    }
-
-    private void licenseButton_Click(object sender, EventArgs e) {
-      LicenseView view = new LicenseView(plugin.Name, plugin.Version.ToString(), plugin.LicenseText);
-      view.Show();
-    }
-  }
-}
Index: anches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/ServerPluginView.resx
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.DeploymentService.AdminClient/ServerPluginView.resx	(revision 2859)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment.DataAccess/PluginStoreClasses.dbml
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment.DataAccess/PluginStoreClasses.dbml	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment.DataAccess/PluginStoreClasses.dbml	(revision 2860)
@@ -19,5 +19,6 @@
       <Column Name="Name" Type="System.String" DbType="NVarChar(300) NOT NULL" CanBeNull="false" />
       <Column Name="Version" Type="System.String" DbType="NVarChar(50) NOT NULL" CanBeNull="false" />
-      <Column Name="ContactInformation" Type="System.String" DbType="Text" CanBeNull="true" UpdateCheck="Never" />
+      <Column Name="ContactName" Type="System.String" DbType="Text" CanBeNull="true" UpdateCheck="Never" />
+      <Column Name="ContactEmail" Type="System.String" DbType="Text" CanBeNull="true" UpdateCheck="Never" />
       <Column Name="License" Type="System.String" DbType="Text" CanBeNull="true" UpdateCheck="Never" />
       <Association Name="Plugin_PluginPackage" Member="PluginPackage" ThisKey="Id" OtherKey="PluginId" Type="PluginPackage" Cardinality="One" />
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment.DataAccess/PluginStoreClasses.dbml.layout
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment.DataAccess/PluginStoreClasses.dbml.layout	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment.DataAccess/PluginStoreClasses.dbml.layout	(revision 2860)
@@ -3,39 +3,39 @@
   <DataContextMoniker Name="/PluginStoreClassesDataContext" />
   <nestedChildShapes>
-    <classShape Id="5aa5ddda-9296-44d2-a516-238be9f4719d" absoluteBounds="3.5, 2, 2, 1.1939925130208335">
+    <classShape Id="16e9d26d-f78e-4457-8cdb-0cee0835a0b6" absoluteBounds="3.5, 2, 2, 1.1939925130208335">
       <DataClassMoniker Name="/PluginStoreClassesDataContext/Dependency" />
       <nestedChildShapes>
-        <elementListCompartment Id="5ca38ac5-5a7e-4c47-a480-0536fec82dcc" absoluteBounds="3.515, 2.46, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+        <elementListCompartment Id="90573696-5cb0-44c5-a492-6e26800047b3" absoluteBounds="3.515, 2.46, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
       </nestedChildShapes>
     </classShape>
-    <classShape Id="a5892850-02a5-4f0c-8b4d-cdc887c495b6" absoluteBounds="3.5, 4, 2, 1.1939925130208344">
+    <classShape Id="86708203-9aa2-44f4-a85f-7fad2c542e23" absoluteBounds="3.5, 4, 2, 1.1939925130208344">
       <DataClassMoniker Name="/PluginStoreClassesDataContext/ProductPlugin" />
       <nestedChildShapes>
-        <elementListCompartment Id="07b98569-9ca9-4b3f-8829-d57557588cba" absoluteBounds="3.515, 4.46, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+        <elementListCompartment Id="da9607ee-b60e-44f0-8e80-704abd6dd898" absoluteBounds="3.515, 4.46, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
       </nestedChildShapes>
     </classShape>
-    <classShape Id="7c7e406d-95e8-4f00-ab8e-634b7fbbbea5" absoluteBounds="0.75, 2.75, 2, 1.7708968098958335">
+    <classShape Id="1e228e3e-9436-4cd0-b7f7-492427268001" absoluteBounds="0.75, 2.625, 2, 1.9631982421874996">
       <DataClassMoniker Name="/PluginStoreClassesDataContext/Plugin" />
       <nestedChildShapes>
-        <elementListCompartment Id="25134a80-4bf5-4672-bd9e-6449a7935427" absoluteBounds="0.765, 3.21, 1.9700000000000002, 1.2108968098958333" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+        <elementListCompartment Id="81f74f1f-d4d0-4dce-991e-fb10afa63eb5" absoluteBounds="0.765, 3.085, 1.9700000000000002, 1.4031982421875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
       </nestedChildShapes>
     </classShape>
-    <classShape Id="855904b1-2043-4ccc-951d-2f35df8b6190" absoluteBounds="3.5, 6, 2, 1.1939925130208344">
+    <classShape Id="d660db81-846c-4661-9a86-09567e927f9d" absoluteBounds="3.5, 6, 2, 1.1939925130208344">
       <DataClassMoniker Name="/PluginStoreClassesDataContext/PluginPackage" />
       <nestedChildShapes>
-        <elementListCompartment Id="25003445-42f3-4db9-8945-6609772da5ec" absoluteBounds="3.515, 6.46, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+        <elementListCompartment Id="31a89e0e-c915-41d6-926b-d8c0f029f27d" absoluteBounds="3.515, 6.46, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
       </nestedChildShapes>
     </classShape>
-    <classShape Id="cc5365b1-2536-41e1-b69d-c3ab09f01086" absoluteBounds="0.75, 5.875, 2, 1.3862939453125005">
+    <classShape Id="55486421-017b-44b9-894d-6cc4501cda04" absoluteBounds="0.75, 5.875, 2, 1.3862939453125005">
       <DataClassMoniker Name="/PluginStoreClassesDataContext/Product" />
       <nestedChildShapes>
-        <elementListCompartment Id="875bde79-6306-48eb-bcea-c8653ef81ec2" absoluteBounds="0.765, 6.335, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
+        <elementListCompartment Id="5abad42a-034c-4331-916c-e757c0c6c777" absoluteBounds="0.765, 6.335, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
       </nestedChildShapes>
     </classShape>
-    <associationConnector edgePoints="[(2.75 : 4.52089680989583); (3.125 : 4.89589680989583); (3.125 : 6.59699625651042); (3.5 : 6.59699625651042)]" fixedFrom="NotFixed" fixedTo="Algorithm">
+    <associationConnector edgePoints="[(2.75 : 4.5881982421875); (3.125 : 4.9631982421875); (3.125 : 6.59699625651042); (3.5 : 6.59699625651042)]" fixedFrom="NotFixed" fixedTo="Algorithm">
       <AssociationMoniker Name="/PluginStoreClassesDataContext/Plugin/Plugin_PluginPackage" />
       <nodes>
-        <classShapeMoniker Id="7c7e406d-95e8-4f00-ab8e-634b7fbbbea5" />
-        <classShapeMoniker Id="855904b1-2043-4ccc-951d-2f35df8b6190" />
+        <classShapeMoniker Id="1e228e3e-9436-4cd0-b7f7-492427268001" />
+        <classShapeMoniker Id="d660db81-846c-4661-9a86-09567e927f9d" />
       </nodes>
     </associationConnector>
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment.DataAccess/PluginStoreClasses.designer.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment.DataAccess/PluginStoreClasses.designer.cs	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment.DataAccess/PluginStoreClasses.designer.cs	(revision 2860)
@@ -303,5 +303,7 @@
 		private string _Version;
 		
-		private string _ContactInformation;
+		private string _ContactName;
+		
+		private string _ContactEmail;
 		
 		private string _License;
@@ -319,6 +321,8 @@
     partial void OnVersionChanging(string value);
     partial void OnVersionChanged();
-    partial void OnContactInformationChanging(string value);
-    partial void OnContactInformationChanged();
+    partial void OnContactNameChanging(string value);
+    partial void OnContactNameChanged();
+    partial void OnContactEmailChanging(string value);
+    partial void OnContactEmailChanged();
     partial void OnLicenseChanging(string value);
     partial void OnLicenseChanged();
@@ -391,20 +395,40 @@
 		}
 		
-		[Column(Storage="_ContactInformation", DbType="Text", UpdateCheck=UpdateCheck.Never)]
-		public string ContactInformation
-		{
-			get
-			{
-				return this._ContactInformation;
-			}
-			set
-			{
-				if ((this._ContactInformation != value))
-				{
-					this.OnContactInformationChanging(value);
-					this.SendPropertyChanging();
-					this._ContactInformation = value;
-					this.SendPropertyChanged("ContactInformation");
-					this.OnContactInformationChanged();
+		[Column(Storage="_ContactName", DbType="Text", UpdateCheck=UpdateCheck.Never)]
+		public string ContactName
+		{
+			get
+			{
+				return this._ContactName;
+			}
+			set
+			{
+				if ((this._ContactName != value))
+				{
+					this.OnContactNameChanging(value);
+					this.SendPropertyChanging();
+					this._ContactName = value;
+					this.SendPropertyChanged("ContactName");
+					this.OnContactNameChanged();
+				}
+			}
+		}
+		
+		[Column(Storage="_ContactEmail", DbType="Text", UpdateCheck=UpdateCheck.Never)]
+		public string ContactEmail
+		{
+			get
+			{
+				return this._ContactEmail;
+			}
+			set
+			{
+				if ((this._ContactEmail != value))
+				{
+					this.OnContactEmailChanging(value);
+					this.SendPropertyChanging();
+					this._ContactEmail = value;
+					this.SendPropertyChanged("ContactEmail");
+					this.OnContactEmailChanged();
 				}
 			}
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment/PluginDescription.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment/PluginDescription.cs	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment/PluginDescription.cs	(revision 2860)
@@ -21,8 +21,14 @@
     }
 
-    [DataMember(Name = "ContactInformation")]
-    private string contactInformation;
-    public string ContactInformation {
-      get { return contactInformation; }
+    [DataMember(Name = "ContactName")]
+    private string contactName;
+    public string ContactName {
+      get { return contactName; }
+    }
+
+    [DataMember(Name = "ContactEmail")]
+    private string contactEmail;
+    public string ContactEmail {
+      get { return contactEmail; }
     }
 
@@ -39,12 +45,16 @@
     }
 
-    public PluginDescription(string name, Version version, IEnumerable<PluginDescription> dependencies, string contactInformation, string license) {
+    public PluginDescription(string name, Version version, IEnumerable<PluginDescription> dependencies, 
+      string contactName, string contactEmail, string license) {
       if (string.IsNullOrEmpty(name)) throw new ArgumentException("name is empty");
-      if (version == null || dependencies == null || contactInformation == null || license == null) throw new ArgumentNullException();
+      if (version == null || dependencies == null ||
+        contactName == null || contactEmail == null ||
+        license == null) throw new ArgumentNullException();
       this.name = name;
       this.version = version;
       this.dependencies = new List<PluginDescription>(dependencies);
       this.licenseText = license;
-      this.contactInformation = contactInformation;
+      this.contactName = contactName;
+      this.contactEmail = contactEmail;
     }
 
@@ -54,5 +64,5 @@
 
     public PluginDescription(string name, Version version, IEnumerable<PluginDescription> dependencies)
-      : this(name, version, dependencies, string.Empty, string.Empty) {
+      : this(name, version, dependencies, string.Empty, string.Empty, string.Empty) {
     }
   }
Index: /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment/PluginStore.cs
===================================================================
--- /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment/PluginStore.cs	(revision 2859)
+++ /branches/DeploymentServer Prototype/HeuristicLab.Services/HeuristicLab.Services.Deployment/PluginStore.cs	(revision 2860)
@@ -144,6 +144,7 @@
       // update plugin data
       pluginEntity.License = pluginDescription.LicenseText;
-      pluginEntity.ContactInformation = pluginDescription.ContactInformation;
-      
+      pluginEntity.ContactName = pluginDescription.ContactName;
+      pluginEntity.ContactEmail = pluginDescription.ContactEmail;
+
       // delete cached entry
       if (pluginDescriptions.ContainsKey(pluginEntity)) pluginDescriptions.Remove(pluginEntity);
@@ -196,5 +197,6 @@
           from dep in GetDependencies(ctx, plugin)
           select MakePluginDescription(ctx, dep),
-          plugin.ContactInformation ?? string.Empty,
+          plugin.ContactName ?? string.Empty,
+          plugin.ContactEmail ?? string.Empty,
           plugin.License ?? string.Empty
           );
@@ -208,5 +210,6 @@
       plugin.Name = pluginDescription.Name;
       plugin.Version = pluginDescription.Version.ToString();
-      plugin.ContactInformation = pluginDescription.ContactInformation;
+      plugin.ContactName = pluginDescription.ContactName;
+      plugin.ContactEmail = pluginDescription.ContactEmail;
       plugin.License = pluginDescription.LicenseText;
       return plugin;
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/DeploymentService/DeploymentService.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/DeploymentService/DeploymentService.cs	(revision 2859)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/DeploymentService/DeploymentService.cs	(revision 2860)
@@ -22,5 +22,7 @@
         private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
         
-        private string ContactInformationField;
+        private string ContactEmailField;
+        
+        private string ContactNameField;
         
         private HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.PluginDescription[] DependenciesField;
@@ -45,13 +47,26 @@
         
         [System.Runtime.Serialization.DataMemberAttribute()]
-        public string ContactInformation
-        {
-            get
-            {
-                return this.ContactInformationField;
-            }
-            set
-            {
-                this.ContactInformationField = value;
+        public string ContactEmail
+        {
+            get
+            {
+                return this.ContactEmailField;
+            }
+            set
+            {
+                this.ContactEmailField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string ContactName
+        {
+            get
+            {
+                return this.ContactNameField;
+            }
+            set
+            {
+                this.ContactNameField = value;
             }
         }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/DeploymentService/PluginDescription.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/DeploymentService/PluginDescription.cs	(revision 2859)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/DeploymentService/PluginDescription.cs	(revision 2860)
@@ -31,17 +31,36 @@
 namespace HeuristicLab.PluginInfrastructure.Advanced.DeploymentService {
   // extension of auto-generated DataContract class PluginDescription
-  public partial class PluginDescription {
+  public partial class PluginDescription : IPluginDescription {
     public PluginDescription(string name, Version version) : this(name, version, new List<PluginDescription>()) { }
     public PluginDescription(string name, Version version, IEnumerable<PluginDescription> dependencies)
-      : this(name, version, dependencies, string.Empty, string.Empty) {
+      : this(name, version, dependencies, string.Empty, string.Empty, string.Empty) {
     }
 
-    public PluginDescription(string name, Version version, IEnumerable<PluginDescription> dependencies, string contactInformation, string licenseText) {
+    public PluginDescription(string name, Version version, IEnumerable<PluginDescription> dependencies, string contactName, string contactEmail, string licenseText) {
       this.Name = name;
       this.Version = version;
       this.Dependencies = dependencies.ToArray();
-      this.ContactInformation = contactInformation;
       this.LicenseText = licenseText;
     }
+
+    #region IPluginDescription Members
+
+
+    [Obsolete]
+    public DateTime BuildDate {
+      get { throw new NotImplementedException(); }
+    }
+
+    IEnumerable<IPluginDescription> IPluginDescription.Dependencies {
+      get {
+        return Dependencies;
+      }
+    }
+
+    public IEnumerable<IPluginFile> Files {
+      get { return Enumerable.Empty<IPluginFile>(); }
+    }
+
+    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/DeploymentService/ProductDescription.cs
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/DeploymentService/ProductDescription.cs	(revision 2859)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/Advanced/DeploymentService/ProductDescription.cs	(revision 2860)
@@ -31,5 +31,5 @@
 namespace HeuristicLab.PluginInfrastructure.Advanced.DeploymentService {
   // extension of auto-generated DataContract class ProductDescription
-  public partial class ProductDescription {
+  public partial class ProductDescription  {
     public ProductDescription(string name, Version version)
       : this(name, version, new List<PluginDescription>()) {
Index: /trunk/sources/HeuristicLab.PluginInfrastructure/app.config
===================================================================
--- /trunk/sources/HeuristicLab.PluginInfrastructure/app.config	(revision 2859)
+++ /trunk/sources/HeuristicLab.PluginInfrastructure/app.config	(revision 2860)
@@ -27,5 +27,5 @@
         <bindings>
             <wsHttpBinding>
-                <binding name="WSHttpBinding_IUpdate2" closeTimeout="00:01:00"
+                <binding name="WSHttpBinding_IUpdate" closeTimeout="00:01:00"
                     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                     bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
@@ -44,5 +44,5 @@
                     </security>
                 </binding>
-                <binding name="WSHttpBinding_IAdmin2" closeTimeout="00:01:00"
+                <binding name="WSHttpBinding_IAdmin" closeTimeout="00:01:00"
                     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                     bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
@@ -65,7 +65,7 @@
         <client>
             <endpoint address="http://localhost:8731/Design_Time_Addresses/HeuristicLab.Services.Deployment/Update/"
-                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IUpdate2"
+                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IUpdate"
                 contract="HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.IUpdate"
-                name="WSHttpBinding_IUpdate2">
+                name="WSHttpBinding_IUpdate">
                 <identity>
                     <dns value="localhost" />
@@ -73,7 +73,7 @@
             </endpoint>
             <endpoint address="http://localhost:8731/Design_Time_Addresses/HeuristicLab.Services.Deployment/Admin/"
-                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IAdmin2"
+                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IAdmin"
                 contract="HeuristicLab.PluginInfrastructure.Advanced.DeploymentService.IAdmin"
-                name="WSHttpBinding_IAdmin2">
+                name="WSHttpBinding_IAdmin">
                 <identity>
                     <dns value="localhost" />
