Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/HeuristicLab.Clients.OKB-3.3.csproj
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/HeuristicLab.Clients.OKB-3.3.csproj	(revision 5298)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/HeuristicLab.Clients.OKB-3.3.csproj	(revision 5299)
@@ -109,4 +109,5 @@
     <Compile Include="ServiceClients\AlgorithmParameter.cs" />
     <Compile Include="ServiceClients\AndFilter.cs" />
+    <Compile Include="ServiceClients\OKBServiceClients.cs" />
     <Compile Include="ServiceClients\SetComparisonStringAvailableValuesFilter.cs" />
     <Compile Include="ServiceClients\NameSetComparisonStringAvailableValuesFilter.cs" />
@@ -125,5 +126,4 @@
     <Compile Include="ServiceClients\Result.cs" />
     <Compile Include="ServiceClients\ProblemParameter.cs" />
-    <Compile Include="ServiceClients\OKBServiceClient.cs" />
     <Compile Include="ServiceClients\ProblemData.cs" />
     <Compile Include="ServiceClients\Problem.cs" />
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/OKBClient.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/OKBClient.cs	(revision 5298)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/OKBClient.cs	(revision 5299)
@@ -103,11 +103,11 @@
       var call = new Func<Exception>(delegate() {
         try {
-          platforms.AddRange(CallAdminService<List<Platform>>(s => s.GetPlatforms()).OrderBy(x => x.Name));
-          dataTypes.AddRange(CallAdminService<List<DataType>>(s => s.GetDataTypes()).OrderBy(x => x.Name));
+          platforms.AddRange(CallAdministrationService<List<Platform>>(s => s.GetPlatforms()).OrderBy(x => x.Name));
+          dataTypes.AddRange(CallAdministrationService<List<DataType>>(s => s.GetDataTypes()).OrderBy(x => x.Name));
           users = CallAuthenticationService<List<User>>(s => s.GetUsers()).OrderBy(x => x.Name);
-          algorithmClasses.AddRange(CallAdminService<List<AlgorithmClass>>(s => s.GetAlgorithmClasses()).OrderBy(x => x.Name));
-          algorithms.AddRange(CallAdminService<List<Algorithm>>(s => s.GetAlgorithms()).OrderBy(x => x.Name));
-          problemClasses.AddRange(CallAdminService<List<ProblemClass>>(s => s.GetProblemClasses()).OrderBy(x => x.Name));
-          problems.AddRange(CallAdminService<List<Problem>>(s => s.GetProblems()).OrderBy(x => x.Name));
+          algorithmClasses.AddRange(CallAdministrationService<List<AlgorithmClass>>(s => s.GetAlgorithmClasses()).OrderBy(x => x.Name));
+          algorithms.AddRange(CallAdministrationService<List<Algorithm>>(s => s.GetAlgorithms()).OrderBy(x => x.Name));
+          problemClasses.AddRange(CallAdministrationService<List<ProblemClass>>(s => s.GetProblemClasses()).OrderBy(x => x.Name));
+          problems.AddRange(CallAdministrationService<List<Problem>>(s => s.GetProblems()).OrderBy(x => x.Name));
           return null;
         }
@@ -129,48 +129,48 @@
         if (item.Id == 0) {
           if (item is Platform)
-            item.Id = CallAdminService<long>(s => s.AddPlatform((Platform)item));
+            item.Id = CallAdministrationService<long>(s => s.AddPlatform((Platform)item));
           else if (item is DataType)
-            item.Id = CallAdminService<long>(s => s.AddDataType((DataType)item));
+            item.Id = CallAdministrationService<long>(s => s.AddDataType((DataType)item));
           else if (item is AlgorithmClass)
-            item.Id = CallAdminService<long>(s => s.AddAlgorithmClass((AlgorithmClass)item));
+            item.Id = CallAdministrationService<long>(s => s.AddAlgorithmClass((AlgorithmClass)item));
           else if (item is Algorithm)
-            item.Id = CallAdminService<long>(s => s.AddAlgorithm((Algorithm)item));
+            item.Id = CallAdministrationService<long>(s => s.AddAlgorithm((Algorithm)item));
           else if (item is AlgorithmParameter)
-            item.Id = CallAdminService<long>(s => s.AddAlgorithmParameter((AlgorithmParameter)item));
+            item.Id = CallAdministrationService<long>(s => s.AddAlgorithmParameter((AlgorithmParameter)item));
           else if (item is ProblemClass)
-            item.Id = CallAdminService<long>(s => s.AddProblemClass((ProblemClass)item));
+            item.Id = CallAdministrationService<long>(s => s.AddProblemClass((ProblemClass)item));
           else if (item is Problem)
-            item.Id = CallAdminService<long>(s => s.AddProblem((Problem)item));
+            item.Id = CallAdministrationService<long>(s => s.AddProblem((Problem)item));
           else if (item is ProblemParameter)
-            item.Id = CallAdminService<long>(s => s.AddProblemParameter((ProblemParameter)item));
+            item.Id = CallAdministrationService<long>(s => s.AddProblemParameter((ProblemParameter)item));
           else if (item is Result)
-            item.Id = CallAdminService<long>(s => s.AddResult((Result)item));
+            item.Id = CallAdministrationService<long>(s => s.AddResult((Result)item));
           else if (item is Experiment)
-            item.Id = CallAdminService<long>(s => s.AddExperiment((Experiment)item));
+            item.Id = CallAdministrationService<long>(s => s.AddExperiment((Experiment)item));
           else if (item is Run)
-            item.Id = CallAdminService<long>(s => s.AddRun((Run)item));
+            item.Id = CallAdministrationService<long>(s => s.AddRun((Run)item));
         } else {
           if (item is Platform)
-            CallAdminService(s => s.UpdatePlatform((Platform)item));
+            CallAdministrationService(s => s.UpdatePlatform((Platform)item));
           else if (item is DataType)
-            CallAdminService(s => s.UpdateDataType((DataType)item));
+            CallAdministrationService(s => s.UpdateDataType((DataType)item));
           else if (item is AlgorithmClass)
-            CallAdminService(s => s.UpdateAlgorithmClass((AlgorithmClass)item));
+            CallAdministrationService(s => s.UpdateAlgorithmClass((AlgorithmClass)item));
           else if (item is Algorithm)
-            CallAdminService(s => s.UpdateAlgorithm((Algorithm)item));
+            CallAdministrationService(s => s.UpdateAlgorithm((Algorithm)item));
           else if (item is AlgorithmParameter)
-            CallAdminService(s => s.UpdateAlgorithmParameter((AlgorithmParameter)item));
+            CallAdministrationService(s => s.UpdateAlgorithmParameter((AlgorithmParameter)item));
           else if (item is ProblemClass)
-            CallAdminService(s => s.UpdateProblemClass((ProblemClass)item));
+            CallAdministrationService(s => s.UpdateProblemClass((ProblemClass)item));
           else if (item is Problem)
-            CallAdminService(s => s.UpdateProblem((Problem)item));
+            CallAdministrationService(s => s.UpdateProblem((Problem)item));
           else if (item is ProblemParameter)
-            CallAdminService(s => s.UpdateProblemParameter((ProblemParameter)item));
+            CallAdministrationService(s => s.UpdateProblemParameter((ProblemParameter)item));
           else if (item is Result)
-            CallAdminService(s => s.UpdateResult((Result)item));
+            CallAdministrationService(s => s.UpdateResult((Result)item));
           else if (item is Experiment)
-            item.Id = CallAdminService<long>(s => s.AddExperiment((Experiment)item));
+            item.Id = CallAdministrationService<long>(s => s.AddExperiment((Experiment)item));
           else if (item is Run)
-            item.Id = CallAdminService<long>(s => s.AddRun((Run)item));
+            item.Id = CallAdministrationService<long>(s => s.AddRun((Run)item));
         }
         return true;
@@ -213,5 +213,5 @@
     public List<Guid> GetAlgorithmUsers(long algorithmId) {
       try {
-        return CallAdminService<List<Guid>>(s => s.GetAlgorithmUsers(algorithmId));
+        return CallAdministrationService<List<Guid>>(s => s.GetAlgorithmUsers(algorithmId));
       }
       catch (Exception ex) {
@@ -222,5 +222,5 @@
     public bool UpdateAlgorithmUsers(long algorithmId, List<Guid> users) {
       try {
-        CallAdminService(s => s.UpdateAlgorithmUsers(algorithmId, users));
+        CallAdministrationService(s => s.UpdateAlgorithmUsers(algorithmId, users));
         return true;
       }
@@ -232,5 +232,5 @@
     public AlgorithmData GetAlgorithmData(long algorithmId) {
       try {
-        return CallAdminService<AlgorithmData>(s => s.GetAlgorithmData(algorithmId));
+        return CallAdministrationService<AlgorithmData>(s => s.GetAlgorithmData(algorithmId));
       }
       catch (Exception ex) {
@@ -241,5 +241,5 @@
     public bool UpdateAlgorithmData(AlgorithmData algorithmData) {
       try {
-        CallAdminService(s => s.UpdateAlgorithmData(algorithmData));
+        CallAdministrationService(s => s.UpdateAlgorithmData(algorithmData));
         return true;
       }
@@ -254,5 +254,5 @@
     public List<Guid> GetProblemUsers(long problemId) {
       try {
-        return CallAdminService<List<Guid>>(s => s.GetProblemUsers(problemId));
+        return CallAdministrationService<List<Guid>>(s => s.GetProblemUsers(problemId));
       }
       catch (Exception ex) {
@@ -263,5 +263,5 @@
     public bool UpdateProblemUsers(long problemId, List<Guid> users) {
       try {
-        CallAdminService(s => s.UpdateProblemUsers(problemId, users));
+        CallAdministrationService(s => s.UpdateProblemUsers(problemId, users));
         return true;
       }
@@ -273,5 +273,5 @@
     public ProblemData GetProblemData(long problemId) {
       try {
-        return CallAdminService<ProblemData>(s => s.GetProblemData(problemId));
+        return CallAdministrationService<ProblemData>(s => s.GetProblemData(problemId));
       }
       catch (Exception ex) {
@@ -282,5 +282,5 @@
     public bool UpdateProblemData(ProblemData problemData) {
       try {
-        CallAdminService(s => s.UpdateProblemData(problemData));
+        CallAdministrationService(s => s.UpdateProblemData(problemData));
         return true;
       }
@@ -295,5 +295,5 @@
     public AlgorithmParameter GetAlgorithmParameter(long id) {
       try {
-        return CallAdminService<AlgorithmParameter>(s => s.GetAlgorithmParameter(id));
+        return CallAdministrationService<AlgorithmParameter>(s => s.GetAlgorithmParameter(id));
       }
       catch (Exception ex) {
@@ -305,5 +305,5 @@
       try {
         ItemCollection<AlgorithmParameter> parameters = new ItemCollection<AlgorithmParameter>();
-        parameters.AddRange(CallAdminService<List<AlgorithmParameter>>(s => s.GetAlgorithmParameters(algorithmId)).OrderBy(x => x.Name));
+        parameters.AddRange(CallAdministrationService<List<AlgorithmParameter>>(s => s.GetAlgorithmParameters(algorithmId)).OrderBy(x => x.Name));
         return parameters;
       }
@@ -318,5 +318,5 @@
     public ProblemParameter GetProblemParameter(long id) {
       try {
-        return CallAdminService<ProblemParameter>(s => s.GetProblemParameter(id));
+        return CallAdministrationService<ProblemParameter>(s => s.GetProblemParameter(id));
       }
       catch (Exception ex) {
@@ -328,5 +328,5 @@
       try {
         ItemCollection<ProblemParameter> parameters = new ItemCollection<ProblemParameter>();
-        parameters.AddRange(CallAdminService<List<ProblemParameter>>(s => s.GetProblemParameters(problemId)).OrderBy(x => x.Name));
+        parameters.AddRange(CallAdministrationService<List<ProblemParameter>>(s => s.GetProblemParameters(problemId)).OrderBy(x => x.Name));
         return parameters;
       }
@@ -341,5 +341,5 @@
     public Result GetResult(long id) {
       try {
-        return CallAdminService<Result>(s => s.GetResult(id));
+        return CallAdministrationService<Result>(s => s.GetResult(id));
       }
       catch (Exception ex) {
@@ -351,5 +351,5 @@
       try {
         ItemCollection<Result> results = new ItemCollection<Result>();
-        results.AddRange(CallAdminService<List<Result>>(s => s.GetResults(algorithmId)).OrderBy(x => x.Name));
+        results.AddRange(CallAdministrationService<List<Result>>(s => s.GetResults(algorithmId)).OrderBy(x => x.Name));
         return results;
       }
@@ -364,5 +364,5 @@
     public Experiment GetExperiment(long id) {
       try {
-        return CallAdminService<Experiment>(s => s.GetExperiment(id));
+        return CallAdministrationService<Experiment>(s => s.GetExperiment(id));
       }
       catch (Exception ex) {
@@ -374,5 +374,5 @@
       try {
         ItemCollection<Experiment> experiments = new ItemCollection<Experiment>();
-        experiments.AddRange(CallAdminService<List<Experiment>>(s => s.GetExperiments(algorithmId, problemId)));
+        experiments.AddRange(CallAdministrationService<List<Experiment>>(s => s.GetExperiments(algorithmId, problemId)));
         experiments.ItemsRemoved += new CollectionItemsChangedEventHandler<Experiment>(experiments_ItemsRemoved);
         return experiments;
@@ -389,5 +389,5 @@
       try {
         ItemCollection<Run> runs = new ItemCollection<Run>();
-        runs.AddRange(CallAdminService<List<Run>>(s => s.GetRuns(experimentId)).OrderByDescending(x => x.CreatedDate));
+        runs.AddRange(CallAdministrationService<List<Run>>(s => s.GetRuns(experimentId)).OrderByDescending(x => x.CreatedDate));
         runs.ItemsRemoved += new CollectionItemsChangedEventHandler<Run>(runs_ItemsRemoved);
         return runs;
@@ -692,5 +692,5 @@
       if (refresh || (filters == null)) {
         try {
-          filters = CallAdminService<List<Filter>>(s => s.GetFilters());
+          filters = CallQueryService<List<Filter>>(s => s.GetFilters());
         }
         catch (Exception ex) {
@@ -706,5 +706,5 @@
     public long QueryNumberOfRuns(Filter filter) {
       try {
-        return CallAdminService<long>(x => x.QueryNumberOfRuns(filter));
+        return CallQueryService<long>(x => x.QueryNumberOfRuns(filter));
       }
       catch (Exception ex) {
@@ -716,5 +716,5 @@
       try {
         ItemCollection<Run> runs = new ItemCollection<Run>();
-        runs.AddRange(CallAdminService<List<Run>>(s => s.QueryRuns(filter)).OrderByDescending(x => x.CreatedDate));
+        runs.AddRange(CallQueryService<List<Run>>(s => s.QueryRuns(filter)).OrderByDescending(x => x.CreatedDate));
         return runs;
       }
@@ -741,5 +741,5 @@
       try {
         foreach (Platform p in e.Items)
-          CallAdminService(s => s.DeletePlatform(p.Id));
+          CallAdministrationService(s => s.DeletePlatform(p.Id));
       }
       catch (Exception ex) {
@@ -750,5 +750,5 @@
       try {
         foreach (DataType d in e.Items)
-          CallAdminService(s => s.DeleteDataType(d.Id));
+          CallAdministrationService(s => s.DeleteDataType(d.Id));
       }
       catch (Exception ex) {
@@ -759,5 +759,5 @@
       try {
         foreach (AlgorithmClass a in e.Items)
-          CallAdminService(s => s.DeleteAlgorithmClass(a.Id));
+          CallAdministrationService(s => s.DeleteAlgorithmClass(a.Id));
       }
       catch (Exception ex) {
@@ -768,5 +768,5 @@
       try {
         foreach (Algorithm a in e.Items)
-          CallAdminService(s => s.DeleteAlgorithm(a.Id));
+          CallAdministrationService(s => s.DeleteAlgorithm(a.Id));
       }
       catch (Exception ex) {
@@ -777,5 +777,5 @@
       try {
         foreach (ProblemClass p in e.Items)
-          CallAdminService(s => s.DeleteProblemClass(p.Id));
+          CallAdministrationService(s => s.DeleteProblemClass(p.Id));
       }
       catch (Exception ex) {
@@ -786,5 +786,5 @@
       try {
         foreach (Problem p in e.Items)
-          CallAdminService(s => s.DeleteProblem(p.Id));
+          CallAdministrationService(s => s.DeleteProblem(p.Id));
       }
       catch (Exception ex) {
@@ -795,5 +795,5 @@
       try {
         foreach (Experiment exp in e.Items)
-          CallAdminService(s => s.DeleteExperiment(exp.Id));
+          CallAdministrationService(s => s.DeleteExperiment(exp.Id));
       }
       catch (Exception ex) {
@@ -804,5 +804,5 @@
       try {
         foreach (Run r in e.Items)
-          CallAdminService(s => s.DeleteRun(r.Id));
+          CallAdministrationService(s => s.DeleteRun(r.Id));
       }
       catch (Exception ex) {
@@ -813,6 +813,6 @@
 
     #region Helpers
-    private void CallAdminService(Action<IOKBService> call) {
-      OKBServiceClient client = ClientFactory.CreateClient<OKBServiceClient, IOKBService>();
+    private void CallAdministrationService(Action<IAdministrationService> call) {
+      AdministrationServiceClient client = ClientFactory.CreateClient<AdministrationServiceClient, IAdministrationService>();
       try {
         call(client);
@@ -827,6 +827,6 @@
       }
     }
-    private T CallAdminService<T>(Func<IOKBService, T> call) {
-      OKBServiceClient client = ClientFactory.CreateClient<OKBServiceClient, IOKBService>();
+    private T CallAdministrationService<T>(Func<IAdministrationService, T> call) {
+      AdministrationServiceClient client = ClientFactory.CreateClient<AdministrationServiceClient, IAdministrationService>();
       try {
         return call(client);
@@ -841,4 +841,32 @@
       }
     }
+    private void CallQueryService(Action<IQueryService> call) {
+      QueryServiceClient client = ClientFactory.CreateClient<QueryServiceClient, IQueryService>();
+      try {
+        call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
+    private T CallQueryService<T>(Func<IQueryService, T> call) {
+      QueryServiceClient client = ClientFactory.CreateClient<QueryServiceClient, IQueryService>();
+      try {
+        return call(client);
+      }
+      finally {
+        try {
+          client.Close();
+        }
+        catch (Exception) {
+          client.Abort();
+        }
+      }
+    }
     private T CallAuthenticationService<T>(Func<IAuthenticationService, T> call) {
       AuthenticationServiceClient client = ClientFactory.CreateClient<AuthenticationServiceClient, IAuthenticationService>();
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/ServiceClients/GenerateServiceClients.cmd
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/ServiceClients/GenerateServiceClients.cmd	(revision 5298)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/ServiceClients/GenerateServiceClients.cmd	(revision 5299)
@@ -3,5 +3,5 @@
 echo.
 echo *******************************************************************************************
-echo Generating OKBService client
+echo Generating OKB service clients
 echo.
 
@@ -9,6 +9,7 @@
 
 svcutil.exe ^
-  http://localhost:8732/Design_Time_Addresses/OKB-3.3/OKBService/mex ^
-  /out:OKBServiceClient ^
+  http://localhost:8732/Design_Time_Addresses/OKB-3.3/AdministrationService/mex ^
+  http://localhost:8732/Design_Time_Addresses/OKB-3.3/QueryService/mex ^
+  /out:OKBServiceClients ^
   /namespace:*,HeuristicLab.Clients.OKB ^
   /collectionType:System.Collections.Generic.List`1 ^
@@ -27,5 +28,5 @@
 echo ---------------------------------------------------------------------------------------
 echo.
-echo Generation of OKBService client finished.
+echo Generation of OKB service clients finished.
 echo *******************************************************************************************
 echo.
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/ServiceClients/OKBServiceClient.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/ServiceClients/OKBServiceClient.cs	(revision 5298)
+++ 	(revision )
@@ -1,2258 +1,0 @@
-﻿//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.1
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace HeuristicLab.Clients.OKB {
-
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "OKBItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Experiment))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Run))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.DataType))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NamedOKBItem))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemClass))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Problem))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Platform))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmClass))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Algorithm))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Result))]
-  public partial class OKBItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private long IdField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long Id {
-      get {
-        return this.IdField;
-      }
-      set {
-        if ((this.IdField.Equals(value) != true)) {
-          this.IdField = value;
-          this.RaisePropertyChanged("Id");
-        }
-      }
-    }
-
-    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Experiment", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class Experiment : HeuristicLab.Clients.OKB.OKBItem {
-
-    private long AlgorithmIdField;
-
-    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmParameterValue> AlgorithmParameterValuesField;
-
-    private long ProblemIdField;
-
-    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemParameterValue> ProblemParameterValuesField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long AlgorithmId {
-      get {
-        return this.AlgorithmIdField;
-      }
-      set {
-        if ((this.AlgorithmIdField.Equals(value) != true)) {
-          this.AlgorithmIdField = value;
-          this.RaisePropertyChanged("AlgorithmId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmParameterValue> AlgorithmParameterValues {
-      get {
-        return this.AlgorithmParameterValuesField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.AlgorithmParameterValuesField, value) != true)) {
-          this.AlgorithmParameterValuesField = value;
-          this.RaisePropertyChanged("AlgorithmParameterValues");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ProblemId {
-      get {
-        return this.ProblemIdField;
-      }
-      set {
-        if ((this.ProblemIdField.Equals(value) != true)) {
-          this.ProblemIdField = value;
-          this.RaisePropertyChanged("ProblemId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemParameterValue> ProblemParameterValues {
-      get {
-        return this.ProblemParameterValuesField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ProblemParameterValuesField, value) != true)) {
-          this.ProblemParameterValuesField = value;
-          this.RaisePropertyChanged("ProblemParameterValues");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Run", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class Run : HeuristicLab.Clients.OKB.OKBItem {
-
-    private System.Guid ClientIdField;
-
-    private System.DateTime CreatedDateField;
-
-    private long ExperimentIdField;
-
-    private long RandomSeedField;
-
-    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.ResultValue> ResultValuesField;
-
-    private System.Guid UserIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid ClientId {
-      get {
-        return this.ClientIdField;
-      }
-      set {
-        if ((this.ClientIdField.Equals(value) != true)) {
-          this.ClientIdField = value;
-          this.RaisePropertyChanged("ClientId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime CreatedDate {
-      get {
-        return this.CreatedDateField;
-      }
-      set {
-        if ((this.CreatedDateField.Equals(value) != true)) {
-          this.CreatedDateField = value;
-          this.RaisePropertyChanged("CreatedDate");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ExperimentId {
-      get {
-        return this.ExperimentIdField;
-      }
-      set {
-        if ((this.ExperimentIdField.Equals(value) != true)) {
-          this.ExperimentIdField = value;
-          this.RaisePropertyChanged("ExperimentId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long RandomSeed {
-      get {
-        return this.RandomSeedField;
-      }
-      set {
-        if ((this.RandomSeedField.Equals(value) != true)) {
-          this.RandomSeedField = value;
-          this.RaisePropertyChanged("RandomSeed");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.ResultValue> ResultValues {
-      get {
-        return this.ResultValuesField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ResultValuesField, value) != true)) {
-          this.ResultValuesField = value;
-          this.RaisePropertyChanged("ResultValues");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid UserId {
-      get {
-        return this.UserIdField;
-      }
-      set {
-        if ((this.UserIdField.Equals(value) != true)) {
-          this.UserIdField = value;
-          this.RaisePropertyChanged("UserId");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "DataType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class DataType : HeuristicLab.Clients.OKB.OKBItem {
-
-    private string NameField;
-
-    private long PlatformIdField;
-
-    private string SqlNameField;
-
-    private string TypeNameField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Name {
-      get {
-        return this.NameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.NameField, value) != true)) {
-          this.NameField = value;
-          this.RaisePropertyChanged("Name");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long PlatformId {
-      get {
-        return this.PlatformIdField;
-      }
-      set {
-        if ((this.PlatformIdField.Equals(value) != true)) {
-          this.PlatformIdField = value;
-          this.RaisePropertyChanged("PlatformId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string SqlName {
-      get {
-        return this.SqlNameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.SqlNameField, value) != true)) {
-          this.SqlNameField = value;
-          this.RaisePropertyChanged("SqlName");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string TypeName {
-      get {
-        return this.TypeNameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.TypeNameField, value) != true)) {
-          this.TypeNameField = value;
-          this.RaisePropertyChanged("TypeName");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "NamedOKBItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemClass))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Problem))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Platform))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmClass))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Algorithm))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Result))]
-  public partial class NamedOKBItem : HeuristicLab.Clients.OKB.OKBItem {
-
-    private string DescriptionField;
-
-    private string NameField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Description {
-      get {
-        return this.DescriptionField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.DescriptionField, value) != true)) {
-          this.DescriptionField = value;
-          this.RaisePropertyChanged("Description");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Name {
-      get {
-        return this.NameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.NameField, value) != true)) {
-          this.NameField = value;
-          this.RaisePropertyChanged("Name");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class AlgorithmParameter : HeuristicLab.Clients.OKB.NamedOKBItem {
-
-    private long AlgorithmIdField;
-
-    private string AliasField;
-
-    private long DataTypeIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long AlgorithmId {
-      get {
-        return this.AlgorithmIdField;
-      }
-      set {
-        if ((this.AlgorithmIdField.Equals(value) != true)) {
-          this.AlgorithmIdField = value;
-          this.RaisePropertyChanged("AlgorithmId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Alias {
-      get {
-        return this.AliasField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.AliasField, value) != true)) {
-          this.AliasField = value;
-          this.RaisePropertyChanged("Alias");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long DataTypeId {
-      get {
-        return this.DataTypeIdField;
-      }
-      set {
-        if ((this.DataTypeIdField.Equals(value) != true)) {
-          this.DataTypeIdField = value;
-          this.RaisePropertyChanged("DataTypeId");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemClass", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ProblemClass : HeuristicLab.Clients.OKB.NamedOKBItem {
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Problem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class Problem : HeuristicLab.Clients.OKB.NamedOKBItem {
-
-    private long PlatformIdField;
-
-    private long ProblemClassIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long PlatformId {
-      get {
-        return this.PlatformIdField;
-      }
-      set {
-        if ((this.PlatformIdField.Equals(value) != true)) {
-          this.PlatformIdField = value;
-          this.RaisePropertyChanged("PlatformId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ProblemClassId {
-      get {
-        return this.ProblemClassIdField;
-      }
-      set {
-        if ((this.ProblemClassIdField.Equals(value) != true)) {
-          this.ProblemClassIdField = value;
-          this.RaisePropertyChanged("ProblemClassId");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ProblemParameter : HeuristicLab.Clients.OKB.NamedOKBItem {
-
-    private string AliasField;
-
-    private long DataTypeIdField;
-
-    private long ProblemIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Alias {
-      get {
-        return this.AliasField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.AliasField, value) != true)) {
-          this.AliasField = value;
-          this.RaisePropertyChanged("Alias");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long DataTypeId {
-      get {
-        return this.DataTypeIdField;
-      }
-      set {
-        if ((this.DataTypeIdField.Equals(value) != true)) {
-          this.DataTypeIdField = value;
-          this.RaisePropertyChanged("DataTypeId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ProblemId {
-      get {
-        return this.ProblemIdField;
-      }
-      set {
-        if ((this.ProblemIdField.Equals(value) != true)) {
-          this.ProblemIdField = value;
-          this.RaisePropertyChanged("ProblemId");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Platform", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class Platform : HeuristicLab.Clients.OKB.NamedOKBItem {
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmClass", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class AlgorithmClass : HeuristicLab.Clients.OKB.NamedOKBItem {
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Algorithm", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class Algorithm : HeuristicLab.Clients.OKB.NamedOKBItem {
-
-    private long AlgorithmClassIdField;
-
-    private long PlatformIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long AlgorithmClassId {
-      get {
-        return this.AlgorithmClassIdField;
-      }
-      set {
-        if ((this.AlgorithmClassIdField.Equals(value) != true)) {
-          this.AlgorithmClassIdField = value;
-          this.RaisePropertyChanged("AlgorithmClassId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long PlatformId {
-      get {
-        return this.PlatformIdField;
-      }
-      set {
-        if ((this.PlatformIdField.Equals(value) != true)) {
-          this.PlatformIdField = value;
-          this.RaisePropertyChanged("PlatformId");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Result", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class Result : HeuristicLab.Clients.OKB.NamedOKBItem {
-
-    private long AlgorithmIdField;
-
-    private string AliasField;
-
-    private long DataTypeIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long AlgorithmId {
-      get {
-        return this.AlgorithmIdField;
-      }
-      set {
-        if ((this.AlgorithmIdField.Equals(value) != true)) {
-          this.AlgorithmIdField = value;
-          this.RaisePropertyChanged("AlgorithmId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Alias {
-      get {
-        return this.AliasField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.AliasField, value) != true)) {
-          this.AliasField = value;
-          this.RaisePropertyChanged("Alias");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long DataTypeId {
-      get {
-        return this.DataTypeIdField;
-      }
-      set {
-        if ((this.DataTypeIdField.Equals(value) != true)) {
-          this.DataTypeIdField = value;
-          this.RaisePropertyChanged("DataTypeId");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterBoolValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterBlobValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterStringValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterFloatValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterIntValue))]
-  public partial class AlgorithmParameterValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private long AlgorithmParameterIdField;
-
-    private long DataTypeIdField;
-
-    private long ExperimentIdField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long AlgorithmParameterId {
-      get {
-        return this.AlgorithmParameterIdField;
-      }
-      set {
-        if ((this.AlgorithmParameterIdField.Equals(value) != true)) {
-          this.AlgorithmParameterIdField = value;
-          this.RaisePropertyChanged("AlgorithmParameterId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long DataTypeId {
-      get {
-        return this.DataTypeIdField;
-      }
-      set {
-        if ((this.DataTypeIdField.Equals(value) != true)) {
-          this.DataTypeIdField = value;
-          this.RaisePropertyChanged("DataTypeId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ExperimentId {
-      get {
-        return this.ExperimentIdField;
-      }
-      set {
-        if ((this.ExperimentIdField.Equals(value) != true)) {
-          this.ExperimentIdField = value;
-          this.RaisePropertyChanged("ExperimentId");
-        }
-      }
-    }
-
-    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-    protected void RaisePropertyChanged(string propertyName) {
-      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-      if ((propertyChanged != null)) {
-        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterBoolValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterBlobValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterFloatValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterStringValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterIntValue))]
-  public partial class ProblemParameterValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private long DataTypeIdField;
-
-    private long ExperimentIdField;
-
-    private long ProblemParameterIdField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long DataTypeId {
-      get {
-        return this.DataTypeIdField;
-      }
-      set {
-        if ((this.DataTypeIdField.Equals(value) != true)) {
-          this.DataTypeIdField = value;
-          this.RaisePropertyChanged("DataTypeId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ExperimentId {
-      get {
-        return this.ExperimentIdField;
-      }
-      set {
-        if ((this.ExperimentIdField.Equals(value) != true)) {
-          this.ExperimentIdField = value;
-          this.RaisePropertyChanged("ExperimentId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ProblemParameterId {
-      get {
-        return this.ProblemParameterIdField;
-      }
-      set {
-        if ((this.ProblemParameterIdField.Equals(value) != true)) {
-          this.ProblemParameterIdField = value;
-          this.RaisePropertyChanged("ProblemParameterId");
-        }
-      }
-    }
-
-    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-    protected void RaisePropertyChanged(string propertyName) {
-      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-      if ((propertyChanged != null)) {
-        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class AlgorithmParameterBoolValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
-
-    private bool ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class AlgorithmParameterBlobValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
-
-    private byte[] ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public byte[] Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class AlgorithmParameterStringValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
-
-    private string ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class AlgorithmParameterFloatValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
-
-    private double ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public double Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class AlgorithmParameterIntValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
-
-    private long ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ProblemParameterBoolValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
-
-    private bool ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ProblemParameterBlobValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
-
-    private byte[] ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public byte[] Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ProblemParameterFloatValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
-
-    private double ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public double Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ProblemParameterStringValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
-
-    private string ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ProblemParameterIntValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
-
-    private long ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultStringValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultFloatValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultBlobValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultBoolValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultIntValue))]
-  public partial class ResultValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private long DataTypeIdField;
-
-    private long ResultIdField;
-
-    private long RunIdField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long DataTypeId {
-      get {
-        return this.DataTypeIdField;
-      }
-      set {
-        if ((this.DataTypeIdField.Equals(value) != true)) {
-          this.DataTypeIdField = value;
-          this.RaisePropertyChanged("DataTypeId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ResultId {
-      get {
-        return this.ResultIdField;
-      }
-      set {
-        if ((this.ResultIdField.Equals(value) != true)) {
-          this.ResultIdField = value;
-          this.RaisePropertyChanged("ResultId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long RunId {
-      get {
-        return this.RunIdField;
-      }
-      set {
-        if ((this.RunIdField.Equals(value) != true)) {
-          this.RunIdField = value;
-          this.RaisePropertyChanged("RunId");
-        }
-      }
-    }
-
-    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-    protected void RaisePropertyChanged(string propertyName) {
-      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-      if ((propertyChanged != null)) {
-        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ResultStringValue : HeuristicLab.Clients.OKB.ResultValue {
-
-    private string ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ResultFloatValue : HeuristicLab.Clients.OKB.ResultValue {
-
-    private double ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public double Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ResultBlobValue : HeuristicLab.Clients.OKB.ResultValue {
-
-    private byte[] ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public byte[] Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ResultBoolValue : HeuristicLab.Clients.OKB.ResultValue {
-
-    private bool ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ResultIntValue : HeuristicLab.Clients.OKB.ResultValue {
-
-    private long ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Filter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringAvailableValuesFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringAvailableValuesFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.EqualityComparisonFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameEqualityComparisonByteArrayFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameEqualityComparisonBoolFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonDoubleFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonDateTimeFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonLongFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonLongFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.CombinedFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AndFilter))]
-  public partial class Filter : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private string FilterTypeNameField;
-
-    private string LabelField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string FilterTypeName {
-      get {
-        return this.FilterTypeNameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.FilterTypeNameField, value) != true)) {
-          this.FilterTypeNameField = value;
-          this.RaisePropertyChanged("FilterTypeName");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Label {
-      get {
-        return this.LabelField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.LabelField, value) != true)) {
-          this.LabelField = value;
-          this.RaisePropertyChanged("Label");
-        }
-      }
-    }
-
-    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-    protected void RaisePropertyChanged(string propertyName) {
-      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-      if ((propertyChanged != null)) {
-        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "SetComparisonFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringAvailableValuesFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringAvailableValuesFilter))]
-  public partial class SetComparisonFilter : HeuristicLab.Clients.OKB.Filter {
-
-    private HeuristicLab.Clients.OKB.SetComparison ComparisonField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.OKB.SetComparison Comparison {
-      get {
-        return this.ComparisonField;
-      }
-      set {
-        if ((this.ComparisonField.Equals(value) != true)) {
-          this.ComparisonField = value;
-          this.RaisePropertyChanged("Comparison");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "NameSetComparisonStringFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringAvailableValuesFilter))]
-  public partial class NameSetComparisonStringFilter : HeuristicLab.Clients.OKB.SetComparisonFilter {
-
-    private string NameField;
-
-    private string ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Name {
-      get {
-        return this.NameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.NameField, value) != true)) {
-          this.NameField = value;
-          this.RaisePropertyChanged("Name");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "NameSetComparisonStringAvailableValuesFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class NameSetComparisonStringAvailableValuesFilter : HeuristicLab.Clients.OKB.NameSetComparisonStringFilter {
-
-    private System.Collections.Generic.List<string> AvailableValuesField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<string> AvailableValues {
-      get {
-        return this.AvailableValuesField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.AvailableValuesField, value) != true)) {
-          this.AvailableValuesField = value;
-          this.RaisePropertyChanged("AvailableValues");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "SetComparisonStringFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringAvailableValuesFilter))]
-  public partial class SetComparisonStringFilter : HeuristicLab.Clients.OKB.SetComparisonFilter {
-
-    private string ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "SetComparisonStringAvailableValuesFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class SetComparisonStringAvailableValuesFilter : HeuristicLab.Clients.OKB.SetComparisonStringFilter {
-
-    private System.Collections.Generic.List<string> AvailableValuesField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<string> AvailableValues {
-      get {
-        return this.AvailableValuesField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.AvailableValuesField, value) != true)) {
-          this.AvailableValuesField = value;
-          this.RaisePropertyChanged("AvailableValues");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "EqualityComparisonFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameEqualityComparisonByteArrayFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameEqualityComparisonBoolFilter))]
-  public partial class EqualityComparisonFilter : HeuristicLab.Clients.OKB.Filter {
-
-    private HeuristicLab.Clients.OKB.EqualityComparison ComparisonField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.OKB.EqualityComparison Comparison {
-      get {
-        return this.ComparisonField;
-      }
-      set {
-        if ((this.ComparisonField.Equals(value) != true)) {
-          this.ComparisonField = value;
-          this.RaisePropertyChanged("Comparison");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "NameEqualityComparisonByteArrayFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class NameEqualityComparisonByteArrayFilter : HeuristicLab.Clients.OKB.EqualityComparisonFilter {
-
-    private string NameField;
-
-    private byte[] ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Name {
-      get {
-        return this.NameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.NameField, value) != true)) {
-          this.NameField = value;
-          this.RaisePropertyChanged("Name");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public byte[] Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "NameEqualityComparisonBoolFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class NameEqualityComparisonBoolFilter : HeuristicLab.Clients.OKB.EqualityComparisonFilter {
-
-    private string NameField;
-
-    private bool ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Name {
-      get {
-        return this.NameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.NameField, value) != true)) {
-          this.NameField = value;
-          this.RaisePropertyChanged("Name");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparisonFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonDoubleFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonDateTimeFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonLongFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonLongFilter))]
-  public partial class OrdinalComparisonFilter : HeuristicLab.Clients.OKB.Filter {
-
-    private HeuristicLab.Clients.OKB.OrdinalComparison ComparisonField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.OKB.OrdinalComparison Comparison {
-      get {
-        return this.ComparisonField;
-      }
-      set {
-        if ((this.ComparisonField.Equals(value) != true)) {
-          this.ComparisonField = value;
-          this.RaisePropertyChanged("Comparison");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "NameOrdinalComparisonDoubleFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class NameOrdinalComparisonDoubleFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
-
-    private string NameField;
-
-    private double ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Name {
-      get {
-        return this.NameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.NameField, value) != true)) {
-          this.NameField = value;
-          this.RaisePropertyChanged("Name");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public double Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparisonDateTimeFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class OrdinalComparisonDateTimeFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
-
-    private System.DateTime ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "NameOrdinalComparisonLongFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class NameOrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
-
-    private string NameField;
-
-    private long ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Name {
-      get {
-        return this.NameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.NameField, value) != true)) {
-          this.NameField = value;
-          this.RaisePropertyChanged("Name");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparisonLongFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class OrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
-
-    private long ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long Value {
-      get {
-        return this.ValueField;
-      }
-      set {
-        if ((this.ValueField.Equals(value) != true)) {
-          this.ValueField = value;
-          this.RaisePropertyChanged("Value");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "CombinedFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrFilter))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AndFilter))]
-  public partial class CombinedFilter : HeuristicLab.Clients.OKB.Filter {
-
-    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> FiltersField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> Filters {
-      get {
-        return this.FiltersField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.FiltersField, value) != true)) {
-          this.FiltersField = value;
-          this.RaisePropertyChanged("Filters");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "OrFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class OrFilter : HeuristicLab.Clients.OKB.CombinedFilter {
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AndFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class AndFilter : HeuristicLab.Clients.OKB.CombinedFilter {
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "SetComparison", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public enum SetComparison : int {
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Equal = 0,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    NotEqual = 1,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Contains = 2,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    NotContains = 3,
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "EqualityComparison", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public enum EqualityComparison : int {
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Equal = 0,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    NotEqual = 1,
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparison", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public enum OrdinalComparison : int {
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Less = 0,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    LessOrEqual = 1,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Equal = 2,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    GreaterOrEqual = 3,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Greater = 4,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    NotEqual = 5,
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemData", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class ProblemData : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private byte[] DataField;
-
-    private long DataTypeIdField;
-
-    private long ProblemIdField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public byte[] Data {
-      get {
-        return this.DataField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.DataField, value) != true)) {
-          this.DataField = value;
-          this.RaisePropertyChanged("Data");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long DataTypeId {
-      get {
-        return this.DataTypeIdField;
-      }
-      set {
-        if ((this.DataTypeIdField.Equals(value) != true)) {
-          this.DataTypeIdField = value;
-          this.RaisePropertyChanged("DataTypeId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ProblemId {
-      get {
-        return this.ProblemIdField;
-      }
-      set {
-        if ((this.ProblemIdField.Equals(value) != true)) {
-          this.ProblemIdField = value;
-          this.RaisePropertyChanged("ProblemId");
-        }
-      }
-    }
-
-    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-    protected void RaisePropertyChanged(string propertyName) {
-      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-      if ((propertyChanged != null)) {
-        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmData", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
-  public partial class AlgorithmData : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private long AlgorithmIdField;
-
-    private byte[] DataField;
-
-    private long DataTypeIdField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long AlgorithmId {
-      get {
-        return this.AlgorithmIdField;
-      }
-      set {
-        if ((this.AlgorithmIdField.Equals(value) != true)) {
-          this.AlgorithmIdField = value;
-          this.RaisePropertyChanged("AlgorithmId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public byte[] Data {
-      get {
-        return this.DataField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.DataField, value) != true)) {
-          this.DataField = value;
-          this.RaisePropertyChanged("Data");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long DataTypeId {
-      get {
-        return this.DataTypeIdField;
-      }
-      set {
-        if ((this.DataTypeIdField.Equals(value) != true)) {
-          this.DataTypeIdField = value;
-          this.RaisePropertyChanged("DataTypeId");
-        }
-      }
-    }
-
-    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-    protected void RaisePropertyChanged(string propertyName) {
-      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-      if ((propertyChanged != null)) {
-        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-      }
-    }
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-  [System.ServiceModel.ServiceContractAttribute(ConfigurationName = "HeuristicLab.Clients.OKB.IOKBService")]
-  public interface IOKBService {
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddResult", ReplyAction = "http://tempuri.org/IOKBService/AddResultResponse")]
-    long AddResult(HeuristicLab.Clients.OKB.Result dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateResult", ReplyAction = "http://tempuri.org/IOKBService/UpdateResultResponse")]
-    void UpdateResult(HeuristicLab.Clients.OKB.Result dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteResult", ReplyAction = "http://tempuri.org/IOKBService/DeleteResultResponse")]
-    void DeleteResult(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetExperiment", ReplyAction = "http://tempuri.org/IOKBService/GetExperimentResponse")]
-    HeuristicLab.Clients.OKB.Experiment GetExperiment(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetExperiments", ReplyAction = "http://tempuri.org/IOKBService/GetExperimentsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Experiment> GetExperiments(long algorithmId, long problemId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddExperiment", ReplyAction = "http://tempuri.org/IOKBService/AddExperimentResponse")]
-    long AddExperiment(HeuristicLab.Clients.OKB.Experiment dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteExperiment", ReplyAction = "http://tempuri.org/IOKBService/DeleteExperimentResponse")]
-    void DeleteExperiment(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetRun", ReplyAction = "http://tempuri.org/IOKBService/GetRunResponse")]
-    HeuristicLab.Clients.OKB.Run GetRun(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetRuns", ReplyAction = "http://tempuri.org/IOKBService/GetRunsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> GetRuns(long experimentId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddRun", ReplyAction = "http://tempuri.org/IOKBService/AddRunResponse")]
-    long AddRun(HeuristicLab.Clients.OKB.Run dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteRun", ReplyAction = "http://tempuri.org/IOKBService/DeleteRunResponse")]
-    void DeleteRun(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetFilters", ReplyAction = "http://tempuri.org/IOKBService/GetFiltersResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> GetFilters();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/QueryNumberOfRuns", ReplyAction = "http://tempuri.org/IOKBService/QueryNumberOfRunsResponse")]
-    long QueryNumberOfRuns(HeuristicLab.Clients.OKB.Filter filter);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/QueryRuns", ReplyAction = "http://tempuri.org/IOKBService/QueryRunsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> QueryRuns(HeuristicLab.Clients.OKB.Filter filter);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetAlgorithmParameters", ReplyAction = "http://tempuri.org/IOKBService/GetAlgorithmParametersResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmParameter> GetAlgorithmParameters(long algorithmId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddAlgorithmParameter", ReplyAction = "http://tempuri.org/IOKBService/AddAlgorithmParameterResponse")]
-    long AddAlgorithmParameter(HeuristicLab.Clients.OKB.AlgorithmParameter dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateAlgorithmParameter", ReplyAction = "http://tempuri.org/IOKBService/UpdateAlgorithmParameterResponse")]
-    void UpdateAlgorithmParameter(HeuristicLab.Clients.OKB.AlgorithmParameter dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteAlgorithmParameter", ReplyAction = "http://tempuri.org/IOKBService/DeleteAlgorithmParameterResponse")]
-    void DeleteAlgorithmParameter(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetProblemClass", ReplyAction = "http://tempuri.org/IOKBService/GetProblemClassResponse")]
-    HeuristicLab.Clients.OKB.ProblemClass GetProblemClass(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetProblemClasses", ReplyAction = "http://tempuri.org/IOKBService/GetProblemClassesResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemClass> GetProblemClasses();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddProblemClass", ReplyAction = "http://tempuri.org/IOKBService/AddProblemClassResponse")]
-    long AddProblemClass(HeuristicLab.Clients.OKB.ProblemClass dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateProblemClass", ReplyAction = "http://tempuri.org/IOKBService/UpdateProblemClassResponse")]
-    void UpdateProblemClass(HeuristicLab.Clients.OKB.ProblemClass dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteProblemClass", ReplyAction = "http://tempuri.org/IOKBService/DeleteProblemClassResponse")]
-    void DeleteProblemClass(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetProblem", ReplyAction = "http://tempuri.org/IOKBService/GetProblemResponse")]
-    HeuristicLab.Clients.OKB.Problem GetProblem(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetProblems", ReplyAction = "http://tempuri.org/IOKBService/GetProblemsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Problem> GetProblems();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddProblem", ReplyAction = "http://tempuri.org/IOKBService/AddProblemResponse")]
-    long AddProblem(HeuristicLab.Clients.OKB.Problem dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateProblem", ReplyAction = "http://tempuri.org/IOKBService/UpdateProblemResponse")]
-    void UpdateProblem(HeuristicLab.Clients.OKB.Problem dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteProblem", ReplyAction = "http://tempuri.org/IOKBService/DeleteProblemResponse")]
-    void DeleteProblem(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetProblemUsers", ReplyAction = "http://tempuri.org/IOKBService/GetProblemUsersResponse")]
-    System.Collections.Generic.List<System.Guid> GetProblemUsers(long problemId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateProblemUsers", ReplyAction = "http://tempuri.org/IOKBService/UpdateProblemUsersResponse")]
-    void UpdateProblemUsers(long problemId, System.Collections.Generic.List<System.Guid> users);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetProblemData", ReplyAction = "http://tempuri.org/IOKBService/GetProblemDataResponse")]
-    HeuristicLab.Clients.OKB.ProblemData GetProblemData(long problemId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateProblemData", ReplyAction = "http://tempuri.org/IOKBService/UpdateProblemDataResponse")]
-    void UpdateProblemData(HeuristicLab.Clients.OKB.ProblemData dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetProblemParameter", ReplyAction = "http://tempuri.org/IOKBService/GetProblemParameterResponse")]
-    HeuristicLab.Clients.OKB.ProblemParameter GetProblemParameter(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetProblemParameters", ReplyAction = "http://tempuri.org/IOKBService/GetProblemParametersResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemParameter> GetProblemParameters(long problemId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddProblemParameter", ReplyAction = "http://tempuri.org/IOKBService/AddProblemParameterResponse")]
-    long AddProblemParameter(HeuristicLab.Clients.OKB.ProblemParameter dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateProblemParameter", ReplyAction = "http://tempuri.org/IOKBService/UpdateProblemParameterResponse")]
-    void UpdateProblemParameter(HeuristicLab.Clients.OKB.ProblemParameter dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteProblemParameter", ReplyAction = "http://tempuri.org/IOKBService/DeleteProblemParameterResponse")]
-    void DeleteProblemParameter(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetResult", ReplyAction = "http://tempuri.org/IOKBService/GetResultResponse")]
-    HeuristicLab.Clients.OKB.Result GetResult(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetResults", ReplyAction = "http://tempuri.org/IOKBService/GetResultsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Result> GetResults(long algorithmId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetPlatform", ReplyAction = "http://tempuri.org/IOKBService/GetPlatformResponse")]
-    HeuristicLab.Clients.OKB.Platform GetPlatform(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetPlatforms", ReplyAction = "http://tempuri.org/IOKBService/GetPlatformsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Platform> GetPlatforms();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddPlatform", ReplyAction = "http://tempuri.org/IOKBService/AddPlatformResponse")]
-    long AddPlatform(HeuristicLab.Clients.OKB.Platform dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdatePlatform", ReplyAction = "http://tempuri.org/IOKBService/UpdatePlatformResponse")]
-    void UpdatePlatform(HeuristicLab.Clients.OKB.Platform dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeletePlatform", ReplyAction = "http://tempuri.org/IOKBService/DeletePlatformResponse")]
-    void DeletePlatform(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetDataType", ReplyAction = "http://tempuri.org/IOKBService/GetDataTypeResponse")]
-    HeuristicLab.Clients.OKB.DataType GetDataType(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetDataTypes", ReplyAction = "http://tempuri.org/IOKBService/GetDataTypesResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.DataType> GetDataTypes();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddDataType", ReplyAction = "http://tempuri.org/IOKBService/AddDataTypeResponse")]
-    long AddDataType(HeuristicLab.Clients.OKB.DataType dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateDataType", ReplyAction = "http://tempuri.org/IOKBService/UpdateDataTypeResponse")]
-    void UpdateDataType(HeuristicLab.Clients.OKB.DataType dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteDataType", ReplyAction = "http://tempuri.org/IOKBService/DeleteDataTypeResponse")]
-    void DeleteDataType(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetAlgorithmClass", ReplyAction = "http://tempuri.org/IOKBService/GetAlgorithmClassResponse")]
-    HeuristicLab.Clients.OKB.AlgorithmClass GetAlgorithmClass(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetAlgorithmClasses", ReplyAction = "http://tempuri.org/IOKBService/GetAlgorithmClassesResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmClass> GetAlgorithmClasses();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddAlgorithmClass", ReplyAction = "http://tempuri.org/IOKBService/AddAlgorithmClassResponse")]
-    long AddAlgorithmClass(HeuristicLab.Clients.OKB.AlgorithmClass dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateAlgorithmClass", ReplyAction = "http://tempuri.org/IOKBService/UpdateAlgorithmClassResponse")]
-    void UpdateAlgorithmClass(HeuristicLab.Clients.OKB.AlgorithmClass dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteAlgorithmClass", ReplyAction = "http://tempuri.org/IOKBService/DeleteAlgorithmClassResponse")]
-    void DeleteAlgorithmClass(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetAlgorithm", ReplyAction = "http://tempuri.org/IOKBService/GetAlgorithmResponse")]
-    HeuristicLab.Clients.OKB.Algorithm GetAlgorithm(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetAlgorithms", ReplyAction = "http://tempuri.org/IOKBService/GetAlgorithmsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Algorithm> GetAlgorithms();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/AddAlgorithm", ReplyAction = "http://tempuri.org/IOKBService/AddAlgorithmResponse")]
-    long AddAlgorithm(HeuristicLab.Clients.OKB.Algorithm dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateAlgorithm", ReplyAction = "http://tempuri.org/IOKBService/UpdateAlgorithmResponse")]
-    void UpdateAlgorithm(HeuristicLab.Clients.OKB.Algorithm dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/DeleteAlgorithm", ReplyAction = "http://tempuri.org/IOKBService/DeleteAlgorithmResponse")]
-    void DeleteAlgorithm(long id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetAlgorithmUsers", ReplyAction = "http://tempuri.org/IOKBService/GetAlgorithmUsersResponse")]
-    System.Collections.Generic.List<System.Guid> GetAlgorithmUsers(long algorithmId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateAlgorithmUsers", ReplyAction = "http://tempuri.org/IOKBService/UpdateAlgorithmUsersResponse")]
-    void UpdateAlgorithmUsers(long algorithmId, System.Collections.Generic.List<System.Guid> users);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetAlgorithmData", ReplyAction = "http://tempuri.org/IOKBService/GetAlgorithmDataResponse")]
-    HeuristicLab.Clients.OKB.AlgorithmData GetAlgorithmData(long algorithmId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateAlgorithmData", ReplyAction = "http://tempuri.org/IOKBService/UpdateAlgorithmDataResponse")]
-    void UpdateAlgorithmData(HeuristicLab.Clients.OKB.AlgorithmData dto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/GetAlgorithmParameter", ReplyAction = "http://tempuri.org/IOKBService/GetAlgorithmParameterResponse")]
-    HeuristicLab.Clients.OKB.AlgorithmParameter GetAlgorithmParameter(long id);
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-  public interface IOKBServiceChannel : HeuristicLab.Clients.OKB.IOKBService, System.ServiceModel.IClientChannel {
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-  public partial class OKBServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.OKB.IOKBService>, HeuristicLab.Clients.OKB.IOKBService {
-
-    public OKBServiceClient() {
-    }
-
-    public OKBServiceClient(string endpointConfigurationName) :
-      base(endpointConfigurationName) {
-    }
-
-    public OKBServiceClient(string endpointConfigurationName, string remoteAddress) :
-      base(endpointConfigurationName, remoteAddress) {
-    }
-
-    public OKBServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
-      base(endpointConfigurationName, remoteAddress) {
-    }
-
-    public OKBServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
-      base(binding, remoteAddress) {
-    }
-
-    public long AddResult(HeuristicLab.Clients.OKB.Result dto) {
-      return base.Channel.AddResult(dto);
-    }
-
-    public void UpdateResult(HeuristicLab.Clients.OKB.Result dto) {
-      base.Channel.UpdateResult(dto);
-    }
-
-    public void DeleteResult(long id) {
-      base.Channel.DeleteResult(id);
-    }
-
-    public HeuristicLab.Clients.OKB.Experiment GetExperiment(long id) {
-      return base.Channel.GetExperiment(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Experiment> GetExperiments(long algorithmId, long problemId) {
-      return base.Channel.GetExperiments(algorithmId, problemId);
-    }
-
-    public long AddExperiment(HeuristicLab.Clients.OKB.Experiment dto) {
-      return base.Channel.AddExperiment(dto);
-    }
-
-    public void DeleteExperiment(long id) {
-      base.Channel.DeleteExperiment(id);
-    }
-
-    public HeuristicLab.Clients.OKB.Run GetRun(long id) {
-      return base.Channel.GetRun(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> GetRuns(long experimentId) {
-      return base.Channel.GetRuns(experimentId);
-    }
-
-    public long AddRun(HeuristicLab.Clients.OKB.Run dto) {
-      return base.Channel.AddRun(dto);
-    }
-
-    public void DeleteRun(long id) {
-      base.Channel.DeleteRun(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> GetFilters() {
-      return base.Channel.GetFilters();
-    }
-
-    public long QueryNumberOfRuns(HeuristicLab.Clients.OKB.Filter filter) {
-      return base.Channel.QueryNumberOfRuns(filter);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> QueryRuns(HeuristicLab.Clients.OKB.Filter filter) {
-      return base.Channel.QueryRuns(filter);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmParameter> GetAlgorithmParameters(long algorithmId) {
-      return base.Channel.GetAlgorithmParameters(algorithmId);
-    }
-
-    public long AddAlgorithmParameter(HeuristicLab.Clients.OKB.AlgorithmParameter dto) {
-      return base.Channel.AddAlgorithmParameter(dto);
-    }
-
-    public void UpdateAlgorithmParameter(HeuristicLab.Clients.OKB.AlgorithmParameter dto) {
-      base.Channel.UpdateAlgorithmParameter(dto);
-    }
-
-    public void DeleteAlgorithmParameter(long id) {
-      base.Channel.DeleteAlgorithmParameter(id);
-    }
-
-    public HeuristicLab.Clients.OKB.ProblemClass GetProblemClass(long id) {
-      return base.Channel.GetProblemClass(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemClass> GetProblemClasses() {
-      return base.Channel.GetProblemClasses();
-    }
-
-    public long AddProblemClass(HeuristicLab.Clients.OKB.ProblemClass dto) {
-      return base.Channel.AddProblemClass(dto);
-    }
-
-    public void UpdateProblemClass(HeuristicLab.Clients.OKB.ProblemClass dto) {
-      base.Channel.UpdateProblemClass(dto);
-    }
-
-    public void DeleteProblemClass(long id) {
-      base.Channel.DeleteProblemClass(id);
-    }
-
-    public HeuristicLab.Clients.OKB.Problem GetProblem(long id) {
-      return base.Channel.GetProblem(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Problem> GetProblems() {
-      return base.Channel.GetProblems();
-    }
-
-    public long AddProblem(HeuristicLab.Clients.OKB.Problem dto) {
-      return base.Channel.AddProblem(dto);
-    }
-
-    public void UpdateProblem(HeuristicLab.Clients.OKB.Problem dto) {
-      base.Channel.UpdateProblem(dto);
-    }
-
-    public void DeleteProblem(long id) {
-      base.Channel.DeleteProblem(id);
-    }
-
-    public System.Collections.Generic.List<System.Guid> GetProblemUsers(long problemId) {
-      return base.Channel.GetProblemUsers(problemId);
-    }
-
-    public void UpdateProblemUsers(long problemId, System.Collections.Generic.List<System.Guid> users) {
-      base.Channel.UpdateProblemUsers(problemId, users);
-    }
-
-    public HeuristicLab.Clients.OKB.ProblemData GetProblemData(long problemId) {
-      return base.Channel.GetProblemData(problemId);
-    }
-
-    public void UpdateProblemData(HeuristicLab.Clients.OKB.ProblemData dto) {
-      base.Channel.UpdateProblemData(dto);
-    }
-
-    public HeuristicLab.Clients.OKB.ProblemParameter GetProblemParameter(long id) {
-      return base.Channel.GetProblemParameter(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemParameter> GetProblemParameters(long problemId) {
-      return base.Channel.GetProblemParameters(problemId);
-    }
-
-    public long AddProblemParameter(HeuristicLab.Clients.OKB.ProblemParameter dto) {
-      return base.Channel.AddProblemParameter(dto);
-    }
-
-    public void UpdateProblemParameter(HeuristicLab.Clients.OKB.ProblemParameter dto) {
-      base.Channel.UpdateProblemParameter(dto);
-    }
-
-    public void DeleteProblemParameter(long id) {
-      base.Channel.DeleteProblemParameter(id);
-    }
-
-    public HeuristicLab.Clients.OKB.Result GetResult(long id) {
-      return base.Channel.GetResult(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Result> GetResults(long algorithmId) {
-      return base.Channel.GetResults(algorithmId);
-    }
-
-    public HeuristicLab.Clients.OKB.Platform GetPlatform(long id) {
-      return base.Channel.GetPlatform(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Platform> GetPlatforms() {
-      return base.Channel.GetPlatforms();
-    }
-
-    public long AddPlatform(HeuristicLab.Clients.OKB.Platform dto) {
-      return base.Channel.AddPlatform(dto);
-    }
-
-    public void UpdatePlatform(HeuristicLab.Clients.OKB.Platform dto) {
-      base.Channel.UpdatePlatform(dto);
-    }
-
-    public void DeletePlatform(long id) {
-      base.Channel.DeletePlatform(id);
-    }
-
-    public HeuristicLab.Clients.OKB.DataType GetDataType(long id) {
-      return base.Channel.GetDataType(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.DataType> GetDataTypes() {
-      return base.Channel.GetDataTypes();
-    }
-
-    public long AddDataType(HeuristicLab.Clients.OKB.DataType dto) {
-      return base.Channel.AddDataType(dto);
-    }
-
-    public void UpdateDataType(HeuristicLab.Clients.OKB.DataType dto) {
-      base.Channel.UpdateDataType(dto);
-    }
-
-    public void DeleteDataType(long id) {
-      base.Channel.DeleteDataType(id);
-    }
-
-    public HeuristicLab.Clients.OKB.AlgorithmClass GetAlgorithmClass(long id) {
-      return base.Channel.GetAlgorithmClass(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmClass> GetAlgorithmClasses() {
-      return base.Channel.GetAlgorithmClasses();
-    }
-
-    public long AddAlgorithmClass(HeuristicLab.Clients.OKB.AlgorithmClass dto) {
-      return base.Channel.AddAlgorithmClass(dto);
-    }
-
-    public void UpdateAlgorithmClass(HeuristicLab.Clients.OKB.AlgorithmClass dto) {
-      base.Channel.UpdateAlgorithmClass(dto);
-    }
-
-    public void DeleteAlgorithmClass(long id) {
-      base.Channel.DeleteAlgorithmClass(id);
-    }
-
-    public HeuristicLab.Clients.OKB.Algorithm GetAlgorithm(long id) {
-      return base.Channel.GetAlgorithm(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Algorithm> GetAlgorithms() {
-      return base.Channel.GetAlgorithms();
-    }
-
-    public long AddAlgorithm(HeuristicLab.Clients.OKB.Algorithm dto) {
-      return base.Channel.AddAlgorithm(dto);
-    }
-
-    public void UpdateAlgorithm(HeuristicLab.Clients.OKB.Algorithm dto) {
-      base.Channel.UpdateAlgorithm(dto);
-    }
-
-    public void DeleteAlgorithm(long id) {
-      base.Channel.DeleteAlgorithm(id);
-    }
-
-    public System.Collections.Generic.List<System.Guid> GetAlgorithmUsers(long algorithmId) {
-      return base.Channel.GetAlgorithmUsers(algorithmId);
-    }
-
-    public void UpdateAlgorithmUsers(long algorithmId, System.Collections.Generic.List<System.Guid> users) {
-      base.Channel.UpdateAlgorithmUsers(algorithmId, users);
-    }
-
-    public HeuristicLab.Clients.OKB.AlgorithmData GetAlgorithmData(long algorithmId) {
-      return base.Channel.GetAlgorithmData(algorithmId);
-    }
-
-    public void UpdateAlgorithmData(HeuristicLab.Clients.OKB.AlgorithmData dto) {
-      base.Channel.UpdateAlgorithmData(dto);
-    }
-
-    public HeuristicLab.Clients.OKB.AlgorithmParameter GetAlgorithmParameter(long id) {
-      return base.Channel.GetAlgorithmParameter(id);
-    }
-  }
-}
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/ServiceClients/OKBServiceClients.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/ServiceClients/OKBServiceClients.cs	(revision 5299)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/ServiceClients/OKBServiceClients.cs	(revision 5299)
@@ -0,0 +1,2291 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Clients.OKB {
+
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "OKBItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Experiment))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Run))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.DataType))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NamedOKBItem))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemClass))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Problem))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Platform))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmClass))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Algorithm))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Result))]
+  public partial class OKBItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private long IdField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long Id {
+      get {
+        return this.IdField;
+      }
+      set {
+        if ((this.IdField.Equals(value) != true)) {
+          this.IdField = value;
+          this.RaisePropertyChanged("Id");
+        }
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Experiment", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class Experiment : HeuristicLab.Clients.OKB.OKBItem {
+
+    private long AlgorithmIdField;
+
+    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmParameterValue> AlgorithmParameterValuesField;
+
+    private long ProblemIdField;
+
+    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemParameterValue> ProblemParameterValuesField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long AlgorithmId {
+      get {
+        return this.AlgorithmIdField;
+      }
+      set {
+        if ((this.AlgorithmIdField.Equals(value) != true)) {
+          this.AlgorithmIdField = value;
+          this.RaisePropertyChanged("AlgorithmId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmParameterValue> AlgorithmParameterValues {
+      get {
+        return this.AlgorithmParameterValuesField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.AlgorithmParameterValuesField, value) != true)) {
+          this.AlgorithmParameterValuesField = value;
+          this.RaisePropertyChanged("AlgorithmParameterValues");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long ProblemId {
+      get {
+        return this.ProblemIdField;
+      }
+      set {
+        if ((this.ProblemIdField.Equals(value) != true)) {
+          this.ProblemIdField = value;
+          this.RaisePropertyChanged("ProblemId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemParameterValue> ProblemParameterValues {
+      get {
+        return this.ProblemParameterValuesField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ProblemParameterValuesField, value) != true)) {
+          this.ProblemParameterValuesField = value;
+          this.RaisePropertyChanged("ProblemParameterValues");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Run", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class Run : HeuristicLab.Clients.OKB.OKBItem {
+
+    private System.Guid ClientIdField;
+
+    private System.DateTime CreatedDateField;
+
+    private long ExperimentIdField;
+
+    private long RandomSeedField;
+
+    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.ResultValue> ResultValuesField;
+
+    private System.Guid UserIdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid ClientId {
+      get {
+        return this.ClientIdField;
+      }
+      set {
+        if ((this.ClientIdField.Equals(value) != true)) {
+          this.ClientIdField = value;
+          this.RaisePropertyChanged("ClientId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime CreatedDate {
+      get {
+        return this.CreatedDateField;
+      }
+      set {
+        if ((this.CreatedDateField.Equals(value) != true)) {
+          this.CreatedDateField = value;
+          this.RaisePropertyChanged("CreatedDate");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long ExperimentId {
+      get {
+        return this.ExperimentIdField;
+      }
+      set {
+        if ((this.ExperimentIdField.Equals(value) != true)) {
+          this.ExperimentIdField = value;
+          this.RaisePropertyChanged("ExperimentId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long RandomSeed {
+      get {
+        return this.RandomSeedField;
+      }
+      set {
+        if ((this.RandomSeedField.Equals(value) != true)) {
+          this.RandomSeedField = value;
+          this.RaisePropertyChanged("RandomSeed");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.ResultValue> ResultValues {
+      get {
+        return this.ResultValuesField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ResultValuesField, value) != true)) {
+          this.ResultValuesField = value;
+          this.RaisePropertyChanged("ResultValues");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid UserId {
+      get {
+        return this.UserIdField;
+      }
+      set {
+        if ((this.UserIdField.Equals(value) != true)) {
+          this.UserIdField = value;
+          this.RaisePropertyChanged("UserId");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "DataType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class DataType : HeuristicLab.Clients.OKB.OKBItem {
+
+    private string NameField;
+
+    private long PlatformIdField;
+
+    private string SqlNameField;
+
+    private string TypeNameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Name {
+      get {
+        return this.NameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.NameField, value) != true)) {
+          this.NameField = value;
+          this.RaisePropertyChanged("Name");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long PlatformId {
+      get {
+        return this.PlatformIdField;
+      }
+      set {
+        if ((this.PlatformIdField.Equals(value) != true)) {
+          this.PlatformIdField = value;
+          this.RaisePropertyChanged("PlatformId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string SqlName {
+      get {
+        return this.SqlNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.SqlNameField, value) != true)) {
+          this.SqlNameField = value;
+          this.RaisePropertyChanged("SqlName");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string TypeName {
+      get {
+        return this.TypeNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.TypeNameField, value) != true)) {
+          this.TypeNameField = value;
+          this.RaisePropertyChanged("TypeName");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "NamedOKBItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemClass))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Problem))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Platform))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmClass))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Algorithm))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.Result))]
+  public partial class NamedOKBItem : HeuristicLab.Clients.OKB.OKBItem {
+
+    private string DescriptionField;
+
+    private string NameField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Description {
+      get {
+        return this.DescriptionField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.DescriptionField, value) != true)) {
+          this.DescriptionField = value;
+          this.RaisePropertyChanged("Description");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Name {
+      get {
+        return this.NameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.NameField, value) != true)) {
+          this.NameField = value;
+          this.RaisePropertyChanged("Name");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class AlgorithmParameter : HeuristicLab.Clients.OKB.NamedOKBItem {
+
+    private long AlgorithmIdField;
+
+    private string AliasField;
+
+    private long DataTypeIdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long AlgorithmId {
+      get {
+        return this.AlgorithmIdField;
+      }
+      set {
+        if ((this.AlgorithmIdField.Equals(value) != true)) {
+          this.AlgorithmIdField = value;
+          this.RaisePropertyChanged("AlgorithmId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Alias {
+      get {
+        return this.AliasField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.AliasField, value) != true)) {
+          this.AliasField = value;
+          this.RaisePropertyChanged("Alias");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long DataTypeId {
+      get {
+        return this.DataTypeIdField;
+      }
+      set {
+        if ((this.DataTypeIdField.Equals(value) != true)) {
+          this.DataTypeIdField = value;
+          this.RaisePropertyChanged("DataTypeId");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemClass", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ProblemClass : HeuristicLab.Clients.OKB.NamedOKBItem {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Problem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class Problem : HeuristicLab.Clients.OKB.NamedOKBItem {
+
+    private long PlatformIdField;
+
+    private long ProblemClassIdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long PlatformId {
+      get {
+        return this.PlatformIdField;
+      }
+      set {
+        if ((this.PlatformIdField.Equals(value) != true)) {
+          this.PlatformIdField = value;
+          this.RaisePropertyChanged("PlatformId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long ProblemClassId {
+      get {
+        return this.ProblemClassIdField;
+      }
+      set {
+        if ((this.ProblemClassIdField.Equals(value) != true)) {
+          this.ProblemClassIdField = value;
+          this.RaisePropertyChanged("ProblemClassId");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ProblemParameter : HeuristicLab.Clients.OKB.NamedOKBItem {
+
+    private string AliasField;
+
+    private long DataTypeIdField;
+
+    private long ProblemIdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Alias {
+      get {
+        return this.AliasField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.AliasField, value) != true)) {
+          this.AliasField = value;
+          this.RaisePropertyChanged("Alias");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long DataTypeId {
+      get {
+        return this.DataTypeIdField;
+      }
+      set {
+        if ((this.DataTypeIdField.Equals(value) != true)) {
+          this.DataTypeIdField = value;
+          this.RaisePropertyChanged("DataTypeId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long ProblemId {
+      get {
+        return this.ProblemIdField;
+      }
+      set {
+        if ((this.ProblemIdField.Equals(value) != true)) {
+          this.ProblemIdField = value;
+          this.RaisePropertyChanged("ProblemId");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Platform", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class Platform : HeuristicLab.Clients.OKB.NamedOKBItem {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmClass", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class AlgorithmClass : HeuristicLab.Clients.OKB.NamedOKBItem {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Algorithm", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class Algorithm : HeuristicLab.Clients.OKB.NamedOKBItem {
+
+    private long AlgorithmClassIdField;
+
+    private long PlatformIdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long AlgorithmClassId {
+      get {
+        return this.AlgorithmClassIdField;
+      }
+      set {
+        if ((this.AlgorithmClassIdField.Equals(value) != true)) {
+          this.AlgorithmClassIdField = value;
+          this.RaisePropertyChanged("AlgorithmClassId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long PlatformId {
+      get {
+        return this.PlatformIdField;
+      }
+      set {
+        if ((this.PlatformIdField.Equals(value) != true)) {
+          this.PlatformIdField = value;
+          this.RaisePropertyChanged("PlatformId");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Result", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class Result : HeuristicLab.Clients.OKB.NamedOKBItem {
+
+    private long AlgorithmIdField;
+
+    private string AliasField;
+
+    private long DataTypeIdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long AlgorithmId {
+      get {
+        return this.AlgorithmIdField;
+      }
+      set {
+        if ((this.AlgorithmIdField.Equals(value) != true)) {
+          this.AlgorithmIdField = value;
+          this.RaisePropertyChanged("AlgorithmId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Alias {
+      get {
+        return this.AliasField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.AliasField, value) != true)) {
+          this.AliasField = value;
+          this.RaisePropertyChanged("Alias");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long DataTypeId {
+      get {
+        return this.DataTypeIdField;
+      }
+      set {
+        if ((this.DataTypeIdField.Equals(value) != true)) {
+          this.DataTypeIdField = value;
+          this.RaisePropertyChanged("DataTypeId");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterBlobValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterIntValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterBoolValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterFloatValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterStringValue))]
+  public partial class AlgorithmParameterValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private long AlgorithmParameterIdField;
+
+    private long DataTypeIdField;
+
+    private long ExperimentIdField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long AlgorithmParameterId {
+      get {
+        return this.AlgorithmParameterIdField;
+      }
+      set {
+        if ((this.AlgorithmParameterIdField.Equals(value) != true)) {
+          this.AlgorithmParameterIdField = value;
+          this.RaisePropertyChanged("AlgorithmParameterId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long DataTypeId {
+      get {
+        return this.DataTypeIdField;
+      }
+      set {
+        if ((this.DataTypeIdField.Equals(value) != true)) {
+          this.DataTypeIdField = value;
+          this.RaisePropertyChanged("DataTypeId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long ExperimentId {
+      get {
+        return this.ExperimentIdField;
+      }
+      set {
+        if ((this.ExperimentIdField.Equals(value) != true)) {
+          this.ExperimentIdField = value;
+          this.RaisePropertyChanged("ExperimentId");
+        }
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+    protected void RaisePropertyChanged(string propertyName) {
+      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+      if ((propertyChanged != null)) {
+        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterBoolValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterFloatValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterIntValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterBlobValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterStringValue))]
+  public partial class ProblemParameterValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private long DataTypeIdField;
+
+    private long ExperimentIdField;
+
+    private long ProblemParameterIdField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long DataTypeId {
+      get {
+        return this.DataTypeIdField;
+      }
+      set {
+        if ((this.DataTypeIdField.Equals(value) != true)) {
+          this.DataTypeIdField = value;
+          this.RaisePropertyChanged("DataTypeId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long ExperimentId {
+      get {
+        return this.ExperimentIdField;
+      }
+      set {
+        if ((this.ExperimentIdField.Equals(value) != true)) {
+          this.ExperimentIdField = value;
+          this.RaisePropertyChanged("ExperimentId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long ProblemParameterId {
+      get {
+        return this.ProblemParameterIdField;
+      }
+      set {
+        if ((this.ProblemParameterIdField.Equals(value) != true)) {
+          this.ProblemParameterIdField = value;
+          this.RaisePropertyChanged("ProblemParameterId");
+        }
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+    protected void RaisePropertyChanged(string propertyName) {
+      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+      if ((propertyChanged != null)) {
+        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class AlgorithmParameterBlobValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
+
+    private byte[] ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public byte[] Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class AlgorithmParameterIntValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
+
+    private long ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class AlgorithmParameterBoolValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
+
+    private bool ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public bool Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class AlgorithmParameterFloatValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
+
+    private double ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public double Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class AlgorithmParameterStringValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
+
+    private string ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ProblemParameterBoolValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
+
+    private bool ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public bool Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ProblemParameterFloatValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
+
+    private double ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public double Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ProblemParameterIntValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
+
+    private long ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ProblemParameterBlobValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
+
+    private byte[] ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public byte[] Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ProblemParameterStringValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
+
+    private string ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultBoolValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultIntValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultBlobValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultStringValue))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultFloatValue))]
+  public partial class ResultValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private long DataTypeIdField;
+
+    private long ResultIdField;
+
+    private long RunIdField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long DataTypeId {
+      get {
+        return this.DataTypeIdField;
+      }
+      set {
+        if ((this.DataTypeIdField.Equals(value) != true)) {
+          this.DataTypeIdField = value;
+          this.RaisePropertyChanged("DataTypeId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long ResultId {
+      get {
+        return this.ResultIdField;
+      }
+      set {
+        if ((this.ResultIdField.Equals(value) != true)) {
+          this.ResultIdField = value;
+          this.RaisePropertyChanged("ResultId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long RunId {
+      get {
+        return this.RunIdField;
+      }
+      set {
+        if ((this.RunIdField.Equals(value) != true)) {
+          this.RunIdField = value;
+          this.RaisePropertyChanged("RunId");
+        }
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+    protected void RaisePropertyChanged(string propertyName) {
+      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+      if ((propertyChanged != null)) {
+        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ResultBoolValue : HeuristicLab.Clients.OKB.ResultValue {
+
+    private bool ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public bool Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ResultIntValue : HeuristicLab.Clients.OKB.ResultValue {
+
+    private long ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ResultBlobValue : HeuristicLab.Clients.OKB.ResultValue {
+
+    private byte[] ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public byte[] Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ResultStringValue : HeuristicLab.Clients.OKB.ResultValue {
+
+    private string ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ResultFloatValue : HeuristicLab.Clients.OKB.ResultValue {
+
+    private double ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public double Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemData", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class ProblemData : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private byte[] DataField;
+
+    private long DataTypeIdField;
+
+    private long ProblemIdField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public byte[] Data {
+      get {
+        return this.DataField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.DataField, value) != true)) {
+          this.DataField = value;
+          this.RaisePropertyChanged("Data");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long DataTypeId {
+      get {
+        return this.DataTypeIdField;
+      }
+      set {
+        if ((this.DataTypeIdField.Equals(value) != true)) {
+          this.DataTypeIdField = value;
+          this.RaisePropertyChanged("DataTypeId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long ProblemId {
+      get {
+        return this.ProblemIdField;
+      }
+      set {
+        if ((this.ProblemIdField.Equals(value) != true)) {
+          this.ProblemIdField = value;
+          this.RaisePropertyChanged("ProblemId");
+        }
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+    protected void RaisePropertyChanged(string propertyName) {
+      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+      if ((propertyChanged != null)) {
+        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmData", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class AlgorithmData : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private long AlgorithmIdField;
+
+    private byte[] DataField;
+
+    private long DataTypeIdField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long AlgorithmId {
+      get {
+        return this.AlgorithmIdField;
+      }
+      set {
+        if ((this.AlgorithmIdField.Equals(value) != true)) {
+          this.AlgorithmIdField = value;
+          this.RaisePropertyChanged("AlgorithmId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public byte[] Data {
+      get {
+        return this.DataField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.DataField, value) != true)) {
+          this.DataField = value;
+          this.RaisePropertyChanged("Data");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long DataTypeId {
+      get {
+        return this.DataTypeIdField;
+      }
+      set {
+        if ((this.DataTypeIdField.Equals(value) != true)) {
+          this.DataTypeIdField = value;
+          this.RaisePropertyChanged("DataTypeId");
+        }
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+    protected void RaisePropertyChanged(string propertyName) {
+      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+      if ((propertyChanged != null)) {
+        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Filter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringAvailableValuesFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringAvailableValuesFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonDateTimeFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonDoubleFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonLongFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonLongFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.CombinedFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AndFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.EqualityComparisonFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameEqualityComparisonBoolFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameEqualityComparisonByteArrayFilter))]
+  public partial class Filter : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private string FilterTypeNameField;
+
+    private string LabelField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string FilterTypeName {
+      get {
+        return this.FilterTypeNameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.FilterTypeNameField, value) != true)) {
+          this.FilterTypeNameField = value;
+          this.RaisePropertyChanged("FilterTypeName");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Label {
+      get {
+        return this.LabelField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.LabelField, value) != true)) {
+          this.LabelField = value;
+          this.RaisePropertyChanged("Label");
+        }
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+    protected void RaisePropertyChanged(string propertyName) {
+      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+      if ((propertyChanged != null)) {
+        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "SetComparisonFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringAvailableValuesFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringAvailableValuesFilter))]
+  public partial class SetComparisonFilter : HeuristicLab.Clients.OKB.Filter {
+
+    private HeuristicLab.Clients.OKB.SetComparison ComparisonField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public HeuristicLab.Clients.OKB.SetComparison Comparison {
+      get {
+        return this.ComparisonField;
+      }
+      set {
+        if ((this.ComparisonField.Equals(value) != true)) {
+          this.ComparisonField = value;
+          this.RaisePropertyChanged("Comparison");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "NameSetComparisonStringFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameSetComparisonStringAvailableValuesFilter))]
+  public partial class NameSetComparisonStringFilter : HeuristicLab.Clients.OKB.SetComparisonFilter {
+
+    private string NameField;
+
+    private string ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Name {
+      get {
+        return this.NameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.NameField, value) != true)) {
+          this.NameField = value;
+          this.RaisePropertyChanged("Name");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "NameSetComparisonStringAvailableValuesFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class NameSetComparisonStringAvailableValuesFilter : HeuristicLab.Clients.OKB.NameSetComparisonStringFilter {
+
+    private System.Collections.Generic.List<string> AvailableValuesField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Collections.Generic.List<string> AvailableValues {
+      get {
+        return this.AvailableValuesField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.AvailableValuesField, value) != true)) {
+          this.AvailableValuesField = value;
+          this.RaisePropertyChanged("AvailableValues");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "SetComparisonStringFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringAvailableValuesFilter))]
+  public partial class SetComparisonStringFilter : HeuristicLab.Clients.OKB.SetComparisonFilter {
+
+    private string ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "SetComparisonStringAvailableValuesFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class SetComparisonStringAvailableValuesFilter : HeuristicLab.Clients.OKB.SetComparisonStringFilter {
+
+    private System.Collections.Generic.List<string> AvailableValuesField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Collections.Generic.List<string> AvailableValues {
+      get {
+        return this.AvailableValuesField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.AvailableValuesField, value) != true)) {
+          this.AvailableValuesField = value;
+          this.RaisePropertyChanged("AvailableValues");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparisonFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonDateTimeFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonDoubleFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonLongFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonLongFilter))]
+  public partial class OrdinalComparisonFilter : HeuristicLab.Clients.OKB.Filter {
+
+    private HeuristicLab.Clients.OKB.OrdinalComparison ComparisonField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public HeuristicLab.Clients.OKB.OrdinalComparison Comparison {
+      get {
+        return this.ComparisonField;
+      }
+      set {
+        if ((this.ComparisonField.Equals(value) != true)) {
+          this.ComparisonField = value;
+          this.RaisePropertyChanged("Comparison");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparisonDateTimeFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class OrdinalComparisonDateTimeFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
+
+    private System.DateTime ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "NameOrdinalComparisonDoubleFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class NameOrdinalComparisonDoubleFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
+
+    private string NameField;
+
+    private double ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Name {
+      get {
+        return this.NameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.NameField, value) != true)) {
+          this.NameField = value;
+          this.RaisePropertyChanged("Name");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public double Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "NameOrdinalComparisonLongFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class NameOrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
+
+    private string NameField;
+
+    private long ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Name {
+      get {
+        return this.NameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.NameField, value) != true)) {
+          this.NameField = value;
+          this.RaisePropertyChanged("Name");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparisonLongFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class OrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
+
+    private long ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public long Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "CombinedFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AndFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrFilter))]
+  public partial class CombinedFilter : HeuristicLab.Clients.OKB.Filter {
+
+    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> FiltersField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> Filters {
+      get {
+        return this.FiltersField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.FiltersField, value) != true)) {
+          this.FiltersField = value;
+          this.RaisePropertyChanged("Filters");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AndFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class AndFilter : HeuristicLab.Clients.OKB.CombinedFilter {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "OrFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class OrFilter : HeuristicLab.Clients.OKB.CombinedFilter {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "EqualityComparisonFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameEqualityComparisonBoolFilter))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameEqualityComparisonByteArrayFilter))]
+  public partial class EqualityComparisonFilter : HeuristicLab.Clients.OKB.Filter {
+
+    private HeuristicLab.Clients.OKB.EqualityComparison ComparisonField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public HeuristicLab.Clients.OKB.EqualityComparison Comparison {
+      get {
+        return this.ComparisonField;
+      }
+      set {
+        if ((this.ComparisonField.Equals(value) != true)) {
+          this.ComparisonField = value;
+          this.RaisePropertyChanged("Comparison");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "NameEqualityComparisonBoolFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class NameEqualityComparisonBoolFilter : HeuristicLab.Clients.OKB.EqualityComparisonFilter {
+
+    private string NameField;
+
+    private bool ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Name {
+      get {
+        return this.NameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.NameField, value) != true)) {
+          this.NameField = value;
+          this.RaisePropertyChanged("Name");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public bool Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((this.ValueField.Equals(value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "NameEqualityComparisonByteArrayFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public partial class NameEqualityComparisonByteArrayFilter : HeuristicLab.Clients.OKB.EqualityComparisonFilter {
+
+    private string NameField;
+
+    private byte[] ValueField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public string Name {
+      get {
+        return this.NameField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.NameField, value) != true)) {
+          this.NameField = value;
+          this.RaisePropertyChanged("Name");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public byte[] Value {
+      get {
+        return this.ValueField;
+      }
+      set {
+        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
+          this.ValueField = value;
+          this.RaisePropertyChanged("Value");
+        }
+      }
+    }
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "SetComparison", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public enum SetComparison : int {
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Equal = 0,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    NotEqual = 1,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Contains = 2,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    NotContains = 3,
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparison", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public enum OrdinalComparison : int {
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Less = 0,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    LessOrEqual = 1,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Equal = 2,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    GreaterOrEqual = 3,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Greater = 4,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    NotEqual = 5,
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "EqualityComparison", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
+  public enum EqualityComparison : int {
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Equal = 0,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    NotEqual = 1,
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  [System.ServiceModel.ServiceContractAttribute(ConfigurationName = "HeuristicLab.Clients.OKB.IAdministrationService")]
+  public interface IAdministrationService {
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddResult", ReplyAction = "http://tempuri.org/IAdministrationService/AddResultResponse")]
+    long AddResult(HeuristicLab.Clients.OKB.Result dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateResult", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateResultResponse")]
+    void UpdateResult(HeuristicLab.Clients.OKB.Result dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteResult", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteResultResponse")]
+    void DeleteResult(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetExperiment", ReplyAction = "http://tempuri.org/IAdministrationService/GetExperimentResponse")]
+    HeuristicLab.Clients.OKB.Experiment GetExperiment(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetExperiments", ReplyAction = "http://tempuri.org/IAdministrationService/GetExperimentsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Experiment> GetExperiments(long algorithmId, long problemId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddExperiment", ReplyAction = "http://tempuri.org/IAdministrationService/AddExperimentResponse")]
+    long AddExperiment(HeuristicLab.Clients.OKB.Experiment dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteExperiment", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteExperimentResponse")]
+    void DeleteExperiment(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetRun", ReplyAction = "http://tempuri.org/IAdministrationService/GetRunResponse")]
+    HeuristicLab.Clients.OKB.Run GetRun(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetRuns", ReplyAction = "http://tempuri.org/IAdministrationService/GetRunsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> GetRuns(long experimentId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddRun", ReplyAction = "http://tempuri.org/IAdministrationService/AddRunResponse")]
+    long AddRun(HeuristicLab.Clients.OKB.Run dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteRun", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteRunResponse")]
+    void DeleteRun(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetAlgorithmParameters", ReplyAction = "http://tempuri.org/IAdministrationService/GetAlgorithmParametersResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmParameter> GetAlgorithmParameters(long algorithmId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddAlgorithmParameter", ReplyAction = "http://tempuri.org/IAdministrationService/AddAlgorithmParameterResponse")]
+    long AddAlgorithmParameter(HeuristicLab.Clients.OKB.AlgorithmParameter dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateAlgorithmParameter", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateAlgorithmParameterResponse")]
+    void UpdateAlgorithmParameter(HeuristicLab.Clients.OKB.AlgorithmParameter dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteAlgorithmParameter", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteAlgorithmParameterResponse")]
+    void DeleteAlgorithmParameter(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetProblemClass", ReplyAction = "http://tempuri.org/IAdministrationService/GetProblemClassResponse")]
+    HeuristicLab.Clients.OKB.ProblemClass GetProblemClass(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetProblemClasses", ReplyAction = "http://tempuri.org/IAdministrationService/GetProblemClassesResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemClass> GetProblemClasses();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddProblemClass", ReplyAction = "http://tempuri.org/IAdministrationService/AddProblemClassResponse")]
+    long AddProblemClass(HeuristicLab.Clients.OKB.ProblemClass dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateProblemClass", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateProblemClassResponse")]
+    void UpdateProblemClass(HeuristicLab.Clients.OKB.ProblemClass dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteProblemClass", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteProblemClassResponse")]
+    void DeleteProblemClass(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetProblem", ReplyAction = "http://tempuri.org/IAdministrationService/GetProblemResponse")]
+    HeuristicLab.Clients.OKB.Problem GetProblem(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetProblems", ReplyAction = "http://tempuri.org/IAdministrationService/GetProblemsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Problem> GetProblems();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddProblem", ReplyAction = "http://tempuri.org/IAdministrationService/AddProblemResponse")]
+    long AddProblem(HeuristicLab.Clients.OKB.Problem dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateProblem", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateProblemResponse")]
+    void UpdateProblem(HeuristicLab.Clients.OKB.Problem dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteProblem", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteProblemResponse")]
+    void DeleteProblem(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetProblemUsers", ReplyAction = "http://tempuri.org/IAdministrationService/GetProblemUsersResponse")]
+    System.Collections.Generic.List<System.Guid> GetProblemUsers(long problemId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateProblemUsers", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateProblemUsersResponse")]
+    void UpdateProblemUsers(long problemId, System.Collections.Generic.List<System.Guid> users);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetProblemData", ReplyAction = "http://tempuri.org/IAdministrationService/GetProblemDataResponse")]
+    HeuristicLab.Clients.OKB.ProblemData GetProblemData(long problemId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateProblemData", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateProblemDataResponse")]
+    void UpdateProblemData(HeuristicLab.Clients.OKB.ProblemData dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetProblemParameter", ReplyAction = "http://tempuri.org/IAdministrationService/GetProblemParameterResponse")]
+    HeuristicLab.Clients.OKB.ProblemParameter GetProblemParameter(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetProblemParameters", ReplyAction = "http://tempuri.org/IAdministrationService/GetProblemParametersResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemParameter> GetProblemParameters(long problemId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddProblemParameter", ReplyAction = "http://tempuri.org/IAdministrationService/AddProblemParameterResponse")]
+    long AddProblemParameter(HeuristicLab.Clients.OKB.ProblemParameter dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateProblemParameter", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateProblemParameterResponse")]
+    void UpdateProblemParameter(HeuristicLab.Clients.OKB.ProblemParameter dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteProblemParameter", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteProblemParameterResponse")]
+    void DeleteProblemParameter(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetResult", ReplyAction = "http://tempuri.org/IAdministrationService/GetResultResponse")]
+    HeuristicLab.Clients.OKB.Result GetResult(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetResults", ReplyAction = "http://tempuri.org/IAdministrationService/GetResultsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Result> GetResults(long algorithmId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetPlatform", ReplyAction = "http://tempuri.org/IAdministrationService/GetPlatformResponse")]
+    HeuristicLab.Clients.OKB.Platform GetPlatform(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetPlatforms", ReplyAction = "http://tempuri.org/IAdministrationService/GetPlatformsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Platform> GetPlatforms();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddPlatform", ReplyAction = "http://tempuri.org/IAdministrationService/AddPlatformResponse")]
+    long AddPlatform(HeuristicLab.Clients.OKB.Platform dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdatePlatform", ReplyAction = "http://tempuri.org/IAdministrationService/UpdatePlatformResponse")]
+    void UpdatePlatform(HeuristicLab.Clients.OKB.Platform dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeletePlatform", ReplyAction = "http://tempuri.org/IAdministrationService/DeletePlatformResponse")]
+    void DeletePlatform(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetDataType", ReplyAction = "http://tempuri.org/IAdministrationService/GetDataTypeResponse")]
+    HeuristicLab.Clients.OKB.DataType GetDataType(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetDataTypes", ReplyAction = "http://tempuri.org/IAdministrationService/GetDataTypesResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.DataType> GetDataTypes();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddDataType", ReplyAction = "http://tempuri.org/IAdministrationService/AddDataTypeResponse")]
+    long AddDataType(HeuristicLab.Clients.OKB.DataType dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateDataType", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateDataTypeResponse")]
+    void UpdateDataType(HeuristicLab.Clients.OKB.DataType dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteDataType", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteDataTypeResponse")]
+    void DeleteDataType(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetAlgorithmClass", ReplyAction = "http://tempuri.org/IAdministrationService/GetAlgorithmClassResponse")]
+    HeuristicLab.Clients.OKB.AlgorithmClass GetAlgorithmClass(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetAlgorithmClasses", ReplyAction = "http://tempuri.org/IAdministrationService/GetAlgorithmClassesResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmClass> GetAlgorithmClasses();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddAlgorithmClass", ReplyAction = "http://tempuri.org/IAdministrationService/AddAlgorithmClassResponse")]
+    long AddAlgorithmClass(HeuristicLab.Clients.OKB.AlgorithmClass dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateAlgorithmClass", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateAlgorithmClassResponse")]
+    void UpdateAlgorithmClass(HeuristicLab.Clients.OKB.AlgorithmClass dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteAlgorithmClass", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteAlgorithmClassResponse")]
+    void DeleteAlgorithmClass(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetAlgorithm", ReplyAction = "http://tempuri.org/IAdministrationService/GetAlgorithmResponse")]
+    HeuristicLab.Clients.OKB.Algorithm GetAlgorithm(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetAlgorithms", ReplyAction = "http://tempuri.org/IAdministrationService/GetAlgorithmsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Algorithm> GetAlgorithms();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/AddAlgorithm", ReplyAction = "http://tempuri.org/IAdministrationService/AddAlgorithmResponse")]
+    long AddAlgorithm(HeuristicLab.Clients.OKB.Algorithm dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateAlgorithm", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateAlgorithmResponse")]
+    void UpdateAlgorithm(HeuristicLab.Clients.OKB.Algorithm dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/DeleteAlgorithm", ReplyAction = "http://tempuri.org/IAdministrationService/DeleteAlgorithmResponse")]
+    void DeleteAlgorithm(long id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetAlgorithmUsers", ReplyAction = "http://tempuri.org/IAdministrationService/GetAlgorithmUsersResponse")]
+    System.Collections.Generic.List<System.Guid> GetAlgorithmUsers(long algorithmId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateAlgorithmUsers", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateAlgorithmUsersResponse")]
+    void UpdateAlgorithmUsers(long algorithmId, System.Collections.Generic.List<System.Guid> users);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetAlgorithmData", ReplyAction = "http://tempuri.org/IAdministrationService/GetAlgorithmDataResponse")]
+    HeuristicLab.Clients.OKB.AlgorithmData GetAlgorithmData(long algorithmId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/UpdateAlgorithmData", ReplyAction = "http://tempuri.org/IAdministrationService/UpdateAlgorithmDataResponse")]
+    void UpdateAlgorithmData(HeuristicLab.Clients.OKB.AlgorithmData dto);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAdministrationService/GetAlgorithmParameter", ReplyAction = "http://tempuri.org/IAdministrationService/GetAlgorithmParameterResponse")]
+    HeuristicLab.Clients.OKB.AlgorithmParameter GetAlgorithmParameter(long id);
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public interface IAdministrationServiceChannel : HeuristicLab.Clients.OKB.IAdministrationService, System.ServiceModel.IClientChannel {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public partial class AdministrationServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.OKB.IAdministrationService>, HeuristicLab.Clients.OKB.IAdministrationService {
+
+    public AdministrationServiceClient() {
+    }
+
+    public AdministrationServiceClient(string endpointConfigurationName) :
+      base(endpointConfigurationName) {
+    }
+
+    public AdministrationServiceClient(string endpointConfigurationName, string remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public AdministrationServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public AdministrationServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(binding, remoteAddress) {
+    }
+
+    public long AddResult(HeuristicLab.Clients.OKB.Result dto) {
+      return base.Channel.AddResult(dto);
+    }
+
+    public void UpdateResult(HeuristicLab.Clients.OKB.Result dto) {
+      base.Channel.UpdateResult(dto);
+    }
+
+    public void DeleteResult(long id) {
+      base.Channel.DeleteResult(id);
+    }
+
+    public HeuristicLab.Clients.OKB.Experiment GetExperiment(long id) {
+      return base.Channel.GetExperiment(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Experiment> GetExperiments(long algorithmId, long problemId) {
+      return base.Channel.GetExperiments(algorithmId, problemId);
+    }
+
+    public long AddExperiment(HeuristicLab.Clients.OKB.Experiment dto) {
+      return base.Channel.AddExperiment(dto);
+    }
+
+    public void DeleteExperiment(long id) {
+      base.Channel.DeleteExperiment(id);
+    }
+
+    public HeuristicLab.Clients.OKB.Run GetRun(long id) {
+      return base.Channel.GetRun(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> GetRuns(long experimentId) {
+      return base.Channel.GetRuns(experimentId);
+    }
+
+    public long AddRun(HeuristicLab.Clients.OKB.Run dto) {
+      return base.Channel.AddRun(dto);
+    }
+
+    public void DeleteRun(long id) {
+      base.Channel.DeleteRun(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmParameter> GetAlgorithmParameters(long algorithmId) {
+      return base.Channel.GetAlgorithmParameters(algorithmId);
+    }
+
+    public long AddAlgorithmParameter(HeuristicLab.Clients.OKB.AlgorithmParameter dto) {
+      return base.Channel.AddAlgorithmParameter(dto);
+    }
+
+    public void UpdateAlgorithmParameter(HeuristicLab.Clients.OKB.AlgorithmParameter dto) {
+      base.Channel.UpdateAlgorithmParameter(dto);
+    }
+
+    public void DeleteAlgorithmParameter(long id) {
+      base.Channel.DeleteAlgorithmParameter(id);
+    }
+
+    public HeuristicLab.Clients.OKB.ProblemClass GetProblemClass(long id) {
+      return base.Channel.GetProblemClass(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemClass> GetProblemClasses() {
+      return base.Channel.GetProblemClasses();
+    }
+
+    public long AddProblemClass(HeuristicLab.Clients.OKB.ProblemClass dto) {
+      return base.Channel.AddProblemClass(dto);
+    }
+
+    public void UpdateProblemClass(HeuristicLab.Clients.OKB.ProblemClass dto) {
+      base.Channel.UpdateProblemClass(dto);
+    }
+
+    public void DeleteProblemClass(long id) {
+      base.Channel.DeleteProblemClass(id);
+    }
+
+    public HeuristicLab.Clients.OKB.Problem GetProblem(long id) {
+      return base.Channel.GetProblem(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Problem> GetProblems() {
+      return base.Channel.GetProblems();
+    }
+
+    public long AddProblem(HeuristicLab.Clients.OKB.Problem dto) {
+      return base.Channel.AddProblem(dto);
+    }
+
+    public void UpdateProblem(HeuristicLab.Clients.OKB.Problem dto) {
+      base.Channel.UpdateProblem(dto);
+    }
+
+    public void DeleteProblem(long id) {
+      base.Channel.DeleteProblem(id);
+    }
+
+    public System.Collections.Generic.List<System.Guid> GetProblemUsers(long problemId) {
+      return base.Channel.GetProblemUsers(problemId);
+    }
+
+    public void UpdateProblemUsers(long problemId, System.Collections.Generic.List<System.Guid> users) {
+      base.Channel.UpdateProblemUsers(problemId, users);
+    }
+
+    public HeuristicLab.Clients.OKB.ProblemData GetProblemData(long problemId) {
+      return base.Channel.GetProblemData(problemId);
+    }
+
+    public void UpdateProblemData(HeuristicLab.Clients.OKB.ProblemData dto) {
+      base.Channel.UpdateProblemData(dto);
+    }
+
+    public HeuristicLab.Clients.OKB.ProblemParameter GetProblemParameter(long id) {
+      return base.Channel.GetProblemParameter(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.ProblemParameter> GetProblemParameters(long problemId) {
+      return base.Channel.GetProblemParameters(problemId);
+    }
+
+    public long AddProblemParameter(HeuristicLab.Clients.OKB.ProblemParameter dto) {
+      return base.Channel.AddProblemParameter(dto);
+    }
+
+    public void UpdateProblemParameter(HeuristicLab.Clients.OKB.ProblemParameter dto) {
+      base.Channel.UpdateProblemParameter(dto);
+    }
+
+    public void DeleteProblemParameter(long id) {
+      base.Channel.DeleteProblemParameter(id);
+    }
+
+    public HeuristicLab.Clients.OKB.Result GetResult(long id) {
+      return base.Channel.GetResult(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Result> GetResults(long algorithmId) {
+      return base.Channel.GetResults(algorithmId);
+    }
+
+    public HeuristicLab.Clients.OKB.Platform GetPlatform(long id) {
+      return base.Channel.GetPlatform(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Platform> GetPlatforms() {
+      return base.Channel.GetPlatforms();
+    }
+
+    public long AddPlatform(HeuristicLab.Clients.OKB.Platform dto) {
+      return base.Channel.AddPlatform(dto);
+    }
+
+    public void UpdatePlatform(HeuristicLab.Clients.OKB.Platform dto) {
+      base.Channel.UpdatePlatform(dto);
+    }
+
+    public void DeletePlatform(long id) {
+      base.Channel.DeletePlatform(id);
+    }
+
+    public HeuristicLab.Clients.OKB.DataType GetDataType(long id) {
+      return base.Channel.GetDataType(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.DataType> GetDataTypes() {
+      return base.Channel.GetDataTypes();
+    }
+
+    public long AddDataType(HeuristicLab.Clients.OKB.DataType dto) {
+      return base.Channel.AddDataType(dto);
+    }
+
+    public void UpdateDataType(HeuristicLab.Clients.OKB.DataType dto) {
+      base.Channel.UpdateDataType(dto);
+    }
+
+    public void DeleteDataType(long id) {
+      base.Channel.DeleteDataType(id);
+    }
+
+    public HeuristicLab.Clients.OKB.AlgorithmClass GetAlgorithmClass(long id) {
+      return base.Channel.GetAlgorithmClass(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.AlgorithmClass> GetAlgorithmClasses() {
+      return base.Channel.GetAlgorithmClasses();
+    }
+
+    public long AddAlgorithmClass(HeuristicLab.Clients.OKB.AlgorithmClass dto) {
+      return base.Channel.AddAlgorithmClass(dto);
+    }
+
+    public void UpdateAlgorithmClass(HeuristicLab.Clients.OKB.AlgorithmClass dto) {
+      base.Channel.UpdateAlgorithmClass(dto);
+    }
+
+    public void DeleteAlgorithmClass(long id) {
+      base.Channel.DeleteAlgorithmClass(id);
+    }
+
+    public HeuristicLab.Clients.OKB.Algorithm GetAlgorithm(long id) {
+      return base.Channel.GetAlgorithm(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Algorithm> GetAlgorithms() {
+      return base.Channel.GetAlgorithms();
+    }
+
+    public long AddAlgorithm(HeuristicLab.Clients.OKB.Algorithm dto) {
+      return base.Channel.AddAlgorithm(dto);
+    }
+
+    public void UpdateAlgorithm(HeuristicLab.Clients.OKB.Algorithm dto) {
+      base.Channel.UpdateAlgorithm(dto);
+    }
+
+    public void DeleteAlgorithm(long id) {
+      base.Channel.DeleteAlgorithm(id);
+    }
+
+    public System.Collections.Generic.List<System.Guid> GetAlgorithmUsers(long algorithmId) {
+      return base.Channel.GetAlgorithmUsers(algorithmId);
+    }
+
+    public void UpdateAlgorithmUsers(long algorithmId, System.Collections.Generic.List<System.Guid> users) {
+      base.Channel.UpdateAlgorithmUsers(algorithmId, users);
+    }
+
+    public HeuristicLab.Clients.OKB.AlgorithmData GetAlgorithmData(long algorithmId) {
+      return base.Channel.GetAlgorithmData(algorithmId);
+    }
+
+    public void UpdateAlgorithmData(HeuristicLab.Clients.OKB.AlgorithmData dto) {
+      base.Channel.UpdateAlgorithmData(dto);
+    }
+
+    public HeuristicLab.Clients.OKB.AlgorithmParameter GetAlgorithmParameter(long id) {
+      return base.Channel.GetAlgorithmParameter(id);
+    }
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  [System.ServiceModel.ServiceContractAttribute(ConfigurationName = "HeuristicLab.Clients.OKB.IQueryService")]
+  public interface IQueryService {
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IQueryService/GetFilters", ReplyAction = "http://tempuri.org/IQueryService/GetFiltersResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> GetFilters();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IQueryService/QueryNumberOfRuns", ReplyAction = "http://tempuri.org/IQueryService/QueryNumberOfRunsResponse")]
+    long QueryNumberOfRuns(HeuristicLab.Clients.OKB.Filter filter);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IQueryService/QueryRuns", ReplyAction = "http://tempuri.org/IQueryService/QueryRunsResponse")]
+    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> QueryRuns(HeuristicLab.Clients.OKB.Filter filter);
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public interface IQueryServiceChannel : HeuristicLab.Clients.OKB.IQueryService, System.ServiceModel.IClientChannel {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public partial class QueryServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.OKB.IQueryService>, HeuristicLab.Clients.OKB.IQueryService {
+
+    public QueryServiceClient() {
+    }
+
+    public QueryServiceClient(string endpointConfigurationName) :
+      base(endpointConfigurationName) {
+    }
+
+    public QueryServiceClient(string endpointConfigurationName, string remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public QueryServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public QueryServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(binding, remoteAddress) {
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> GetFilters() {
+      return base.Channel.GetFilters();
+    }
+
+    public long QueryNumberOfRuns(HeuristicLab.Clients.OKB.Filter filter) {
+      return base.Channel.QueryNumberOfRuns(filter);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> QueryRuns(HeuristicLab.Clients.OKB.Filter filter) {
+      return base.Channel.QueryRuns(filter);
+    }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/app.config
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/app.config	(revision 5298)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/app.config	(revision 5299)
@@ -11,5 +11,22 @@
     <bindings>
       <wsHttpBinding>
-        <binding name="WSHttpBinding_IOKBService" closeTimeout="00:01:00"
+        <binding name="WSHttpBinding_IAdministrationService" closeTimeout="00:01:00"
+            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+            bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
+            maxBufferPoolSize="524288" maxReceivedMessageSize="200000000"
+            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
+            allowCookies="false">
+          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="200000000"
+              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+          <reliableSession ordered="true" inactivityTimeout="00:10:00"
+              enabled="false" />
+          <security mode="Message">
+            <transport clientCredentialType="Windows" proxyCredentialType="None"
+                realm="" />
+            <message clientCredentialType="UserName" negotiateServiceCredential="true"
+                algorithmSuite="Default" />
+          </security>
+        </binding>
+        <binding name="WSHttpBinding_IQueryService" closeTimeout="00:01:00"
             openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
             bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
@@ -48,7 +65,15 @@
     </bindings>
     <client>
-      <endpoint address="http://localhost:8732/Design_Time_Addresses/OKB-3.3/OKBService"
-          binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IOKBService"
-          contract="HeuristicLab.Clients.OKB.IOKBService" name="WSHttpBinding_IOKBService"
+      <endpoint address="http://localhost:8732/Design_Time_Addresses/OKB-3.3/AdministrationService"
+          binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IAdministrationService"
+          contract="HeuristicLab.Clients.OKB.IAdministrationService"
+          name="WSHttpBinding_IAdministrationService" behaviorConfiguration="DefaultEndpointBehavior">
+        <identity>
+          <certificate encodedValue="AwAAAAEAAAAUAAAAD/AlkYJw/OUhl6D/9w8mjJBh39kgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyMDIyMzIwOFoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPkfCSLRX8/4F+Z4ys43yZ4MMzjB44cMakPz4Nri+mEB5n2z/0GFatCYzkI2f/nniWqVrBYjHkjsZy2EZioHu4wa99c1XEGJnFNDuNn6ESkfEyhyF4+OqKGnpK9HNrw7OWMuqn2oOh0iFd9fl6FTAm+Y0p3LP+38BuYzpCniqqdwIDAQABo0kwRzBFBgNVHQEEPjA8gBDvi8Rgio9v+mr58TiAvqF5oRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQADgYEANdGlvHKeUptfNu9I0wgA5qjmVB+JDldOAkrfM0R+4IcVQ06y5K7P07uxQAV7+rhnDLgLyFJunUHgzbfjsjFy7vjwtoieXA5j0AYlm4AHR7dHt4HVgkIMYt8XOCqMw5jjFX91xJ89tC7mM9zYR48N9T5QSeMGo+f+JzybeLWxnNs=" />
+        </identity>
+      </endpoint>
+      <endpoint address="http://localhost:8732/Design_Time_Addresses/OKB-3.3/QueryService"
+          binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IQueryService"
+          contract="HeuristicLab.Clients.OKB.IQueryService" name="WSHttpBinding_IQueryService"
           behaviorConfiguration="DefaultEndpointBehavior">
         <identity>
@@ -59,5 +84,5 @@
           binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IAuthenticationService"
           contract="HeuristicLab.Clients.OKB.IAuthenticationService"
-          name="WSHttpBinding_IAuthenticationService">
+          name="WSHttpBinding_IAuthenticationService" behaviorConfiguration="DefaultEndpointBehavior">
         <identity>
           <certificate encodedValue="AwAAAAEAAAAUAAAAD/AlkYJw/OUhl6D/9w8mjJBh39kgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMDgyMDIyMzIwOFoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPkfCSLRX8/4F+Z4ys43yZ4MMzjB44cMakPz4Nri+mEB5n2z/0GFatCYzkI2f/nniWqVrBYjHkjsZy2EZioHu4wa99c1XEGJnFNDuNn6ESkfEyhyF4+OqKGnpK9HNrw7OWMuqn2oOh0iFd9fl6FTAm+Y0p3LP+38BuYzpCniqqdwIDAQABo0kwRzBFBgNVHQEEPjA8gBDvi8Rgio9v+mr58TiAvqF5oRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghAdEzTisaf2sEZxrqYZfYtCMAkGBSsOAwIdBQADgYEANdGlvHKeUptfNu9I0wgA5qjmVB+JDldOAkrfM0R+4IcVQ06y5K7P07uxQAV7+rhnDLgLyFJunUHgzbfjsjFy7vjwtoieXA5j0AYlm4AHR7dHt4HVgkIMYt8XOCqMw5jjFX91xJ89tC7mM9zYR48N9T5QSeMGo+f+JzybeLWxnNs=" />
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/AdministrationService.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/AdministrationService.cs	(revision 5299)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/AdministrationService.cs	(revision 5299)
@@ -0,0 +1,564 @@
+﻿#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.Data.Linq;
+using System.Linq;
+using System.ServiceModel;
+using HeuristicLab.Services.OKB.DataAccess;
+
+namespace HeuristicLab.Services.OKB {
+  /// <summary>
+  /// Implementation of the OKB administration service (interface <see cref="IAdministrationService"/>).
+  /// </summary>
+  [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
+  public class AdministrationService : IAdministrationService {
+    #region Platform Methods
+    public DataTransfer.Platform GetPlatform(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.Platforms.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.Platform> GetPlatforms() {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.Platforms.Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddPlatform(DataTransfer.Platform dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Platform entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.Platforms.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void UpdatePlatform(DataTransfer.Platform dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Platform entity = okb.Platforms.FirstOrDefault(x => x.Id == dto.Id);
+        Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    public void DeletePlatform(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Platform entity = okb.Platforms.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.Platforms.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region DataType Methods
+    public DataTransfer.DataType GetDataType(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.DataTypes.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.DataType> GetDataTypes() {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.DataTypes.Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddDataType(DataTransfer.DataType dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.DataType entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.DataTypes.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void UpdateDataType(DataTransfer.DataType dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.DataType entity = okb.DataTypes.FirstOrDefault(x => x.Id == dto.Id);
+        Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    public void DeleteDataType(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.DataType entity = okb.DataTypes.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.DataTypes.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region AlgorithmClass Methods
+    public DataTransfer.AlgorithmClass GetAlgorithmClass(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.AlgorithmClasses.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.AlgorithmClass> GetAlgorithmClasses() {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.AlgorithmClasses.Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddAlgorithmClass(DataTransfer.AlgorithmClass dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.AlgorithmClass entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.AlgorithmClasses.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void UpdateAlgorithmClass(DataTransfer.AlgorithmClass dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.AlgorithmClass entity = okb.AlgorithmClasses.FirstOrDefault(x => x.Id == dto.Id);
+        Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    public void DeleteAlgorithmClass(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.AlgorithmClass entity = okb.AlgorithmClasses.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.AlgorithmClasses.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region Algorithm Methods
+    public DataTransfer.Algorithm GetAlgorithm(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.Algorithms.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.Algorithm> GetAlgorithms() {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.Algorithms.Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddAlgorithm(DataTransfer.Algorithm dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Algorithm entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.Algorithms.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void UpdateAlgorithm(DataTransfer.Algorithm dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Algorithm entity = okb.Algorithms.FirstOrDefault(x => x.Id == dto.Id);
+        Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    public void DeleteAlgorithm(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Algorithm entity = okb.Algorithms.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.Algorithms.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    public IEnumerable<Guid> GetAlgorithmUsers(long algorithmId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.AlgorithmUsers.Where(x => x.AlgorithmId == algorithmId).Select(x => x.UserId).ToArray();
+      }
+    }
+    public void UpdateAlgorithmUsers(long algorithmId, IEnumerable<Guid> users) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        okb.AlgorithmUsers.DeleteAllOnSubmit(okb.AlgorithmUsers.Where(x => x.AlgorithmId == algorithmId));
+        okb.AlgorithmUsers.InsertAllOnSubmit(users.Select(x => new DataAccess.AlgorithmUser { AlgorithmId = algorithmId, UserId = x }));
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region AlgorithmData Methods
+    public DataTransfer.AlgorithmData GetAlgorithmData(long algorithmId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.AlgorithmDatas.FirstOrDefault(x => x.AlgorithmId == algorithmId));
+      }
+    }
+    public void UpdateAlgorithmData(DataTransfer.AlgorithmData dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.AlgorithmData entity = okb.AlgorithmDatas.FirstOrDefault(x => x.AlgorithmId == dto.AlgorithmId);
+        if (entity == null) okb.AlgorithmDatas.InsertOnSubmit(Convert.ToEntity(dto));
+        else Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region AlgorithmParameter Methods
+    public DataTransfer.AlgorithmParameter GetAlgorithmParameter(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.AlgorithmParameters.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.AlgorithmParameter> GetAlgorithmParameters(long algorithmId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.AlgorithmParameters.Where(x => x.AlgorithmId == algorithmId).Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddAlgorithmParameter(DataTransfer.AlgorithmParameter dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.AlgorithmParameter entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.AlgorithmParameters.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void UpdateAlgorithmParameter(DataTransfer.AlgorithmParameter dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.AlgorithmParameter entity = okb.AlgorithmParameters.FirstOrDefault(x => x.Id == dto.Id);
+        Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    public void DeleteAlgorithmParameter(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.AlgorithmParameter entity = okb.AlgorithmParameters.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.AlgorithmParameters.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region ProblemClass Methods
+    public DataTransfer.ProblemClass GetProblemClass(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.ProblemClasses.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.ProblemClass> GetProblemClasses() {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.ProblemClasses.Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddProblemClass(DataTransfer.ProblemClass dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.ProblemClass entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.ProblemClasses.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void UpdateProblemClass(DataTransfer.ProblemClass dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.ProblemClass entity = okb.ProblemClasses.FirstOrDefault(x => x.Id == dto.Id);
+        Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    public void DeleteProblemClass(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.ProblemClass entity = okb.ProblemClasses.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.ProblemClasses.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region Problem Methods
+    public DataTransfer.Problem GetProblem(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.Problems.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.Problem> GetProblems() {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.Problems.Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddProblem(DataTransfer.Problem dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Problem entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.Problems.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void UpdateProblem(DataTransfer.Problem dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Problem entity = okb.Problems.FirstOrDefault(x => x.Id == dto.Id);
+        Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    public void DeleteProblem(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Problem entity = okb.Problems.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.Problems.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    public IEnumerable<Guid> GetProblemUsers(long problemId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.ProblemUsers.Where(x => x.ProblemId == problemId).Select(x => x.UserId).ToArray();
+      }
+    }
+    public void UpdateProblemUsers(long problemId, IEnumerable<Guid> users) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        okb.ProblemUsers.DeleteAllOnSubmit(okb.ProblemUsers.Where(x => x.ProblemId == problemId));
+        okb.ProblemUsers.InsertAllOnSubmit(users.Select(x => new DataAccess.ProblemUser { ProblemId = problemId, UserId = x }));
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region ProblemData Methods
+    public DataTransfer.ProblemData GetProblemData(long problemId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.ProblemDatas.FirstOrDefault(x => x.ProblemId == problemId));
+      }
+    }
+    public void UpdateProblemData(DataTransfer.ProblemData dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.ProblemData entity = okb.ProblemDatas.FirstOrDefault(x => x.ProblemId == dto.ProblemId);
+        if (entity == null) okb.ProblemDatas.InsertOnSubmit(Convert.ToEntity(dto));
+        else Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region ProblemParameter Methods
+    public DataTransfer.ProblemParameter GetProblemParameter(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.ProblemParameters.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.ProblemParameter> GetProblemParameters(long problemId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.ProblemParameters.Where(x => x.ProblemId == problemId).Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddProblemParameter(DataTransfer.ProblemParameter dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.ProblemParameter entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.ProblemParameters.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void UpdateProblemParameter(DataTransfer.ProblemParameter dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.ProblemParameter entity = okb.ProblemParameters.FirstOrDefault(x => x.Id == dto.Id);
+        Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    public void DeleteProblemParameter(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.ProblemParameter entity = okb.ProblemParameters.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.ProblemParameters.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region Result Methods
+    public DataTransfer.Result GetResult(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return Convert.ToDto(okb.Results.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.Result> GetResults(long algorithmId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        return okb.Results.Where(x => x.AlgorithmId == algorithmId).Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddResult(DataTransfer.Result dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Result entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.Results.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void UpdateResult(DataTransfer.Result dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Result entity = okb.Results.FirstOrDefault(x => x.Id == dto.Id);
+        Convert.ToEntity(dto, entity);
+        okb.SubmitChanges();
+      }
+    }
+    public void DeleteResult(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Result entity = okb.Results.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.Results.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region Experiment Methods
+    public DataTransfer.Experiment GetExperiment(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataLoadOptions dlo = new DataLoadOptions();
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBlobValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBoolValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterFloatValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterIntValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterStringValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterBlobValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterBoolValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterFloatValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterIntValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterStringValues);
+        okb.LoadOptions = dlo;
+        return Convert.ToDto(okb.Experiments.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.Experiment> GetExperiments(long algorithmId, long problemId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataLoadOptions dlo = new DataLoadOptions();
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBlobValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBoolValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterFloatValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterIntValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterStringValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterBlobValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterBoolValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterFloatValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterIntValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterStringValues);
+        okb.LoadOptions = dlo;
+        if ((algorithmId != 0) && (problemId != 0))
+          return okb.Experiments.Where(x => (x.AlgorithmId == algorithmId) && (x.ProblemId == problemId)).Select(x => Convert.ToDto(x)).ToArray();
+        else if (algorithmId != 0)
+          return okb.Experiments.Where(x => x.AlgorithmId == algorithmId).Select(x => Convert.ToDto(x)).ToArray();
+        else if (problemId != 0)
+          return okb.Experiments.Where(x => x.ProblemId == problemId).Select(x => Convert.ToDto(x)).ToArray();
+        else
+          return okb.Experiments.Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddExperiment(DataTransfer.Experiment dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Experiment entity = Convert.ToEntity(dto); entity.Id = 0;
+
+        DataLoadOptions dlo = new DataLoadOptions();
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBlobValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBoolValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterFloatValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterIntValues);
+        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterStringValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterBlobValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterBoolValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterFloatValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterIntValues);
+        dlo.LoadWith<Experiment>(x => x.ProblemParameterStringValues);
+        okb.LoadOptions = dlo;
+
+        var experiments = okb.Experiments.Where(x => ((x.AlgorithmId == entity.AlgorithmId) && (x.ProblemId == entity.ProblemId))).ToArray();
+        ExperimentEqualityComparer comparer = new ExperimentEqualityComparer();
+        Experiment exp = experiments.FirstOrDefault(x => comparer.Equals(x, entity));
+        if (exp != null) {
+          return exp.Id;
+        } else {
+          okb.Experiments.InsertOnSubmit(entity);
+          okb.SubmitChanges();
+          return entity.Id;
+        }
+      }
+    }
+    public void DeleteExperiment(long id) {
+      foreach (DataTransfer.Run run in GetRuns(id))
+        DeleteRun(run.Id);
+
+      using (OKBDataContext okb = new OKBDataContext()) {
+        IEnumerable<DataAccess.AlgorithmParameterBlobValue> algorithmParameterBlobValues = okb.AlgorithmParameterBlobValues.Where(x => x.ExperimentId == id);
+        okb.AlgorithmParameterBlobValues.DeleteAllOnSubmit(algorithmParameterBlobValues);
+        IEnumerable<DataAccess.AlgorithmParameterBoolValue> algorithmParameterBoolValues = okb.AlgorithmParameterBoolValues.Where(x => x.ExperimentId == id);
+        okb.AlgorithmParameterBoolValues.DeleteAllOnSubmit(algorithmParameterBoolValues);
+        IEnumerable<DataAccess.AlgorithmParameterFloatValue> algorithmParameterFloatValues = okb.AlgorithmParameterFloatValues.Where(x => x.ExperimentId == id);
+        okb.AlgorithmParameterFloatValues.DeleteAllOnSubmit(algorithmParameterFloatValues);
+        IEnumerable<DataAccess.AlgorithmParameterIntValue> algorithmParameterIntValues = okb.AlgorithmParameterIntValues.Where(x => x.ExperimentId == id);
+        okb.AlgorithmParameterIntValues.DeleteAllOnSubmit(algorithmParameterIntValues);
+        IEnumerable<DataAccess.AlgorithmParameterStringValue> algorithmParameterStringValues = okb.AlgorithmParameterStringValues.Where(x => x.ExperimentId == id);
+        okb.AlgorithmParameterStringValues.DeleteAllOnSubmit(algorithmParameterStringValues);
+
+        IEnumerable<DataAccess.ProblemParameterBlobValue> problemParameterBlobValues = okb.ProblemParameterBlobValues.Where(x => x.ExperimentId == id);
+        okb.ProblemParameterBlobValues.DeleteAllOnSubmit(problemParameterBlobValues);
+        IEnumerable<DataAccess.ProblemParameterBoolValue> problemParameterBoolValues = okb.ProblemParameterBoolValues.Where(x => x.ExperimentId == id);
+        okb.ProblemParameterBoolValues.DeleteAllOnSubmit(problemParameterBoolValues);
+        IEnumerable<DataAccess.ProblemParameterFloatValue> problemParameterFloatValues = okb.ProblemParameterFloatValues.Where(x => x.ExperimentId == id);
+        okb.ProblemParameterFloatValues.DeleteAllOnSubmit(problemParameterFloatValues);
+        IEnumerable<DataAccess.ProblemParameterIntValue> problemParameterIntValues = okb.ProblemParameterIntValues.Where(x => x.ExperimentId == id);
+        okb.ProblemParameterIntValues.DeleteAllOnSubmit(problemParameterIntValues);
+        IEnumerable<DataAccess.ProblemParameterStringValue> problemParameterStringValues = okb.ProblemParameterStringValues.Where(x => x.ExperimentId == id);
+        okb.ProblemParameterStringValues.DeleteAllOnSubmit(problemParameterStringValues);
+
+        DataAccess.Experiment entity = okb.Experiments.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.Experiments.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+
+    #region Run Methods
+    public DataTransfer.Run GetRun(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataLoadOptions dlo = new DataLoadOptions();
+        dlo.LoadWith<Run>(x => x.ResultBlobValues);
+        dlo.LoadWith<Run>(x => x.ResultBoolValues);
+        dlo.LoadWith<Run>(x => x.ResultFloatValues);
+        dlo.LoadWith<Run>(x => x.ResultIntValues);
+        dlo.LoadWith<Run>(x => x.ResultStringValues);
+        okb.LoadOptions = dlo;
+        return Convert.ToDto(okb.Runs.FirstOrDefault(x => x.Id == id));
+      }
+    }
+    public IEnumerable<DataTransfer.Run> GetRuns(long experimentId) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataLoadOptions dlo = new DataLoadOptions();
+        dlo.LoadWith<Run>(x => x.ResultBlobValues);
+        dlo.LoadWith<Run>(x => x.ResultBoolValues);
+        dlo.LoadWith<Run>(x => x.ResultFloatValues);
+        dlo.LoadWith<Run>(x => x.ResultIntValues);
+        dlo.LoadWith<Run>(x => x.ResultStringValues);
+        okb.LoadOptions = dlo;
+        return okb.Runs.Where(x => x.ExperimentId == experimentId).Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
+    public long AddRun(DataTransfer.Run dto) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        DataAccess.Run entity = Convert.ToEntity(dto); entity.Id = 0;
+        okb.Runs.InsertOnSubmit(entity);
+        okb.SubmitChanges();
+        return entity.Id;
+      }
+    }
+    public void DeleteRun(long id) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        IEnumerable<DataAccess.ResultBlobValue> resultBlobValues = okb.ResultBlobValues.Where(x => x.RunId == id);
+        okb.ResultBlobValues.DeleteAllOnSubmit(resultBlobValues);
+        IEnumerable<DataAccess.ResultBoolValue> resultBoolValues = okb.ResultBoolValues.Where(x => x.RunId == id);
+        okb.ResultBoolValues.DeleteAllOnSubmit(resultBoolValues);
+        IEnumerable<DataAccess.ResultFloatValue> resultFloatValues = okb.ResultFloatValues.Where(x => x.RunId == id);
+        okb.ResultFloatValues.DeleteAllOnSubmit(resultFloatValues);
+        IEnumerable<DataAccess.ResultIntValue> resultIntValues = okb.ResultIntValues.Where(x => x.RunId == id);
+        okb.ResultIntValues.DeleteAllOnSubmit(resultIntValues);
+        IEnumerable<DataAccess.ResultStringValue> resultStringValues = okb.ResultStringValues.Where(x => x.RunId == id);
+        okb.ResultStringValues.DeleteAllOnSubmit(resultStringValues);
+
+        DataAccess.Run entity = okb.Runs.FirstOrDefault(x => x.Id == id);
+        if (entity != null) okb.Runs.DeleteOnSubmit(entity);
+        okb.SubmitChanges();
+      }
+    }
+    #endregion
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Filters/IFilter.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Filters/IFilter.cs	(revision 5298)
+++ 	(revision )
@@ -1,30 +1,0 @@
-﻿#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.Linq.Expressions;
-using HeuristicLab.Services.OKB.DataAccess;
-
-namespace HeuristicLab.Services.OKB {
-  public interface IFilter {
-    Expression<Func<Run, bool>> Expression { get; }
-  }
-}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/HeuristicLab.Services.OKB-3.3.csproj
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/HeuristicLab.Services.OKB-3.3.csproj	(revision 5298)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/HeuristicLab.Services.OKB-3.3.csproj	(revision 5299)
@@ -120,6 +120,9 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="AdministrationService.cs" />
     <Compile Include="Convert.cs" />
     <Compile Include="AuthenticationService.cs" />
+    <Compile Include="Interfaces\IAdministrationService.cs" />
+    <Compile Include="QueryService.cs" />
     <Compile Include="Filters\AlgorithmParameterBlobValueDataTypeNameFilter.cs" />
     <Compile Include="Filters\AlgorithmParameterBlobValueValueFilter.cs" />
@@ -159,8 +162,7 @@
     <Compile Include="GenericEqualityComparer.cs" />
     <Compile Include="ExperimentEqualityComparer.cs" />
-    <Compile Include="Filters\IFilter.cs" />
+    <Compile Include="Interfaces\IQueryService.cs" />
     <Compile Include="Interfaces\IAuthenticationService.cs" />
-    <Compile Include="Interfaces\IOKBService.cs" />
-    <Compile Include="OKBService.cs" />
+    <Compile Include="Interfaces\IFilter.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IAdministrationService.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IAdministrationService.cs	(revision 5299)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IAdministrationService.cs	(revision 5299)
@@ -0,0 +1,195 @@
+﻿#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.Net.Security;
+using System.ServiceModel;
+using HeuristicLab.Services.OKB.DataTransfer;
+
+namespace HeuristicLab.Services.OKB {
+  /// <summary>
+  /// Interface of the OKB administration service.
+  /// </summary>
+  [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
+  public interface IAdministrationService {
+    #region Platform Methods
+    [OperationContract]
+    Platform GetPlatform(long id);
+    [OperationContract]
+    IEnumerable<Platform> GetPlatforms();
+    [OperationContract]
+    long AddPlatform(Platform dto);
+    [OperationContract]
+    void UpdatePlatform(Platform dto);
+    [OperationContract]
+    void DeletePlatform(long id);
+    #endregion
+
+    #region DataType Methods
+    [OperationContract]
+    DataType GetDataType(long id);
+    [OperationContract]
+    IEnumerable<DataType> GetDataTypes();
+    [OperationContract]
+    long AddDataType(DataType dto);
+    [OperationContract]
+    void UpdateDataType(DataType dto);
+    [OperationContract]
+    void DeleteDataType(long id);
+    #endregion
+
+    #region AlgorithmClass Methods
+    [OperationContract]
+    AlgorithmClass GetAlgorithmClass(long id);
+    [OperationContract]
+    IEnumerable<AlgorithmClass> GetAlgorithmClasses();
+    [OperationContract]
+    long AddAlgorithmClass(AlgorithmClass dto);
+    [OperationContract]
+    void UpdateAlgorithmClass(AlgorithmClass dto);
+    [OperationContract]
+    void DeleteAlgorithmClass(long id);
+    #endregion
+
+    #region Algorithm Methods
+    [OperationContract]
+    Algorithm GetAlgorithm(long id);
+    [OperationContract]
+    IEnumerable<Algorithm> GetAlgorithms();
+    [OperationContract]
+    long AddAlgorithm(Algorithm dto);
+    [OperationContract]
+    void UpdateAlgorithm(Algorithm dto);
+    [OperationContract]
+    void DeleteAlgorithm(long id);
+    [OperationContract]
+    IEnumerable<Guid> GetAlgorithmUsers(long algorithmId);
+    [OperationContract]
+    void UpdateAlgorithmUsers(long algorithmId, IEnumerable<Guid> users);
+    #endregion
+
+    #region AlgorithmData Methods
+    [OperationContract]
+    AlgorithmData GetAlgorithmData(long algorithmId);
+    [OperationContract]
+    void UpdateAlgorithmData(AlgorithmData dto);
+    #endregion
+
+    #region AlgorithmParameter Methods
+    [OperationContract]
+    AlgorithmParameter GetAlgorithmParameter(long id);
+    [OperationContract]
+    IEnumerable<AlgorithmParameter> GetAlgorithmParameters(long algorithmId);
+    [OperationContract]
+    long AddAlgorithmParameter(AlgorithmParameter dto);
+    [OperationContract]
+    void UpdateAlgorithmParameter(AlgorithmParameter dto);
+    [OperationContract]
+    void DeleteAlgorithmParameter(long id);
+    #endregion
+
+    #region ProblemClass Methods
+    [OperationContract]
+    ProblemClass GetProblemClass(long id);
+    [OperationContract]
+    IEnumerable<ProblemClass> GetProblemClasses();
+    [OperationContract]
+    long AddProblemClass(ProblemClass dto);
+    [OperationContract]
+    void UpdateProblemClass(ProblemClass dto);
+    [OperationContract]
+    void DeleteProblemClass(long id);
+    #endregion
+
+    #region Problem Methods
+    [OperationContract]
+    Problem GetProblem(long id);
+    [OperationContract]
+    IEnumerable<Problem> GetProblems();
+    [OperationContract]
+    long AddProblem(Problem dto);
+    [OperationContract]
+    void UpdateProblem(Problem dto);
+    [OperationContract]
+    void DeleteProblem(long id);
+    [OperationContract]
+    IEnumerable<Guid> GetProblemUsers(long problemId);
+    [OperationContract]
+    void UpdateProblemUsers(long problemId, IEnumerable<Guid> users);
+    #endregion
+
+    #region ProblemData Methods
+    [OperationContract]
+    ProblemData GetProblemData(long problemId);
+    [OperationContract]
+    void UpdateProblemData(ProblemData dto);
+    #endregion
+
+    #region ProblemParameter Methods
+    [OperationContract]
+    ProblemParameter GetProblemParameter(long id);
+    [OperationContract]
+    IEnumerable<ProblemParameter> GetProblemParameters(long problemId);
+    [OperationContract]
+    long AddProblemParameter(ProblemParameter dto);
+    [OperationContract]
+    void UpdateProblemParameter(ProblemParameter dto);
+    [OperationContract]
+    void DeleteProblemParameter(long id);
+    #endregion
+
+    #region Result Methods
+    [OperationContract]
+    Result GetResult(long id);
+    [OperationContract]
+    IEnumerable<Result> GetResults(long algorithmId);
+    [OperationContract]
+    long AddResult(Result dto);
+    [OperationContract]
+    void UpdateResult(Result dto);
+    [OperationContract]
+    void DeleteResult(long id);
+    #endregion
+
+    #region Experiment Methods
+    [OperationContract]
+    Experiment GetExperiment(long id);
+    [OperationContract]
+    IEnumerable<Experiment> GetExperiments(long algorithmId, long problemId);
+    [OperationContract]
+    long AddExperiment(Experiment dto);
+    [OperationContract]
+    void DeleteExperiment(long id);
+    #endregion
+
+    #region Run Methods
+    [OperationContract]
+    Run GetRun(long id);
+    [OperationContract]
+    IEnumerable<Run> GetRuns(long experimentId);
+    [OperationContract]
+    long AddRun(Run dto);
+    [OperationContract]
+    void DeleteRun(long id);
+    #endregion
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IFilter.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IFilter.cs	(revision 5299)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IFilter.cs	(revision 5299)
@@ -0,0 +1,30 @@
+﻿#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.Linq.Expressions;
+using HeuristicLab.Services.OKB.DataAccess;
+
+namespace HeuristicLab.Services.OKB {
+  public interface IFilter {
+    Expression<Func<Run, bool>> Expression { get; }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IOKBService.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IOKBService.cs	(revision 5298)
+++ 	(revision )
@@ -1,204 +1,0 @@
-﻿#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.Net.Security;
-using System.ServiceModel;
-using HeuristicLab.Services.OKB.DataTransfer;
-
-namespace HeuristicLab.Services.OKB {
-  /// <summary>
-  /// Interface of the OKB service.
-  /// </summary>
-  [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
-  public interface IOKBService {
-    #region Platform Methods
-    [OperationContract]
-    Platform GetPlatform(long id);
-    [OperationContract]
-    IEnumerable<Platform> GetPlatforms();
-    [OperationContract]
-    long AddPlatform(Platform dto);
-    [OperationContract]
-    void UpdatePlatform(Platform dto);
-    [OperationContract]
-    void DeletePlatform(long id);
-    #endregion
-
-    #region DataType Methods
-    [OperationContract]
-    DataType GetDataType(long id);
-    [OperationContract]
-    IEnumerable<DataType> GetDataTypes();
-    [OperationContract]
-    long AddDataType(DataType dto);
-    [OperationContract]
-    void UpdateDataType(DataType dto);
-    [OperationContract]
-    void DeleteDataType(long id);
-    #endregion
-
-    #region AlgorithmClass Methods
-    [OperationContract]
-    AlgorithmClass GetAlgorithmClass(long id);
-    [OperationContract]
-    IEnumerable<AlgorithmClass> GetAlgorithmClasses();
-    [OperationContract]
-    long AddAlgorithmClass(AlgorithmClass dto);
-    [OperationContract]
-    void UpdateAlgorithmClass(AlgorithmClass dto);
-    [OperationContract]
-    void DeleteAlgorithmClass(long id);
-    #endregion
-
-    #region Algorithm Methods
-    [OperationContract]
-    Algorithm GetAlgorithm(long id);
-    [OperationContract]
-    IEnumerable<Algorithm> GetAlgorithms();
-    [OperationContract]
-    long AddAlgorithm(Algorithm dto);
-    [OperationContract]
-    void UpdateAlgorithm(Algorithm dto);
-    [OperationContract]
-    void DeleteAlgorithm(long id);
-    [OperationContract]
-    IEnumerable<Guid> GetAlgorithmUsers(long algorithmId);
-    [OperationContract]
-    void UpdateAlgorithmUsers(long algorithmId, IEnumerable<Guid> users);
-    #endregion
-
-    #region AlgorithmData Methods
-    [OperationContract]
-    AlgorithmData GetAlgorithmData(long algorithmId);
-    [OperationContract]
-    void UpdateAlgorithmData(AlgorithmData dto);
-    #endregion
-
-    #region AlgorithmParameter Methods
-    [OperationContract]
-    AlgorithmParameter GetAlgorithmParameter(long id);
-    [OperationContract]
-    IEnumerable<AlgorithmParameter> GetAlgorithmParameters(long algorithmId);
-    [OperationContract]
-    long AddAlgorithmParameter(AlgorithmParameter dto);
-    [OperationContract]
-    void UpdateAlgorithmParameter(AlgorithmParameter dto);
-    [OperationContract]
-    void DeleteAlgorithmParameter(long id);
-    #endregion
-
-    #region ProblemClass Methods
-    [OperationContract]
-    ProblemClass GetProblemClass(long id);
-    [OperationContract]
-    IEnumerable<ProblemClass> GetProblemClasses();
-    [OperationContract]
-    long AddProblemClass(ProblemClass dto);
-    [OperationContract]
-    void UpdateProblemClass(ProblemClass dto);
-    [OperationContract]
-    void DeleteProblemClass(long id);
-    #endregion
-
-    #region Problem Methods
-    [OperationContract]
-    Problem GetProblem(long id);
-    [OperationContract]
-    IEnumerable<Problem> GetProblems();
-    [OperationContract]
-    long AddProblem(Problem dto);
-    [OperationContract]
-    void UpdateProblem(Problem dto);
-    [OperationContract]
-    void DeleteProblem(long id);
-    [OperationContract]
-    IEnumerable<Guid> GetProblemUsers(long problemId);
-    [OperationContract]
-    void UpdateProblemUsers(long problemId, IEnumerable<Guid> users);
-    #endregion
-
-    #region ProblemData Methods
-    [OperationContract]
-    ProblemData GetProblemData(long problemId);
-    [OperationContract]
-    void UpdateProblemData(ProblemData dto);
-    #endregion
-
-    #region ProblemParameter Methods
-    [OperationContract]
-    ProblemParameter GetProblemParameter(long id);
-    [OperationContract]
-    IEnumerable<ProblemParameter> GetProblemParameters(long problemId);
-    [OperationContract]
-    long AddProblemParameter(ProblemParameter dto);
-    [OperationContract]
-    void UpdateProblemParameter(ProblemParameter dto);
-    [OperationContract]
-    void DeleteProblemParameter(long id);
-    #endregion
-
-    #region Result Methods
-    [OperationContract]
-    Result GetResult(long id);
-    [OperationContract]
-    IEnumerable<Result> GetResults(long algorithmId);
-    [OperationContract]
-    long AddResult(Result dto);
-    [OperationContract]
-    void UpdateResult(Result dto);
-    [OperationContract]
-    void DeleteResult(long id);
-    #endregion
-
-    #region Experiment Methods
-    [OperationContract]
-    Experiment GetExperiment(long id);
-    [OperationContract]
-    IEnumerable<Experiment> GetExperiments(long algorithmId, long problemId);
-    [OperationContract]
-    long AddExperiment(Experiment dto);
-    [OperationContract]
-    void DeleteExperiment(long id);
-    #endregion
-
-    #region Run Methods
-    [OperationContract]
-    Run GetRun(long id);
-    [OperationContract]
-    IEnumerable<Run> GetRuns(long experimentId);
-    [OperationContract]
-    long AddRun(Run dto);
-    [OperationContract]
-    void DeleteRun(long id);
-    #endregion
-
-    #region Query Methods
-    [OperationContract]
-    IEnumerable<Filter> GetFilters();
-    [OperationContract]
-    long QueryNumberOfRuns(Filter filter);
-    [OperationContract]
-    IEnumerable<Run> QueryRuns(Filter filter);
-    #endregion
-  }
-}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IQueryService.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IQueryService.cs	(revision 5299)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IQueryService.cs	(revision 5299)
@@ -0,0 +1,42 @@
+﻿#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.Collections.Generic;
+using System.Net.Security;
+using System.ServiceModel;
+using HeuristicLab.Services.OKB.DataTransfer;
+
+namespace HeuristicLab.Services.OKB {
+  /// <summary>
+  /// Interface of the OKB query service.
+  /// </summary>
+  [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
+  public interface IQueryService {
+    [OperationContract]
+    IEnumerable<Filter> GetFilters();
+
+    [OperationContract]
+    long QueryNumberOfRuns(Filter filter);
+
+    [OperationContract]
+    IEnumerable<Run> QueryRuns(Filter filter);
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/OKBService.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/OKBService.cs	(revision 5298)
+++ 	(revision )
@@ -1,863 +1,0 @@
-﻿#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.Data.Linq;
-using System.Linq;
-using System.ServiceModel;
-using HeuristicLab.Services.OKB.DataAccess;
-
-namespace HeuristicLab.Services.OKB {
-  /// <summary>
-  /// Implementation of the OKB service (interface <see cref="IOKBService"/>).
-  /// </summary>
-  [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
-  public class OKBService : IOKBService {
-    #region Platform Methods
-    public DataTransfer.Platform GetPlatform(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.Platforms.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.Platform> GetPlatforms() {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.Platforms.Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddPlatform(DataTransfer.Platform dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Platform entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.Platforms.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void UpdatePlatform(DataTransfer.Platform dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Platform entity = okb.Platforms.FirstOrDefault(x => x.Id == dto.Id);
-        Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    public void DeletePlatform(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Platform entity = okb.Platforms.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.Platforms.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region DataType Methods
-    public DataTransfer.DataType GetDataType(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.DataTypes.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.DataType> GetDataTypes() {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.DataTypes.Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddDataType(DataTransfer.DataType dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.DataType entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.DataTypes.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void UpdateDataType(DataTransfer.DataType dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.DataType entity = okb.DataTypes.FirstOrDefault(x => x.Id == dto.Id);
-        Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    public void DeleteDataType(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.DataType entity = okb.DataTypes.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.DataTypes.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region AlgorithmClass Methods
-    public DataTransfer.AlgorithmClass GetAlgorithmClass(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.AlgorithmClasses.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.AlgorithmClass> GetAlgorithmClasses() {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.AlgorithmClasses.Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddAlgorithmClass(DataTransfer.AlgorithmClass dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.AlgorithmClass entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.AlgorithmClasses.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void UpdateAlgorithmClass(DataTransfer.AlgorithmClass dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.AlgorithmClass entity = okb.AlgorithmClasses.FirstOrDefault(x => x.Id == dto.Id);
-        Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    public void DeleteAlgorithmClass(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.AlgorithmClass entity = okb.AlgorithmClasses.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.AlgorithmClasses.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region Algorithm Methods
-    public DataTransfer.Algorithm GetAlgorithm(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.Algorithms.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.Algorithm> GetAlgorithms() {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.Algorithms.Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddAlgorithm(DataTransfer.Algorithm dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Algorithm entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.Algorithms.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void UpdateAlgorithm(DataTransfer.Algorithm dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Algorithm entity = okb.Algorithms.FirstOrDefault(x => x.Id == dto.Id);
-        Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    public void DeleteAlgorithm(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Algorithm entity = okb.Algorithms.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.Algorithms.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    public IEnumerable<Guid> GetAlgorithmUsers(long algorithmId) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.AlgorithmUsers.Where(x => x.AlgorithmId == algorithmId).Select(x => x.UserId).ToArray();
-      }
-    }
-    public void UpdateAlgorithmUsers(long algorithmId, IEnumerable<Guid> users) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        okb.AlgorithmUsers.DeleteAllOnSubmit(okb.AlgorithmUsers.Where(x => x.AlgorithmId == algorithmId));
-        okb.AlgorithmUsers.InsertAllOnSubmit(users.Select(x => new DataAccess.AlgorithmUser { AlgorithmId = algorithmId, UserId = x }));
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region AlgorithmData Methods
-    public DataTransfer.AlgorithmData GetAlgorithmData(long algorithmId) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.AlgorithmDatas.FirstOrDefault(x => x.AlgorithmId == algorithmId));
-      }
-    }
-    public void UpdateAlgorithmData(DataTransfer.AlgorithmData dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.AlgorithmData entity = okb.AlgorithmDatas.FirstOrDefault(x => x.AlgorithmId == dto.AlgorithmId);
-        if (entity == null) okb.AlgorithmDatas.InsertOnSubmit(Convert.ToEntity(dto));
-        else Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region AlgorithmParameter Methods
-    public DataTransfer.AlgorithmParameter GetAlgorithmParameter(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.AlgorithmParameters.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.AlgorithmParameter> GetAlgorithmParameters(long algorithmId) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.AlgorithmParameters.Where(x => x.AlgorithmId == algorithmId).Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddAlgorithmParameter(DataTransfer.AlgorithmParameter dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.AlgorithmParameter entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.AlgorithmParameters.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void UpdateAlgorithmParameter(DataTransfer.AlgorithmParameter dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.AlgorithmParameter entity = okb.AlgorithmParameters.FirstOrDefault(x => x.Id == dto.Id);
-        Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    public void DeleteAlgorithmParameter(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.AlgorithmParameter entity = okb.AlgorithmParameters.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.AlgorithmParameters.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region ProblemClass Methods
-    public DataTransfer.ProblemClass GetProblemClass(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.ProblemClasses.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.ProblemClass> GetProblemClasses() {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.ProblemClasses.Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddProblemClass(DataTransfer.ProblemClass dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.ProblemClass entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.ProblemClasses.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void UpdateProblemClass(DataTransfer.ProblemClass dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.ProblemClass entity = okb.ProblemClasses.FirstOrDefault(x => x.Id == dto.Id);
-        Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    public void DeleteProblemClass(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.ProblemClass entity = okb.ProblemClasses.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.ProblemClasses.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region Problem Methods
-    public DataTransfer.Problem GetProblem(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.Problems.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.Problem> GetProblems() {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.Problems.Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddProblem(DataTransfer.Problem dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Problem entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.Problems.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void UpdateProblem(DataTransfer.Problem dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Problem entity = okb.Problems.FirstOrDefault(x => x.Id == dto.Id);
-        Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    public void DeleteProblem(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Problem entity = okb.Problems.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.Problems.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    public IEnumerable<Guid> GetProblemUsers(long problemId) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.ProblemUsers.Where(x => x.ProblemId == problemId).Select(x => x.UserId).ToArray();
-      }
-    }
-    public void UpdateProblemUsers(long problemId, IEnumerable<Guid> users) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        okb.ProblemUsers.DeleteAllOnSubmit(okb.ProblemUsers.Where(x => x.ProblemId == problemId));
-        okb.ProblemUsers.InsertAllOnSubmit(users.Select(x => new DataAccess.ProblemUser { ProblemId = problemId, UserId = x }));
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region ProblemData Methods
-    public DataTransfer.ProblemData GetProblemData(long problemId) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.ProblemDatas.FirstOrDefault(x => x.ProblemId == problemId));
-      }
-    }
-    public void UpdateProblemData(DataTransfer.ProblemData dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.ProblemData entity = okb.ProblemDatas.FirstOrDefault(x => x.ProblemId == dto.ProblemId);
-        if (entity == null) okb.ProblemDatas.InsertOnSubmit(Convert.ToEntity(dto));
-        else Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region ProblemParameter Methods
-    public DataTransfer.ProblemParameter GetProblemParameter(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.ProblemParameters.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.ProblemParameter> GetProblemParameters(long problemId) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.ProblemParameters.Where(x => x.ProblemId == problemId).Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddProblemParameter(DataTransfer.ProblemParameter dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.ProblemParameter entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.ProblemParameters.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void UpdateProblemParameter(DataTransfer.ProblemParameter dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.ProblemParameter entity = okb.ProblemParameters.FirstOrDefault(x => x.Id == dto.Id);
-        Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    public void DeleteProblemParameter(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.ProblemParameter entity = okb.ProblemParameters.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.ProblemParameters.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region Result Methods
-    public DataTransfer.Result GetResult(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return Convert.ToDto(okb.Results.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.Result> GetResults(long algorithmId) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        return okb.Results.Where(x => x.AlgorithmId == algorithmId).Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddResult(DataTransfer.Result dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Result entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.Results.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void UpdateResult(DataTransfer.Result dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Result entity = okb.Results.FirstOrDefault(x => x.Id == dto.Id);
-        Convert.ToEntity(dto, entity);
-        okb.SubmitChanges();
-      }
-    }
-    public void DeleteResult(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Result entity = okb.Results.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.Results.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region Experiment Methods
-    public DataTransfer.Experiment GetExperiment(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataLoadOptions dlo = new DataLoadOptions();
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBlobValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBoolValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterFloatValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterIntValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterStringValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterBlobValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterBoolValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterFloatValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterIntValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterStringValues);
-        okb.LoadOptions = dlo;
-        return Convert.ToDto(okb.Experiments.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.Experiment> GetExperiments(long algorithmId, long problemId) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataLoadOptions dlo = new DataLoadOptions();
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBlobValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBoolValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterFloatValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterIntValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterStringValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterBlobValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterBoolValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterFloatValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterIntValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterStringValues);
-        okb.LoadOptions = dlo;
-        if ((algorithmId != 0) && (problemId != 0))
-          return okb.Experiments.Where(x => (x.AlgorithmId == algorithmId) && (x.ProblemId == problemId)).Select(x => Convert.ToDto(x)).ToArray();
-        else if (algorithmId != 0)
-          return okb.Experiments.Where(x => x.AlgorithmId == algorithmId).Select(x => Convert.ToDto(x)).ToArray();
-        else if (problemId != 0)
-          return okb.Experiments.Where(x => x.ProblemId == problemId).Select(x => Convert.ToDto(x)).ToArray();
-        else
-          return okb.Experiments.Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddExperiment(DataTransfer.Experiment dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Experiment entity = Convert.ToEntity(dto); entity.Id = 0;
-
-        DataLoadOptions dlo = new DataLoadOptions();
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBlobValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBoolValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterFloatValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterIntValues);
-        dlo.LoadWith<Experiment>(x => x.AlgorithmParameterStringValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterBlobValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterBoolValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterFloatValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterIntValues);
-        dlo.LoadWith<Experiment>(x => x.ProblemParameterStringValues);
-        okb.LoadOptions = dlo;
-
-        var experiments = okb.Experiments.Where(x => ((x.AlgorithmId == entity.AlgorithmId) && (x.ProblemId == entity.ProblemId))).ToArray();
-        ExperimentEqualityComparer comparer = new ExperimentEqualityComparer();
-        Experiment exp = experiments.FirstOrDefault(x => comparer.Equals(x, entity));
-        if (exp != null) {
-          return exp.Id;
-        } else {
-          okb.Experiments.InsertOnSubmit(entity);
-          okb.SubmitChanges();
-          return entity.Id;
-        }
-      }
-    }
-    public void DeleteExperiment(long id) {
-      foreach (DataTransfer.Run run in GetRuns(id))
-        DeleteRun(run.Id);
-
-      using (OKBDataContext okb = new OKBDataContext()) {
-        IEnumerable<DataAccess.AlgorithmParameterBlobValue> algorithmParameterBlobValues = okb.AlgorithmParameterBlobValues.Where(x => x.ExperimentId == id);
-        okb.AlgorithmParameterBlobValues.DeleteAllOnSubmit(algorithmParameterBlobValues);
-        IEnumerable<DataAccess.AlgorithmParameterBoolValue> algorithmParameterBoolValues = okb.AlgorithmParameterBoolValues.Where(x => x.ExperimentId == id);
-        okb.AlgorithmParameterBoolValues.DeleteAllOnSubmit(algorithmParameterBoolValues);
-        IEnumerable<DataAccess.AlgorithmParameterFloatValue> algorithmParameterFloatValues = okb.AlgorithmParameterFloatValues.Where(x => x.ExperimentId == id);
-        okb.AlgorithmParameterFloatValues.DeleteAllOnSubmit(algorithmParameterFloatValues);
-        IEnumerable<DataAccess.AlgorithmParameterIntValue> algorithmParameterIntValues = okb.AlgorithmParameterIntValues.Where(x => x.ExperimentId == id);
-        okb.AlgorithmParameterIntValues.DeleteAllOnSubmit(algorithmParameterIntValues);
-        IEnumerable<DataAccess.AlgorithmParameterStringValue> algorithmParameterStringValues = okb.AlgorithmParameterStringValues.Where(x => x.ExperimentId == id);
-        okb.AlgorithmParameterStringValues.DeleteAllOnSubmit(algorithmParameterStringValues);
-
-        IEnumerable<DataAccess.ProblemParameterBlobValue> problemParameterBlobValues = okb.ProblemParameterBlobValues.Where(x => x.ExperimentId == id);
-        okb.ProblemParameterBlobValues.DeleteAllOnSubmit(problemParameterBlobValues);
-        IEnumerable<DataAccess.ProblemParameterBoolValue> problemParameterBoolValues = okb.ProblemParameterBoolValues.Where(x => x.ExperimentId == id);
-        okb.ProblemParameterBoolValues.DeleteAllOnSubmit(problemParameterBoolValues);
-        IEnumerable<DataAccess.ProblemParameterFloatValue> problemParameterFloatValues = okb.ProblemParameterFloatValues.Where(x => x.ExperimentId == id);
-        okb.ProblemParameterFloatValues.DeleteAllOnSubmit(problemParameterFloatValues);
-        IEnumerable<DataAccess.ProblemParameterIntValue> problemParameterIntValues = okb.ProblemParameterIntValues.Where(x => x.ExperimentId == id);
-        okb.ProblemParameterIntValues.DeleteAllOnSubmit(problemParameterIntValues);
-        IEnumerable<DataAccess.ProblemParameterStringValue> problemParameterStringValues = okb.ProblemParameterStringValues.Where(x => x.ExperimentId == id);
-        okb.ProblemParameterStringValues.DeleteAllOnSubmit(problemParameterStringValues);
-
-        DataAccess.Experiment entity = okb.Experiments.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.Experiments.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region Run Methods
-    public DataTransfer.Run GetRun(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataLoadOptions dlo = new DataLoadOptions();
-        dlo.LoadWith<Run>(x => x.ResultBlobValues);
-        dlo.LoadWith<Run>(x => x.ResultBoolValues);
-        dlo.LoadWith<Run>(x => x.ResultFloatValues);
-        dlo.LoadWith<Run>(x => x.ResultIntValues);
-        dlo.LoadWith<Run>(x => x.ResultStringValues);
-        okb.LoadOptions = dlo;
-        return Convert.ToDto(okb.Runs.FirstOrDefault(x => x.Id == id));
-      }
-    }
-    public IEnumerable<DataTransfer.Run> GetRuns(long experimentId) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataLoadOptions dlo = new DataLoadOptions();
-        dlo.LoadWith<Run>(x => x.ResultBlobValues);
-        dlo.LoadWith<Run>(x => x.ResultBoolValues);
-        dlo.LoadWith<Run>(x => x.ResultFloatValues);
-        dlo.LoadWith<Run>(x => x.ResultIntValues);
-        dlo.LoadWith<Run>(x => x.ResultStringValues);
-        okb.LoadOptions = dlo;
-        return okb.Runs.Where(x => x.ExperimentId == experimentId).Select(x => Convert.ToDto(x)).ToArray();
-      }
-    }
-    public long AddRun(DataTransfer.Run dto) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        DataAccess.Run entity = Convert.ToEntity(dto); entity.Id = 0;
-        okb.Runs.InsertOnSubmit(entity);
-        okb.SubmitChanges();
-        return entity.Id;
-      }
-    }
-    public void DeleteRun(long id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        IEnumerable<DataAccess.ResultBlobValue> resultBlobValues = okb.ResultBlobValues.Where(x => x.RunId == id);
-        okb.ResultBlobValues.DeleteAllOnSubmit(resultBlobValues);
-        IEnumerable<DataAccess.ResultBoolValue> resultBoolValues = okb.ResultBoolValues.Where(x => x.RunId == id);
-        okb.ResultBoolValues.DeleteAllOnSubmit(resultBoolValues);
-        IEnumerable<DataAccess.ResultFloatValue> resultFloatValues = okb.ResultFloatValues.Where(x => x.RunId == id);
-        okb.ResultFloatValues.DeleteAllOnSubmit(resultFloatValues);
-        IEnumerable<DataAccess.ResultIntValue> resultIntValues = okb.ResultIntValues.Where(x => x.RunId == id);
-        okb.ResultIntValues.DeleteAllOnSubmit(resultIntValues);
-        IEnumerable<DataAccess.ResultStringValue> resultStringValues = okb.ResultStringValues.Where(x => x.RunId == id);
-        okb.ResultStringValues.DeleteAllOnSubmit(resultStringValues);
-
-        DataAccess.Run entity = okb.Runs.FirstOrDefault(x => x.Id == id);
-        if (entity != null) okb.Runs.DeleteOnSubmit(entity);
-        okb.SubmitChanges();
-      }
-    }
-    #endregion
-
-    #region Query Methods
-    public IEnumerable<DataTransfer.Filter> GetFilters() {
-      List<DataTransfer.Filter> filters = new List<DataTransfer.Filter>();
-      using (OKBDataContext okb = new OKBDataContext()) {
-        //DataLoadOptions dlo = new DataLoadOptions();
-        //dlo.LoadWith<Algorithm>(x => x.AlgorithmData);
-        //dlo.LoadWith<AlgorithmData>(x => x.DataType);
-        //dlo.LoadWith<Problem>(x => x.ProblemData);
-        //dlo.LoadWith<ProblemData>(x => x.DataType);
-        //dlo.LoadWith<AlgorithmParameter>(x => x.DataType);
-        //dlo.LoadWith<ProblemParameter>(x => x.DataType);
-        //dlo.LoadWith<Result>(x => x.DataType);
-        //okb.LoadOptions = dlo;
-
-        // run filters
-        filters.Add(new DataTransfer.OrdinalComparisonLongFilter(typeof(RunRandomSeedFilter).AssemblyQualifiedName, "Run Random Seed"));
-        filters.Add(new DataTransfer.OrdinalComparisonDateTimeFilter(typeof(RunCreatedDateFilter).AssemblyQualifiedName, "Run Created Date"));
-        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunUserNameFilter).AssemblyQualifiedName, "Run User Name"));
-        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunClientNameFilter).AssemblyQualifiedName, "Run Client Name"));
-
-        // result filters
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ResultNameFilter).AssemblyQualifiedName, "Result Name", okb.Results.Select(x => x.Name).Distinct().ToArray()));
-        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(ResultBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value Data Type Name", entity.Name, okb.ResultBlobValues.Where(x => x.Result.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
-        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ResultBlobValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
-        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ResultBoolValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
-        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ResultFloatValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
-        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ResultIntValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
-        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ResultStringValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
-
-        // algorithm parameter filters
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterNameFilter).AssemblyQualifiedName, "Algorithm Parameter Name", okb.AlgorithmParameters.Select(x => x.Name).Distinct().ToArray()));
-        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value Data Type Name", entity.Name, okb.AlgorithmParameterBlobValues.Where(x => x.AlgorithmParameter.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
-        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(AlgorithmParameterBlobValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
-        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(AlgorithmParameterBoolValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
-        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(AlgorithmParameterFloatValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
-        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(AlgorithmParameterIntValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
-        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(AlgorithmParameterStringValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
-
-        // algorithm filters
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmNameFilter).AssemblyQualifiedName, "Algorithm Name", okb.Algorithms.Select(x => x.Name).Distinct().ToArray()));
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmClassNameFilter).AssemblyQualifiedName, "Algorithm Class Name", okb.AlgorithmClasses.Select(x => x.Name).Distinct().ToArray()));
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmPlatformNameFilter).AssemblyQualifiedName, "Algorithm Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmDataDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Data Type Name", okb.Algorithms.Select(x => x.AlgorithmData.DataType.Name).Distinct().ToArray()));
-
-        // problem parameter filters
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemParameterNameFilter).AssemblyQualifiedName, "Problem Parameter Name", okb.ProblemParameters.Select(x => x.Name).Distinct().ToArray()));
-        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(ProblemParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value Data Type Name", entity.Name, okb.ProblemParameterBlobValues.Where(x => x.ProblemParameter.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
-        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ProblemParameterBlobValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
-        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ProblemParameterBoolValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
-        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ProblemParameterFloatValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
-        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ProblemParameterIntValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
-        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
-          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ProblemParameterStringValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
-
-        // problem filters
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemNameFilter).AssemblyQualifiedName, "Problem Name", okb.Problems.Select(x => x.Name).Distinct().ToArray()));
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemClassNameFilter).AssemblyQualifiedName, "Problem Class Name", okb.ProblemClasses.Select(x => x.Name).Distinct().ToArray()));
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemPlatformNameFilter).AssemblyQualifiedName, "Problem Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
-        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemDataDataTypeNameFilter).AssemblyQualifiedName, "Problem Data Type Name", okb.Problems.Select(x => x.ProblemData.DataType.Name).Distinct().ToArray()));
-
-        // and/or filters
-        filters.Add(new DataTransfer.AndFilter(typeof(AndFilter).AssemblyQualifiedName, "And"));
-        filters.Add(new DataTransfer.OrFilter(typeof(OrFilter).AssemblyQualifiedName, "Or"));
-      }
-      return filters.OrderBy(x => x.Label);
-    }
-    public long QueryNumberOfRuns(DataTransfer.Filter filter) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        IFilter convertedFilter = (IFilter)Activator.CreateInstance(Type.GetType(filter.FilterTypeName), filter);
-        return okb.Runs.Where(convertedFilter.Expression).LongCount();
-      }
-    }
-    public IEnumerable<DataTransfer.Run> QueryRuns(DataTransfer.Filter filter) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        //DataLoadOptions dlo = new DataLoadOptions();
-        //dlo.LoadWith<Run>(x => x.ResultBlobValues);
-        //dlo.LoadWith<Run>(x => x.ResultBoolValues);
-        //dlo.LoadWith<Run>(x => x.ResultFloatValues);
-        //dlo.LoadWith<Run>(x => x.ResultIntValues);
-        //dlo.LoadWith<Run>(x => x.ResultStringValues);
-        //dlo.LoadWith<Run>(x => x.Experiment);
-        //dlo.LoadWith<ResultBlobValue>(x => x.Result);
-        //dlo.LoadWith<ResultBlobValue>(x => x.DataType);
-        //dlo.LoadWith<ResultBoolValue>(x => x.Result);
-        //dlo.LoadWith<ResultBoolValue>(x => x.DataType);
-        //dlo.LoadWith<ResultFloatValue>(x => x.Result);
-        //dlo.LoadWith<ResultFloatValue>(x => x.DataType);
-        //dlo.LoadWith<ResultIntValue>(x => x.Result);
-        //dlo.LoadWith<ResultIntValue>(x => x.DataType);
-        //dlo.LoadWith<ResultStringValue>(x => x.Result);
-        //dlo.LoadWith<ResultStringValue>(x => x.DataType);
-        //dlo.LoadWith<Result>(x => x.Algorithm);
-        //dlo.LoadWith<Result>(x => x.DataType);
-        //dlo.LoadWith<Experiment>(x => x.Algorithm);
-        //dlo.LoadWith<Experiment>(x => x.Problem);
-        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBlobValues);
-        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBoolValues);
-        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterFloatValues);
-        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterIntValues);
-        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterStringValues);
-        //dlo.LoadWith<Experiment>(x => x.ProblemParameterBlobValues);
-        //dlo.LoadWith<Experiment>(x => x.ProblemParameterBoolValues);
-        //dlo.LoadWith<Experiment>(x => x.ProblemParameterFloatValues);
-        //dlo.LoadWith<Experiment>(x => x.ProblemParameterIntValues);
-        //dlo.LoadWith<Experiment>(x => x.ProblemParameterStringValues);
-        //dlo.LoadWith<AlgorithmParameterBlobValue>(x => x.AlgorithmParameter);
-        //dlo.LoadWith<AlgorithmParameterBlobValue>(x => x.DataType);
-        //dlo.LoadWith<AlgorithmParameterBoolValue>(x => x.AlgorithmParameter);
-        //dlo.LoadWith<AlgorithmParameterBoolValue>(x => x.DataType);
-        //dlo.LoadWith<AlgorithmParameterFloatValue>(x => x.AlgorithmParameter);
-        //dlo.LoadWith<AlgorithmParameterFloatValue>(x => x.DataType);
-        //dlo.LoadWith<AlgorithmParameterIntValue>(x => x.AlgorithmParameter);
-        //dlo.LoadWith<AlgorithmParameterIntValue>(x => x.DataType);
-        //dlo.LoadWith<AlgorithmParameterStringValue>(x => x.AlgorithmParameter);
-        //dlo.LoadWith<AlgorithmParameterStringValue>(x => x.DataType);
-        //dlo.LoadWith<ProblemParameterBlobValue>(x => x.ProblemParameter);
-        //dlo.LoadWith<ProblemParameterBlobValue>(x => x.DataType);
-        //dlo.LoadWith<ProblemParameterBoolValue>(x => x.ProblemParameter);
-        //dlo.LoadWith<ProblemParameterBoolValue>(x => x.DataType);
-        //dlo.LoadWith<ProblemParameterFloatValue>(x => x.ProblemParameter);
-        //dlo.LoadWith<ProblemParameterFloatValue>(x => x.DataType);
-        //dlo.LoadWith<ProblemParameterIntValue>(x => x.ProblemParameter);
-        //dlo.LoadWith<ProblemParameterIntValue>(x => x.DataType);
-        //dlo.LoadWith<ProblemParameterStringValue>(x => x.ProblemParameter);
-        //dlo.LoadWith<ProblemParameterStringValue>(x => x.DataType);
-        //dlo.LoadWith<AlgorithmParameter>(x => x.Algorithm);
-        //dlo.LoadWith<AlgorithmParameter>(x => x.DataType);
-        //dlo.LoadWith<ProblemParameter>(x => x.Problem);
-        //dlo.LoadWith<ProblemParameter>(x => x.DataType);
-        //dlo.LoadWith<Algorithm>(x => x.AlgorithmClass);
-        //dlo.LoadWith<Algorithm>(x => x.Platform);
-        //dlo.LoadWith<Problem>(x => x.ProblemClass);
-        //dlo.LoadWith<Problem>(x => x.Platform);
-        //okb.LoadOptions = dlo;
-
-        DataLoadOptions dlo = new DataLoadOptions();
-        dlo.LoadWith<Run>(x => x.ResultBlobValues);
-        dlo.LoadWith<Run>(x => x.ResultBoolValues);
-        dlo.LoadWith<Run>(x => x.ResultFloatValues);
-        dlo.LoadWith<Run>(x => x.ResultIntValues);
-        dlo.LoadWith<Run>(x => x.ResultStringValues);
-        okb.LoadOptions = dlo;
-
-        IFilter convertedFilter = (IFilter)Activator.CreateInstance(Type.GetType(filter.FilterTypeName), filter);
-        var runs = okb.Runs.Where(convertedFilter.Expression).ToArray();
-        var result = runs.Select(x => Convert.ToDto(x)).ToArray();
-        return result;
-      }
-    }
-    #endregion
-
-    /*
-
-    /// <summary>
-    /// Gets the complete algorithm object graph up to the following entities:
-    /// <list type="bullet">
-    ///   <item>Parameter</item>
-    ///   <item>Algorithm_Paramters.Parameter.DataType</item>
-    ///   <item>Algorithm_Results.Result.DataType</item>
-    /// </list>
-    /// </summary>
-    /// <param name="id">The algorithm id.</param>
-    /// <returns>An <see cref="Algorithm"/></returns>
-    public Algorithm GetCompleteAlgorithm(int id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        var dlo = new DataLoadOptions();
-        dlo.LoadWith<Algorithm>(a => a.AlgorithmClass);
-        dlo.LoadWith<Algorithm>(a => a.Platform);
-        dlo.LoadWith<Algorithm>(a => a.AlgorithmUsers);
-        dlo.LoadWith<AlgorithmUser>(u => u.User);
-        okb.LoadOptions = dlo;
-        return okb.Algorithms.Single(a => a.Id == id);
-      }
-    }
-
-    /// <summary>
-    /// Gets the complete problem object graph up to the following entities:
-    /// <list type="bullet">
-    ///   <item>Platform</item>
-    ///   <item>SolutionRepresentation</item>
-    ///   <item>Problem_Parameters.Parameter</item>
-    ///   <item>IntProblemCharacteristicValues.ProblemCharacteristic.DataType</item>
-    ///   <item>FloatProblemCharacteristicValues.ProblemCharacteristic.DataType</item>
-    ///   <item>CharProblemCharacteristicValues.ProblemCharacteristic.DataType</item>
-    /// </list>
-    /// </summary>
-    /// <param name="id">The problem id.</param>
-    /// <returns>A <see cref="Problem"/></returns>
-    public Problem GetCompleteProblem(int id) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        var dlo = new DataLoadOptions();
-        dlo.LoadWith<Problem>(p => p.ProblemClass);
-        dlo.LoadWith<Problem>(p => p.Platform);
-        dlo.LoadWith<Problem>(p => p.ProblemUsers);
-        dlo.LoadWith<ProblemUser>(u => u.User);
-        okb.LoadOptions = dlo;
-        return okb.Problems.Single(p => p.Id == id);
-      }
-    }
-
-    /// <summary>
-    /// Updates the algorithm object graph including the following properties and linked entitites:
-    /// <list type="bullet">
-    ///   <item>Name</item>
-    ///   <item>Description</item>
-    ///   <item>AlgorithmClassId</item>
-    ///   <item>PlatformId</item>
-    ///   <item>Algorithm_Parameters</item>
-    ///   <item>Algorithm_Results</item>
-    /// </list>
-    /// <remarks>
-    /// New <see cref="Parameter"/>s or <see cref="Result"/>s will not be
-    /// created but have to be pre-existing.
-    /// </remarks>
-    /// </summary>
-    /// <param name="algorithm">The algorithm.</param>
-    public void UpdateCompleteAlgorithm(Algorithm algorithm) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        Algorithm original = okb.Algorithms.Single(a => a.Id == algorithm.Id);
-        UpdateAlgorithmData(algorithm, original, okb);
-        okb.SubmitChanges();
-      }
-    }
-
-    /// <summary>
-    /// Updates the problem object graph including the following properties and linked entities:
-    /// <list type="bullet">
-    ///   <item>Name</item>
-    ///   <item>Description</item>
-    ///   <item>ProblemClassId</item>
-    ///   <item>PlatformId</item>
-    ///   <item>SolutionRepresentationId</item>
-    ///   <item>IntProblemCharacteristicValues.Value</item>
-    ///   <item>FloatProblemCharacteristicValues.Value</item>
-    ///   <item>CharProblemCharacteristicValues.Value</item>
-    ///   <item>Problem_Parameters</item>
-    /// </list>
-    /// <remarks>
-    /// New <see cref="ProblemCharacteristic"/>s or <see cref="Parameter"/>s will
-    /// not be created but have to be pre-existing.
-    /// </remarks>
-    /// </summary>
-    /// <param name="problem">The problem.</param>
-    public void UpdateCompleteProblem(Problem problem) {
-      using (OKBDataContext okb = new OKBDataContext()) {
-        Problem originalProblem = okb.Problems.Single(p => p.Id == problem.Id);
-        UpdateProblemData(problem, originalProblem, okb);
-        okb.SubmitChanges();
-      }
-    }
-
-    private static void UpdateAlgorithmData(Algorithm algorithm, Algorithm original, OKBDataContext okb) {
-      original.Name = algorithm.Name;
-      original.Description = algorithm.Description;
-      original.AlgorithmClassId = algorithm.AlgorithmClassId;
-      original.PlatformId = algorithm.PlatformId;
-      okb.AlgorithmUsers.DeleteAllOnSubmit(original.AlgorithmUsers);
-      original.AlgorithmUsers.Clear();
-      foreach (var u in algorithm.AlgorithmUsers) {
-        original.AlgorithmUsers.Add(new AlgorithmUser() {
-          AlgorithmId = original.Id,
-          UserId = u.UserId
-        });
-      }
-    }
-
-    private static void UpdateProblemData(Problem problem, Problem original, OKBDataContext okb) {
-      original.Name = problem.Name;
-      original.Description = problem.Description;
-      original.ProblemClassId = problem.ProblemClassId;
-      original.SolutionRepresentationId = problem.SolutionRepresentationId;
-      original.PlatformId = problem.PlatformId;
-      okb.ProblemUsers.DeleteAllOnSubmit(original.ProblemUsers);
-      original.ProblemUsers.Clear();
-      foreach (var u in problem.ProblemUsers) {
-        original.ProblemUsers.Add(new ProblemUser() {
-          ProblemId = original.Id,
-          UserId = u.UserId
-        });
-      }
-    }*/
-  }
-}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/QueryService.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/QueryService.cs	(revision 5299)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/QueryService.cs	(revision 5299)
@@ -0,0 +1,201 @@
+﻿#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.Data.Linq;
+using System.Linq;
+using System.ServiceModel;
+using HeuristicLab.Services.OKB.DataAccess;
+
+namespace HeuristicLab.Services.OKB {
+  /// <summary>
+  /// Implementation of the OKB query service (interface <see cref="IQueryService"/>).
+  /// </summary>
+  [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
+  public class QueryService : IQueryService {
+    public IEnumerable<DataTransfer.Filter> GetFilters() {
+      List<DataTransfer.Filter> filters = new List<DataTransfer.Filter>();
+      using (OKBDataContext okb = new OKBDataContext()) {
+        //DataLoadOptions dlo = new DataLoadOptions();
+        //dlo.LoadWith<Algorithm>(x => x.AlgorithmData);
+        //dlo.LoadWith<AlgorithmData>(x => x.DataType);
+        //dlo.LoadWith<Problem>(x => x.ProblemData);
+        //dlo.LoadWith<ProblemData>(x => x.DataType);
+        //dlo.LoadWith<AlgorithmParameter>(x => x.DataType);
+        //dlo.LoadWith<ProblemParameter>(x => x.DataType);
+        //dlo.LoadWith<Result>(x => x.DataType);
+        //okb.LoadOptions = dlo;
+
+        // run filters
+        filters.Add(new DataTransfer.OrdinalComparisonLongFilter(typeof(RunRandomSeedFilter).AssemblyQualifiedName, "Run Random Seed"));
+        filters.Add(new DataTransfer.OrdinalComparisonDateTimeFilter(typeof(RunCreatedDateFilter).AssemblyQualifiedName, "Run Created Date"));
+        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunUserNameFilter).AssemblyQualifiedName, "Run User Name"));
+        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunClientNameFilter).AssemblyQualifiedName, "Run Client Name"));
+
+        // result filters
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ResultNameFilter).AssemblyQualifiedName, "Result Name", okb.Results.Select(x => x.Name).Distinct().ToArray()));
+        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(ResultBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value Data Type Name", entity.Name, okb.ResultBlobValues.Where(x => x.Result.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
+        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ResultBlobValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
+        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ResultBoolValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
+        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ResultFloatValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
+        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ResultIntValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
+        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ResultStringValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
+
+        // algorithm parameter filters
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterNameFilter).AssemblyQualifiedName, "Algorithm Parameter Name", okb.AlgorithmParameters.Select(x => x.Name).Distinct().ToArray()));
+        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value Data Type Name", entity.Name, okb.AlgorithmParameterBlobValues.Where(x => x.AlgorithmParameter.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
+        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(AlgorithmParameterBlobValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
+        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(AlgorithmParameterBoolValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
+        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(AlgorithmParameterFloatValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
+        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(AlgorithmParameterIntValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
+        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(AlgorithmParameterStringValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
+
+        // algorithm filters
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmNameFilter).AssemblyQualifiedName, "Algorithm Name", okb.Algorithms.Select(x => x.Name).Distinct().ToArray()));
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmClassNameFilter).AssemblyQualifiedName, "Algorithm Class Name", okb.AlgorithmClasses.Select(x => x.Name).Distinct().ToArray()));
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmPlatformNameFilter).AssemblyQualifiedName, "Algorithm Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmDataDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Data Type Name", okb.Algorithms.Select(x => x.AlgorithmData.DataType.Name).Distinct().ToArray()));
+
+        // problem parameter filters
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemParameterNameFilter).AssemblyQualifiedName, "Problem Parameter Name", okb.ProblemParameters.Select(x => x.Name).Distinct().ToArray()));
+        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(ProblemParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value Data Type Name", entity.Name, okb.ProblemParameterBlobValues.Where(x => x.ProblemParameter.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
+        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ProblemParameterBlobValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
+        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ProblemParameterBoolValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
+        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ProblemParameterFloatValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
+        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ProblemParameterIntValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
+        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
+          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ProblemParameterStringValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
+
+        // problem filters
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemNameFilter).AssemblyQualifiedName, "Problem Name", okb.Problems.Select(x => x.Name).Distinct().ToArray()));
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemClassNameFilter).AssemblyQualifiedName, "Problem Class Name", okb.ProblemClasses.Select(x => x.Name).Distinct().ToArray()));
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemPlatformNameFilter).AssemblyQualifiedName, "Problem Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
+        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemDataDataTypeNameFilter).AssemblyQualifiedName, "Problem Data Type Name", okb.Problems.Select(x => x.ProblemData.DataType.Name).Distinct().ToArray()));
+
+        // and/or filters
+        filters.Add(new DataTransfer.AndFilter(typeof(AndFilter).AssemblyQualifiedName, "And"));
+        filters.Add(new DataTransfer.OrFilter(typeof(OrFilter).AssemblyQualifiedName, "Or"));
+      }
+      return filters.OrderBy(x => x.Label);
+    }
+    public long QueryNumberOfRuns(DataTransfer.Filter filter) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        IFilter convertedFilter = (IFilter)Activator.CreateInstance(Type.GetType(filter.FilterTypeName), filter);
+        return okb.Runs.Where(convertedFilter.Expression).LongCount();
+      }
+    }
+    public IEnumerable<DataTransfer.Run> QueryRuns(DataTransfer.Filter filter) {
+      using (OKBDataContext okb = new OKBDataContext()) {
+        //DataLoadOptions dlo = new DataLoadOptions();
+        //dlo.LoadWith<Run>(x => x.ResultBlobValues);
+        //dlo.LoadWith<Run>(x => x.ResultBoolValues);
+        //dlo.LoadWith<Run>(x => x.ResultFloatValues);
+        //dlo.LoadWith<Run>(x => x.ResultIntValues);
+        //dlo.LoadWith<Run>(x => x.ResultStringValues);
+        //dlo.LoadWith<Run>(x => x.Experiment);
+        //dlo.LoadWith<ResultBlobValue>(x => x.Result);
+        //dlo.LoadWith<ResultBlobValue>(x => x.DataType);
+        //dlo.LoadWith<ResultBoolValue>(x => x.Result);
+        //dlo.LoadWith<ResultBoolValue>(x => x.DataType);
+        //dlo.LoadWith<ResultFloatValue>(x => x.Result);
+        //dlo.LoadWith<ResultFloatValue>(x => x.DataType);
+        //dlo.LoadWith<ResultIntValue>(x => x.Result);
+        //dlo.LoadWith<ResultIntValue>(x => x.DataType);
+        //dlo.LoadWith<ResultStringValue>(x => x.Result);
+        //dlo.LoadWith<ResultStringValue>(x => x.DataType);
+        //dlo.LoadWith<Result>(x => x.Algorithm);
+        //dlo.LoadWith<Result>(x => x.DataType);
+        //dlo.LoadWith<Experiment>(x => x.Algorithm);
+        //dlo.LoadWith<Experiment>(x => x.Problem);
+        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBlobValues);
+        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBoolValues);
+        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterFloatValues);
+        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterIntValues);
+        //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterStringValues);
+        //dlo.LoadWith<Experiment>(x => x.ProblemParameterBlobValues);
+        //dlo.LoadWith<Experiment>(x => x.ProblemParameterBoolValues);
+        //dlo.LoadWith<Experiment>(x => x.ProblemParameterFloatValues);
+        //dlo.LoadWith<Experiment>(x => x.ProblemParameterIntValues);
+        //dlo.LoadWith<Experiment>(x => x.ProblemParameterStringValues);
+        //dlo.LoadWith<AlgorithmParameterBlobValue>(x => x.AlgorithmParameter);
+        //dlo.LoadWith<AlgorithmParameterBlobValue>(x => x.DataType);
+        //dlo.LoadWith<AlgorithmParameterBoolValue>(x => x.AlgorithmParameter);
+        //dlo.LoadWith<AlgorithmParameterBoolValue>(x => x.DataType);
+        //dlo.LoadWith<AlgorithmParameterFloatValue>(x => x.AlgorithmParameter);
+        //dlo.LoadWith<AlgorithmParameterFloatValue>(x => x.DataType);
+        //dlo.LoadWith<AlgorithmParameterIntValue>(x => x.AlgorithmParameter);
+        //dlo.LoadWith<AlgorithmParameterIntValue>(x => x.DataType);
+        //dlo.LoadWith<AlgorithmParameterStringValue>(x => x.AlgorithmParameter);
+        //dlo.LoadWith<AlgorithmParameterStringValue>(x => x.DataType);
+        //dlo.LoadWith<ProblemParameterBlobValue>(x => x.ProblemParameter);
+        //dlo.LoadWith<ProblemParameterBlobValue>(x => x.DataType);
+        //dlo.LoadWith<ProblemParameterBoolValue>(x => x.ProblemParameter);
+        //dlo.LoadWith<ProblemParameterBoolValue>(x => x.DataType);
+        //dlo.LoadWith<ProblemParameterFloatValue>(x => x.ProblemParameter);
+        //dlo.LoadWith<ProblemParameterFloatValue>(x => x.DataType);
+        //dlo.LoadWith<ProblemParameterIntValue>(x => x.ProblemParameter);
+        //dlo.LoadWith<ProblemParameterIntValue>(x => x.DataType);
+        //dlo.LoadWith<ProblemParameterStringValue>(x => x.ProblemParameter);
+        //dlo.LoadWith<ProblemParameterStringValue>(x => x.DataType);
+        //dlo.LoadWith<AlgorithmParameter>(x => x.Algorithm);
+        //dlo.LoadWith<AlgorithmParameter>(x => x.DataType);
+        //dlo.LoadWith<ProblemParameter>(x => x.Problem);
+        //dlo.LoadWith<ProblemParameter>(x => x.DataType);
+        //dlo.LoadWith<Algorithm>(x => x.AlgorithmClass);
+        //dlo.LoadWith<Algorithm>(x => x.Platform);
+        //dlo.LoadWith<Problem>(x => x.ProblemClass);
+        //dlo.LoadWith<Problem>(x => x.Platform);
+        //okb.LoadOptions = dlo;
+
+        DataLoadOptions dlo = new DataLoadOptions();
+        dlo.LoadWith<Run>(x => x.ResultBlobValues);
+        dlo.LoadWith<Run>(x => x.ResultBoolValues);
+        dlo.LoadWith<Run>(x => x.ResultFloatValues);
+        dlo.LoadWith<Run>(x => x.ResultIntValues);
+        dlo.LoadWith<Run>(x => x.ResultStringValues);
+        okb.LoadOptions = dlo;
+
+        IFilter convertedFilter = (IFilter)Activator.CreateInstance(Type.GetType(filter.FilterTypeName), filter);
+        var runs = okb.Runs.Where(convertedFilter.Expression).ToArray();
+        var result = runs.Select(x => Convert.ToDto(x)).ToArray();
+        return result;
+      }
+    }
+  }
+}
Index: branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/app.config
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/app.config	(revision 5298)
+++ branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/app.config	(revision 5299)
@@ -41,13 +41,4 @@
         </binding>
       </wsHttpBinding>
-      <netTcpBinding>
-        <binding name="DefaultNetTcpBinding" openTimeout="00:00:30" receiveTimeout="00:00:30" sendTimeout="00:00:30" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
-          <security mode="Message">
-            <message clientCredentialType="UserName" />
-          </security>
-          <readerQuotas maxArrayLength="2147483647" />
-          <reliableSession inactivityTimeout="00:00:30" enabled="false" />
-        </binding>
-      </netTcpBinding>
     </bindings>
 
@@ -68,17 +59,9 @@
 
     <services>
-      <service name="HeuristicLab.Services.OKB.OKBService" behaviorConfiguration="DefaultServiceBehavior">
-        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding" contract="IMetadataExchange" />
-        <endpoint binding="wsHttpBinding" bindingConfiguration="DefaultWsHttpBinding" contract="HeuristicLab.Services.OKB.IOKBService" />
-        <host>
-          <baseAddresses>
-            <add baseAddress="http://localhost:8732/Design_Time_Addresses/OKB-3.3/OKBService" />
-          </baseAddresses>
-        </host>
-      </service>
-
-      <service name="HeuristicLab.Services.OKB.AuthenticationService" behaviorConfiguration="DefaultServiceBehavior">
-        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding" contract="IMetadataExchange" />
-        <endpoint binding="wsHttpBinding" bindingConfiguration="DefaultWsHttpBinding" contract="HeuristicLab.Services.OKB.IAuthenticationService" />
+      <service behaviorConfiguration="DefaultServiceBehavior" name="HeuristicLab.Services.OKB.AuthenticationService">
+        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding"
+          contract="IMetadataExchange" />
+        <endpoint binding="wsHttpBinding" bindingConfiguration="DefaultWsHttpBinding"
+          contract="HeuristicLab.Services.OKB.IAuthenticationService" />
         <host>
           <baseAddresses>
@@ -87,45 +70,23 @@
         </host>
       </service>
-
-      <service name="HeuristicLab.Services.OKB.TableService" behaviorConfiguration="DefaultServiceBehavior">
-        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding" contract="IMetadataExchange" />
-        <endpoint binding="netTcpBinding" bindingConfiguration="DefaultNetTcpBinding" contract="HeuristicLab.Services.OKB.ITableService" />
+      <service behaviorConfiguration="DefaultServiceBehavior" name="HeuristicLab.Services.OKB.AdministrationService">
+        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding"
+          contract="IMetadataExchange" />
+        <endpoint binding="wsHttpBinding" bindingConfiguration="DefaultWsHttpBinding"
+          contract="HeuristicLab.Services.OKB.IAdministrationService" />
         <host>
           <baseAddresses>
-            <add baseAddress="http://localhost:8732/Design_Time_Addresses/OKB-3.3/TableService" />
-            <add baseAddress="net.tcp://localhost:8733/OKB-3.3/TableService" />
+            <add baseAddress="http://localhost:8732/Design_Time_Addresses/OKB-3.3/AdministrationService" />
           </baseAddresses>
         </host>
       </service>
-
-      <service name="HeuristicLab.Services.OKB.DataService" behaviorConfiguration="DefaultServiceBehavior">
-        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding" contract="IMetadataExchange" />
-        <endpoint binding="netTcpBinding" bindingConfiguration="DefaultNetTcpBinding" contract="HeuristicLab.Services.OKB.IDataService" />
-        <host>
-          <baseAddresses>
-            <add baseAddress="http://localhost:8732/Design_Time_Addresses/OKB-3.3/DataService" />
-            <add baseAddress="net.tcp://localhost:8733/OKB-3.3/DataService" />
-          </baseAddresses>
-        </host>
-      </service>
-
-      <service name="HeuristicLab.Services.OKB.RunnerService" behaviorConfiguration="DefaultServiceBehavior">
-        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding" contract="IMetadataExchange" />
-        <endpoint binding="netTcpBinding" bindingConfiguration="DefaultNetTcpBinding" contract="HeuristicLab.Services.OKB.IRunnerService" />
-        <host>
-          <baseAddresses>
-            <add baseAddress="http://localhost:8732/Design_Time_Addresses/OKB-3.3/RunnerService" />
-            <add baseAddress="net.tcp://localhost:8733/OKB-3.3/RunnerService" />
-          </baseAddresses>
-        </host>
-      </service>
-
-      <service name="HeuristicLab.Services.OKB.QueryService" behaviorConfiguration="DefaultServiceBehavior">
-        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding" contract="IMetadataExchange" />
-        <endpoint binding="netTcpBinding" bindingConfiguration="DefaultNetTcpBinding" contract="HeuristicLab.Services.OKB.IQueryService" />
+      <service behaviorConfiguration="DefaultServiceBehavior" name="HeuristicLab.Services.OKB.QueryService">
+        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="DefaultMexHttpBinding"
+          contract="IMetadataExchange" />
+        <endpoint binding="wsHttpBinding" bindingConfiguration="DefaultWsHttpBinding"
+          contract="HeuristicLab.Services.OKB.IQueryService" />
         <host>
           <baseAddresses>
             <add baseAddress="http://localhost:8732/Design_Time_Addresses/OKB-3.3/QueryService" />
-            <add baseAddress="net.tcp://localhost:8733/OKB-3.3/QueryService" />
           </baseAddresses>
         </host>
@@ -133,5 +94,4 @@
     </services>
   </system.serviceModel>
-
   <startup>
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
