Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/HeuristicLab.Clients.OKB-3.3.csproj
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/HeuristicLab.Clients.OKB-3.3.csproj	(revision 5072)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/HeuristicLab.Clients.OKB-3.3.csproj	(revision 5073)
@@ -95,4 +95,5 @@
   <ItemGroup>
     <Compile Include="AdministratorMenuItem.cs" />
+    <Compile Include="QueryMenuItem.cs" />
     <Compile Include="OKBClient.cs" />
     <Compile Include="OKBExperiment.cs" />
@@ -170,4 +171,10 @@
       <DependentUpon>AlgorithmParameterView.cs</DependentUpon>
     </Compile>
+    <Compile Include="Views\QueryView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\QueryView.Designer.cs">
+      <DependentUpon>QueryView.cs</DependentUpon>
+    </Compile>
     <Compile Include="Views\RunView.cs">
       <SubType>UserControl</SubType>
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBClient.cs
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBClient.cs	(revision 5072)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/OKBClient.cs	(revision 5073)
@@ -361,4 +361,13 @@
 
     #region Experiment Methods
+    public Experiment GetExperiment(long id) {
+      try {
+        return CallAdminService<Experiment>(s => s.GetExperiment(id));
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh experiment failed.", ex);
+        return null;
+      }
+    }
     public ItemCollection<Experiment> GetExperiments(long algorithmId, long problemId) {
       try {
@@ -381,4 +390,15 @@
         runs.AddRange(CallAdminService<Run[]>(s => s.GetRuns(experimentId)).OrderByDescending(x => x.FinishedDate));
         runs.ItemsRemoved += new CollectionItemsChangedEventHandler<Run>(runs_ItemsRemoved);
+        return runs;
+      }
+      catch (Exception ex) {
+        ErrorHandling.ShowErrorDialog("Refresh runs failed.", ex);
+        return null;
+      }
+    }
+    public ItemCollection<Run> QueryRuns(string query) {
+      try {
+        ItemCollection<Run> runs = new ItemCollection<Run>();
+        runs.AddRange(CallAdminService<Run[]>(s => s.QueryRuns(query)).OrderByDescending(x => x.FinishedDate));
         return runs;
       }
@@ -593,4 +613,86 @@
       }
     }
+    public RunCollection ConvertOKBRunsToOptimizationRuns(IItemCollection<Run> runs) {
+      RunCollection runCollection = new RunCollection();
+      foreach (Run run in runs) {
+        Optimization.Run r = new Optimization.Run();
+        foreach (ResultValue resultValue in run.ResultValues) {
+          Result result = GetResult(resultValue.ResultId);
+          if (resultValue is ResultBlobValue) {
+            IItem item = null;
+            using (MemoryStream stream = new MemoryStream(((ResultBlobValue)resultValue).Value)) {
+              try {
+                item = XmlParser.Deserialize<IItem>(stream);
+              }
+              catch (Exception ex) {
+                ErrorHandling.ShowErrorDialog(ex);
+              }
+              stream.Close();
+            }
+            r.Results.Add(result.Name, item);
+          } else if (resultValue is ResultBoolValue) {
+            r.Results.Add(result.Name, new BoolValue(((ResultBoolValue)resultValue).Value));
+          } else if (resultValue is ResultFloatValue) {
+            r.Results.Add(result.Name, new DoubleValue(((ResultFloatValue)resultValue).Value));
+          } else if (resultValue is ResultIntValue) {
+            r.Results.Add(result.Name, new IntValue((int)((ResultIntValue)resultValue).Value));
+          } else if (resultValue is ResultStringValue) {
+            r.Results.Add(result.Name, new StringValue(((ResultStringValue)resultValue).Value));
+          }
+        }
+
+        Experiment exp = GetExperiment(run.ExperimentId);
+        foreach (AlgorithmParameterValue algorithmParameterValue in exp.AlgorithmParameterValues) {
+          AlgorithmParameter algorithmParameter = GetAlgorithmParameter(algorithmParameterValue.AlgorithmParameterId);
+          if (algorithmParameterValue is AlgorithmParameterBlobValue) {
+            IItem item = null;
+            using (MemoryStream stream = new MemoryStream(((AlgorithmParameterBlobValue)algorithmParameterValue).Value)) {
+              try {
+                item = XmlParser.Deserialize<IItem>(stream);
+              }
+              catch (Exception ex) {
+                ErrorHandling.ShowErrorDialog(ex);
+              }
+              stream.Close();
+            }
+            r.Parameters.Add(algorithmParameter.Name, item);
+          } else if (algorithmParameterValue is AlgorithmParameterBoolValue) {
+            r.Parameters.Add(algorithmParameter.Name, new BoolValue(((AlgorithmParameterBoolValue)algorithmParameterValue).Value));
+          } else if (algorithmParameterValue is AlgorithmParameterFloatValue) {
+            r.Parameters.Add(algorithmParameter.Name, new DoubleValue(((AlgorithmParameterFloatValue)algorithmParameterValue).Value));
+          } else if (algorithmParameterValue is AlgorithmParameterIntValue) {
+            r.Parameters.Add(algorithmParameter.Name, new IntValue((int)((AlgorithmParameterIntValue)algorithmParameterValue).Value));
+          } else if (algorithmParameterValue is AlgorithmParameterStringValue) {
+            r.Parameters.Add(algorithmParameter.Name, new StringValue(((AlgorithmParameterStringValue)algorithmParameterValue).Value));
+          }
+        }
+        foreach (ProblemParameterValue problemParameterValue in exp.ProblemParameterValues) {
+          ProblemParameter problemParameter = GetProblemParameter(problemParameterValue.ProblemParameterId);
+          if (problemParameterValue is ProblemParameterBlobValue) {
+            IItem item = null;
+            using (MemoryStream stream = new MemoryStream(((ProblemParameterBlobValue)problemParameterValue).Value)) {
+              try {
+                item = XmlParser.Deserialize<IItem>(stream);
+              }
+              catch (Exception ex) {
+                ErrorHandling.ShowErrorDialog(ex);
+              }
+              stream.Close();
+            }
+            r.Parameters.Add(problemParameter.Name, item);
+          } else if (problemParameterValue is ProblemParameterBoolValue) {
+            r.Parameters.Add(problemParameter.Name, new BoolValue(((ProblemParameterBoolValue)problemParameterValue).Value));
+          } else if (problemParameterValue is ProblemParameterFloatValue) {
+            r.Parameters.Add(problemParameter.Name, new DoubleValue(((ProblemParameterFloatValue)problemParameterValue).Value));
+          } else if (problemParameterValue is ProblemParameterIntValue) {
+            r.Parameters.Add(problemParameter.Name, new IntValue((int)((ProblemParameterIntValue)problemParameterValue).Value));
+          } else if (problemParameterValue is ProblemParameterStringValue) {
+            r.Parameters.Add(problemParameter.Name, new StringValue(((ProblemParameterStringValue)problemParameterValue).Value));
+          }
+        }
+        runCollection.Add(r);
+      }
+      return runCollection;
+    }
     #endregion
 
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/QueryMenuItem.cs
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/QueryMenuItem.cs	(revision 5073)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/QueryMenuItem.cs	(revision 5073)
@@ -0,0 +1,43 @@
+﻿#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 HeuristicLab.Optimizer;
+
+namespace HeuristicLab.Clients.OKB {
+  internal class QueryMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "&Query"; }
+    }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "&Services", "&OKB" }; }
+    }
+    public override int Position {
+      get { return 4220; }
+    }
+
+    public override void Execute() {
+      QueryView view = new QueryView();
+      view.Content = OKBClient.Instance;
+      view.Show();
+    }
+  }
+}
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/ServiceClients/OKBServiceClient.cs
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/ServiceClients/OKBServiceClient.cs	(revision 5072)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/ServiceClients/OKBServiceClient.cs	(revision 5073)
@@ -9,1697 +9,2073 @@
 //------------------------------------------------------------------------------
 
-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 HeuristicLab.Clients.OKB.AlgorithmParameterValue[] AlgorithmParameterValuesField;
-
-    private long ProblemIdField;
-
-    private 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 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 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 long ExperimentIdField;
-
-    private System.Nullable<System.DateTime> FinishedDateField;
-
-    private int RandomSeedField;
-
-    private 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 long ExperimentId {
-      get {
-        return this.ExperimentIdField;
-      }
-      set {
-        if ((this.ExperimentIdField.Equals(value) != true)) {
-          this.ExperimentIdField = value;
-          this.RaisePropertyChanged("ExperimentId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<System.DateTime> FinishedDate {
-      get {
-        return this.FinishedDateField;
-      }
-      set {
-        if ((this.FinishedDateField.Equals(value) != true)) {
-          this.FinishedDateField = value;
-          this.RaisePropertyChanged("FinishedDate");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public int RandomSeed {
-      get {
-        return this.RandomSeedField;
-      }
-      set {
-        if ((this.RandomSeedField.Equals(value) != true)) {
-          this.RandomSeedField = value;
-          this.RaisePropertyChanged("RandomSeed");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public 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;
-
-    [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.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.AlgorithmParameterFloatValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterStringValue))]
-  [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))]
-  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.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.ProblemParameterBoolValue))]
-  [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 = "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 = "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 = "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 = "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 = "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.ResultBlobValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultBoolValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultStringValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultIntValue))]
-  [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 = "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 = "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 = "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 = "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.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")]
-    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")]
-    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/GetAlgorithmParameters", ReplyAction = "http://tempuri.org/IOKBService/GetAlgorithmParametersResponse")]
-    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")]
-    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")]
-    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.Guid[] GetProblemUsers(long problemId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateProblemUsers", ReplyAction = "http://tempuri.org/IOKBService/UpdateProblemUsersResponse")]
-    void UpdateProblemUsers(long problemId, 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")]
-    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")]
-    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")]
-    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")]
-    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")]
-    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")]
-    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.Guid[] GetAlgorithmUsers(long algorithmId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IOKBService/UpdateAlgorithmUsers", ReplyAction = "http://tempuri.org/IOKBService/UpdateAlgorithmUsersResponse")]
-    void UpdateAlgorithmUsers(long algorithmId, 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 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 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 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 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 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.Guid[] GetProblemUsers(long problemId) {
-      return base.Channel.GetProblemUsers(problemId);
-    }
-
-    public void UpdateProblemUsers(long problemId, 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 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 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 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 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 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 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.Guid[] GetAlgorithmUsers(long algorithmId) {
-      return base.Channel.GetAlgorithmUsers(algorithmId);
-    }
-
-    public void UpdateAlgorithmUsers(long algorithmId, 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);
-    }
-  }
+namespace HeuristicLab.Clients.OKB
+{
+    using System.Runtime.Serialization;
+    
+    
+    [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 HeuristicLab.Clients.OKB.AlgorithmParameterValue[] AlgorithmParameterValuesField;
+        
+        private long ProblemIdField;
+        
+        private 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 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 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 long ExperimentIdField;
+        
+        private System.Nullable<System.DateTime> FinishedDateField;
+        
+        private int RandomSeedField;
+        
+        private 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 long ExperimentId
+        {
+            get
+            {
+                return this.ExperimentIdField;
+            }
+            set
+            {
+                if ((this.ExperimentIdField.Equals(value) != true))
+                {
+                    this.ExperimentIdField = value;
+                    this.RaisePropertyChanged("ExperimentId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.DateTime> FinishedDate
+        {
+            get
+            {
+                return this.FinishedDateField;
+            }
+            set
+            {
+                if ((this.FinishedDateField.Equals(value) != true))
+                {
+                    this.FinishedDateField = value;
+                    this.RaisePropertyChanged("FinishedDate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int RandomSeed
+        {
+            get
+            {
+                return this.RandomSeedField;
+            }
+            set
+            {
+                if ((this.RandomSeedField.Equals(value) != true))
+                {
+                    this.RandomSeedField = value;
+                    this.RaisePropertyChanged("RandomSeed");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public 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;
+        
+        [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.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.AlgorithmParameterFloatValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterStringValue))]
+    [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))]
+    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.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.ProblemParameterBoolValue))]
+    [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="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="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="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="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="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.ResultBlobValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultBoolValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultStringValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultIntValue))]
+    [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="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="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="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="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.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")]
+        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")]
+        HeuristicLab.Clients.OKB.Run[] GetRuns(long experimentId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOKBService/QueryRuns", ReplyAction="http://tempuri.org/IOKBService/QueryRunsResponse")]
+        HeuristicLab.Clients.OKB.Run[] QueryRuns(string query);
+        
+        [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/GetAlgorithmParameters", ReplyAction="http://tempuri.org/IOKBService/GetAlgorithmParametersResponse")]
+        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")]
+        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")]
+        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.Guid[] GetProblemUsers(long problemId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOKBService/UpdateProblemUsers", ReplyAction="http://tempuri.org/IOKBService/UpdateProblemUsersResponse")]
+        void UpdateProblemUsers(long problemId, 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")]
+        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")]
+        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")]
+        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")]
+        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")]
+        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")]
+        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.Guid[] GetAlgorithmUsers(long algorithmId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOKBService/UpdateAlgorithmUsers", ReplyAction="http://tempuri.org/IOKBService/UpdateAlgorithmUsersResponse")]
+        void UpdateAlgorithmUsers(long algorithmId, 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 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 HeuristicLab.Clients.OKB.Run[] GetRuns(long experimentId)
+        {
+            return base.Channel.GetRuns(experimentId);
+        }
+        
+        public HeuristicLab.Clients.OKB.Run[] QueryRuns(string query)
+        {
+            return base.Channel.QueryRuns(query);
+        }
+        
+        public long AddRun(HeuristicLab.Clients.OKB.Run dto)
+        {
+            return base.Channel.AddRun(dto);
+        }
+        
+        public void DeleteRun(long id)
+        {
+            base.Channel.DeleteRun(id);
+        }
+        
+        public 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 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 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.Guid[] GetProblemUsers(long problemId)
+        {
+            return base.Channel.GetProblemUsers(problemId);
+        }
+        
+        public void UpdateProblemUsers(long problemId, 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 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 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 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 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 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 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.Guid[] GetAlgorithmUsers(long algorithmId)
+        {
+            return base.Channel.GetAlgorithmUsers(algorithmId);
+        }
+        
+        public void UpdateAlgorithmUsers(long algorithmId, 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/HeuristicLab.Clients.OKB-3.3/Views/QueryView.Designer.cs
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/QueryView.Designer.cs	(revision 5073)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/QueryView.Designer.cs	(revision 5073)
@@ -0,0 +1,123 @@
+#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
+
+namespace HeuristicLab.Clients.OKB {
+  partial class QueryView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QueryView));
+      this.refreshButton = new System.Windows.Forms.Button();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.runCollectionView = new HeuristicLab.Clients.OKB.RunCollectionView();
+      this.showRunsButton = new System.Windows.Forms.Button();
+      this.queryTextBox = new System.Windows.Forms.TextBox();
+      this.SuspendLayout();
+      // 
+      // refreshButton
+      // 
+      this.refreshButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Refresh;
+      this.refreshButton.Location = new System.Drawing.Point(0, 0);
+      this.refreshButton.Name = "refreshButton";
+      this.refreshButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshButton.TabIndex = 0;
+      this.toolTip.SetToolTip(this.refreshButton, "Refresh Data");
+      this.refreshButton.UseVisualStyleBackColor = true;
+      this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
+      // 
+      // runCollectionView
+      // 
+      this.runCollectionView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.runCollectionView.Caption = "RunCollection View";
+      this.runCollectionView.Content = null;
+      this.runCollectionView.Location = new System.Drawing.Point(0, 30);
+      this.runCollectionView.Name = "runCollectionView";
+      this.runCollectionView.ReadOnly = false;
+      this.runCollectionView.Size = new System.Drawing.Size(727, 405);
+      this.runCollectionView.TabIndex = 3;
+      // 
+      // showRunsButton
+      // 
+      this.showRunsButton.Location = new System.Drawing.Point(30, 0);
+      this.showRunsButton.Name = "showRunsButton";
+      this.showRunsButton.Size = new System.Drawing.Size(75, 24);
+      this.showRunsButton.TabIndex = 1;
+      this.showRunsButton.Text = "&Show Runs";
+      this.showRunsButton.UseVisualStyleBackColor = true;
+      this.showRunsButton.Click += new System.EventHandler(this.showRunsButton_Click);
+      // 
+      // queryTextBox
+      // 
+      this.queryTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.queryTextBox.Location = new System.Drawing.Point(111, 3);
+      this.queryTextBox.Name = "queryTextBox";
+      this.queryTextBox.Size = new System.Drawing.Size(616, 20);
+      this.queryTextBox.TabIndex = 2;
+      // 
+      // QueryView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.queryTextBox);
+      this.Controls.Add(this.showRunsButton);
+      this.Controls.Add(this.runCollectionView);
+      this.Controls.Add(this.refreshButton);
+      this.Name = "QueryView";
+      this.Size = new System.Drawing.Size(727, 435);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button refreshButton;
+    private System.Windows.Forms.ToolTip toolTip;
+    private RunCollectionView runCollectionView;
+    private System.Windows.Forms.Button showRunsButton;
+    private System.Windows.Forms.TextBox queryTextBox;
+
+  }
+}
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/QueryView.cs
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/QueryView.cs	(revision 5073)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/Views/QueryView.cs	(revision 5073)
@@ -0,0 +1,74 @@
+#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.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Clients.OKB {
+  [View("OKB Administrator")]
+  [Content(typeof(OKBClient), false)]
+  public sealed partial class QueryView : AsynchronousContentView {
+    public new OKBClient Content {
+      get { return (OKBClient)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public QueryView() {
+      InitializeComponent();
+    }
+
+    protected override void DeregisterContentEvents() {
+      // ...
+      base.DeregisterContentEvents();
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      // ...
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        // ...
+      } else {
+        // ...
+      }
+      runCollectionView.Content = null;
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      refreshButton.Enabled = Content != null;
+      runCollectionView.Enabled = Content != null;
+    }
+
+    private void refreshButton_Click(object sender, EventArgs e) {
+      runCollectionView.Content = Content.QueryRuns(queryTextBox.Text);
+    }
+
+    private void showRunsButton_Click(object sender, EventArgs e) {
+      MainFormManager.MainForm.ShowContent(OKBClient.Instance.ConvertOKBRunsToOptimizationRuns(runCollectionView.Content));
+    }
+  }
+}
Index: /branches/OKB/HeuristicLab.Clients.OKB-3.3/app.config
===================================================================
--- /branches/OKB/HeuristicLab.Clients.OKB-3.3/app.config	(revision 5072)
+++ /branches/OKB/HeuristicLab.Clients.OKB-3.3/app.config	(revision 5073)
@@ -7,8 +7,8 @@
                     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                     bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
-                    maxBufferPoolSize="524288" maxReceivedMessageSize="200000000"
+                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                     messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                     allowCookies="false">
-                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="200000000"
+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                         maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                     <reliableSession ordered="true" inactivityTimeout="00:10:00"
Index: /branches/OKB/HeuristicLab.Services.OKB/3.3/Interfaces/IOKBService.cs
===================================================================
--- /branches/OKB/HeuristicLab.Services.OKB/3.3/Interfaces/IOKBService.cs	(revision 5072)
+++ /branches/OKB/HeuristicLab.Services.OKB/3.3/Interfaces/IOKBService.cs	(revision 5073)
@@ -188,4 +188,6 @@
     IEnumerable<Run> GetRuns(long experimentId);
     [OperationContract]
+    IEnumerable<Run> QueryRuns(string query);
+    [OperationContract]
     long AddRun(Run dto);
     [OperationContract]
Index: /branches/OKB/HeuristicLab.Services.OKB/3.3/OKBService.cs
===================================================================
--- /branches/OKB/HeuristicLab.Services.OKB/3.3/OKBService.cs	(revision 5072)
+++ /branches/OKB/HeuristicLab.Services.OKB/3.3/OKBService.cs	(revision 5073)
@@ -534,4 +534,70 @@
       }
     }
+    public IEnumerable<DataTransfer.Run> QueryRuns(string query) {
+      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;
+        var runs = okb.Runs.Where(x => x.ResultFloatValues.Any(y => y.Result.Name == "BestQuality" && y.Value > double.Parse(query)));
+        return runs.Select(x => Convert.ToDto(x)).ToArray();
+      }
+    }
     public long AddRun(DataTransfer.Run dto) {
       using (OKBDataContext okb = new OKBDataContext()) {
