Index: stable/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBAlgorithm.cs
===================================================================
--- stable/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBAlgorithm.cs	(revision 15081)
+++ stable/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBAlgorithm.cs	(revision 15082)
@@ -20,9 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.IO;
-using System.Linq;
 using HeuristicLab.Clients.Access;
 using HeuristicLab.Collections;
@@ -32,4 +27,9 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Persistence.Default.Xml;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.IO;
+using System.Linq;
 
 namespace HeuristicLab.Clients.OKB.RunCreation {
@@ -222,5 +222,5 @@
       if (this.algorithmId != algorithmId) {
         IAlgorithm algorithm;
-        byte[] algorithmData = RunCreationClient.GetAlgorithmData(algorithmId);
+        byte[] algorithmData = RunCreationClient.Instance.GetAlgorithmData(algorithmId);
         using (MemoryStream stream = new MemoryStream(algorithmData)) {
           algorithm = XmlParser.Deserialize<IAlgorithm>(stream);
Index: stable/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBProblem.cs
===================================================================
--- stable/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBProblem.cs	(revision 15081)
+++ stable/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBProblem.cs	(revision 15082)
@@ -20,8 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.IO;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -29,4 +25,9 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Persistence.Default.Xml;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.IO;
+using System.Linq;
 
 namespace HeuristicLab.Clients.OKB.RunCreation {
@@ -63,7 +64,15 @@
             OnOperatorsChanged();
             OnReset();
+
+            solutions.Clear();
           }
         }
       }
+    }
+
+    [Storable]
+    private ItemList<OKBSolution> solutions; 
+    public ItemList<OKBSolution> Solutions {
+      get { return solutions; }
     }
 
@@ -135,4 +144,5 @@
       problemId = original.problemId;
       problem = cloner.Clone(original.problem);
+      solutions = cloner.Clone(original.solutions);
       RegisterProblemEvents();
     }
@@ -142,4 +152,5 @@
       problemId = -1;
       problem = initialProblem;
+      solutions = new ItemList<OKBSolution>();
       RegisterProblemEvents();
     }
@@ -148,5 +159,5 @@
       if (this.problemId != problemId) {
         IHeuristicOptimizationProblem problem;
-        byte[] problemData = RunCreationClient.GetProblemData(problemId);
+        byte[] problemData = RunCreationClient.Instance.GetProblemData(problemId);
         using (MemoryStream stream = new MemoryStream(problemData)) {
           problem = XmlParser.Deserialize<IHeuristicOptimizationProblem>(stream);
@@ -157,4 +168,12 @@
         }
       }
+    }
+
+    public void RefreshSolutions() {
+      if (ProblemId != -1) {
+        var sols = RunCreationClient.Instance.GetSolutions(ProblemId).Select(OKBSolution.Convert).ToList();
+        foreach (var sol in sols) sol.DownloadData();
+        Solutions.Replace(sols);
+      } else Solutions.Clear();
     }
 
Index: stable/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBSolution.cs
===================================================================
--- stable/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBSolution.cs	(revision 15082)
+++ stable/HeuristicLab.Clients.OKB/3.3/RunCreation/OKBSolution.cs	(revision 15082)
@@ -0,0 +1,90 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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 HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using System;
+
+namespace HeuristicLab.Clients.OKB.RunCreation {
+  [Item("OKB Solution", "")]
+  [StorableClass]
+  public abstract class OKBSolution : Item {
+    [Storable]
+    private long problemId;
+    public long ProblemId {
+      get { return problemId; }
+      protected set { problemId = value; }
+    }
+
+    [Storable]
+    private long solutionId;
+    public long SolutionId {
+      get { return solutionId; }
+      protected set { solutionId = value; }
+    }
+    
+    [Storable]
+    private IItem solution;
+    public IItem Solution {
+      get { return solution; }
+      set {
+        if (solution == value) return;
+        solution = value;
+        OnSolutionChanged();
+      }
+    }
+
+    [StorableConstructor]
+    protected OKBSolution(bool deserializing) : base(deserializing) { }
+    protected OKBSolution(OKBSolution original, Cloner cloner)
+      : base(original, cloner) {
+      problemId = original.problemId;
+      solutionId = original.solutionId;
+      solution = cloner.Clone(original.solution);
+    }
+    protected OKBSolution(long problemId) {
+      this.problemId = problemId;
+      solutionId = -1;
+      solution = null;
+    }
+    protected OKBSolution(Solution sol) {
+      problemId = sol.ProblemId;
+      solutionId = sol.Id;
+    }
+
+    public abstract void Download(long solutionId);
+    public abstract void DownloadData();
+
+    public abstract void Upload();
+
+    public static OKBSolution Convert(Solution solution) {
+      if (solution is SingleObjectiveSolution) return new SingleObjectiveOKBSolution(solution);
+      throw new ArgumentException("Unknown solution type", "solution");
+    }
+
+    public event EventHandler SolutionChanged;
+    private void OnSolutionChanged() {
+      var handler = SolutionChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+  }
+}
Index: stable/HeuristicLab.Clients.OKB/3.3/RunCreation/RunCreationClient.cs
===================================================================
--- stable/HeuristicLab.Clients.OKB/3.3/RunCreation/RunCreationClient.cs	(revision 15081)
+++ stable/HeuristicLab.Clients.OKB/3.3/RunCreation/RunCreationClient.cs	(revision 15082)
@@ -20,8 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
 using HeuristicLab.Clients.Common;
 using HeuristicLab.Common;
@@ -29,4 +25,8 @@
 using HeuristicLab.Data;
 using HeuristicLab.Persistence.Default.Xml;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
 
 namespace HeuristicLab.Clients.OKB.RunCreation {
@@ -86,5 +86,5 @@
 
     #region Algorithm Methods
-    public static byte[] GetAlgorithmData(long algorithmId) {
+    public byte[] GetAlgorithmData(long algorithmId) {
       return CallRunCreationService<byte[]>(s => s.GetAlgorithmData(algorithmId));
     }
@@ -92,6 +92,28 @@
 
     #region Problem Methods
-    public static byte[] GetProblemData(long problemId) {
+    public byte[] GetProblemData(long problemId) {
       return CallRunCreationService<byte[]>(s => s.GetProblemData(problemId));
+    }
+    #endregion
+
+    #region Solution Methods
+    public IEnumerable<Solution> GetSolutions(long problemId) {
+      return CallRunCreationService(s => s.GetSolutions(problemId));
+    }
+
+    public Solution GetSolution(long solutionId) {
+      return CallRunCreationService(s => s.GetSolution(solutionId));
+    }
+
+    public byte[] GetSolutionData(long solutionId) {
+      return CallRunCreationService(s => s.GetSolutionData(solutionId));
+    }
+
+    public long AddSolution(Solution solution, byte[] data) {
+      return CallRunCreationService(s => s.AddSolution(solution, data));
+    }
+
+    public void DeleteSolution(Solution solution) {
+      CallRunCreationService(s => s.DeleteSolution(solution));
     }
     #endregion
@@ -104,13 +126,13 @@
 
     #region Characteristic Methods
-    public static IEnumerable<Value> GetCharacteristicValues(long problemId) {
+    public IEnumerable<Value> GetCharacteristicValues(long problemId) {
       return CallRunCreationService(s => s.GetCharacteristicValues(problemId));
     }
 
-    public static void SetCharacteristicValue(long problemId, Value v) {
+    public void SetCharacteristicValue(long problemId, Value v) {
       CallRunCreationService(s => s.SetCharacteristicValue(problemId, v));
     }
 
-    public static void SetCharacteristicValues(long problemId, IEnumerable<Value> values) {
+    public void SetCharacteristicValues(long problemId, IEnumerable<Value> values) {
       CallRunCreationService(s => s.SetCharacteristicValues(problemId, values.ToList()));
     }
@@ -208,5 +230,5 @@
 
     #region Helpers
-    private static void CallRunCreationService(Action<IRunCreationService> call) {
+    private void CallRunCreationService(Action<IRunCreationService> call) {
       RunCreationServiceClient client = ClientFactory.CreateClient<RunCreationServiceClient, IRunCreationService>();
       try {
@@ -220,5 +242,5 @@
       }
     }
-    private static T CallRunCreationService<T>(Func<IRunCreationService, T> call) {
+    private T CallRunCreationService<T>(Func<IRunCreationService, T> call) {
       RunCreationServiceClient client = ClientFactory.CreateClient<RunCreationServiceClient, IRunCreationService>();
       try {
Index: stable/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/RunCreationServiceClient.cs
===================================================================
--- stable/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/RunCreationServiceClient.cs	(revision 15081)
+++ stable/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/RunCreationServiceClient.cs	(revision 15082)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.34209
+//     Runtime Version:4.0.30319.42000
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -9,1010 +9,1513 @@
 //------------------------------------------------------------------------------
 
-namespace HeuristicLab.Clients.OKB.RunCreation {
-
-
-  [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.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class Algorithm : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private HeuristicLab.Clients.OKB.RunCreation.AlgorithmClass AlgorithmClassField;
-
-    private HeuristicLab.Clients.OKB.RunCreation.DataType DataTypeField;
-
-    private string DescriptionField;
-
-    private long IdField;
-
-    private string NameField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.OKB.RunCreation.AlgorithmClass AlgorithmClass {
-      get {
-        return this.AlgorithmClassField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.AlgorithmClassField, value) != true)) {
-          this.AlgorithmClassField = value;
-          this.RaisePropertyChanged("AlgorithmClass");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.OKB.RunCreation.DataType DataType {
-      get {
-        return this.DataTypeField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.DataTypeField, value) != true)) {
-          this.DataTypeField = value;
-          this.RaisePropertyChanged("DataType");
-        }
-      }
-    }
-
-    [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 long Id {
-      get {
-        return this.IdField;
-      }
-      set {
-        if ((this.IdField.Equals(value) != true)) {
-          this.IdField = value;
-          this.RaisePropertyChanged("Id");
-        }
-      }
-    }
-
-    [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");
-        }
-      }
-    }
-
-    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 = "AlgorithmClass", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class AlgorithmClass : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private string DescriptionField;
-
-    private string NameField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [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");
-        }
-      }
-    }
-
-    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 = "DataType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class DataType : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private string NameField;
-
-    private string TypeNameField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Name {
-      get {
-        return this.NameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.NameField, value) != true)) {
-          this.NameField = value;
-          this.RaisePropertyChanged("Name");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string TypeName {
-      get {
-        return this.TypeNameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.TypeNameField, value) != true)) {
-          this.TypeNameField = value;
-          this.RaisePropertyChanged("TypeName");
-        }
-      }
-    }
-
-    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 = "Problem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class Problem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private HeuristicLab.Clients.OKB.RunCreation.DataType DataTypeField;
-
-    private string DescriptionField;
-
-    private long IdField;
-
-    private string NameField;
-
-    private HeuristicLab.Clients.OKB.RunCreation.ProblemClass ProblemClassField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.OKB.RunCreation.DataType DataType {
-      get {
-        return this.DataTypeField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.DataTypeField, value) != true)) {
-          this.DataTypeField = value;
-          this.RaisePropertyChanged("DataType");
-        }
-      }
-    }
-
-    [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 long Id {
-      get {
-        return this.IdField;
-      }
-      set {
-        if ((this.IdField.Equals(value) != true)) {
-          this.IdField = value;
-          this.RaisePropertyChanged("Id");
-        }
-      }
-    }
-
-    [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 HeuristicLab.Clients.OKB.RunCreation.ProblemClass ProblemClass {
-      get {
-        return this.ProblemClassField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ProblemClassField, value) != true)) {
-          this.ProblemClassField = value;
-          this.RaisePropertyChanged("ProblemClass");
-        }
-      }
-    }
-
-    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 = "ProblemClass", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class ProblemClass : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private string DescriptionField;
-
-    private string NameField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [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");
-        }
-      }
-    }
-
-    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 = "Run", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class Run : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private long AlgorithmIdField;
-
-    private System.Guid ClientIdField;
-
-    private System.DateTime CreatedDateField;
-
-    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> ParameterValuesField;
-
-    private long ProblemIdField;
-
-    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> ResultValuesField;
-
-    private System.Guid UserIdField;
-
-    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 System.Guid ClientId {
-      get {
-        return this.ClientIdField;
-      }
-      set {
-        if ((this.ClientIdField.Equals(value) != true)) {
-          this.ClientIdField = value;
-          this.RaisePropertyChanged("ClientId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime CreatedDate {
-      get {
-        return this.CreatedDateField;
-      }
-      set {
-        if ((this.CreatedDateField.Equals(value) != true)) {
-          this.CreatedDateField = value;
-          this.RaisePropertyChanged("CreatedDate");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> ParameterValues {
-      get {
-        return this.ParameterValuesField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ParameterValuesField, value) != true)) {
-          this.ParameterValuesField = value;
-          this.RaisePropertyChanged("ParameterValues");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public long ProblemId {
-      get {
-        return this.ProblemIdField;
-      }
-      set {
-        if ((this.ProblemIdField.Equals(value) != true)) {
-          this.ProblemIdField = value;
-          this.RaisePropertyChanged("ProblemId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> 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");
-        }
-      }
-    }
-
-    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 = "Value", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.BoolValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.LongValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.TimeSpanValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.IntValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.FloatValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.DoubleValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.StringValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.BinaryValue))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.PercentValue))]
-  public partial class Value : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private HeuristicLab.Clients.OKB.RunCreation.DataType DataTypeField;
-
-    private string NameField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.OKB.RunCreation.DataType DataType {
-      get {
-        return this.DataTypeField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.DataTypeField, value) != true)) {
-          this.DataTypeField = value;
-          this.RaisePropertyChanged("DataType");
-        }
-      }
-    }
-
-    [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");
-        }
-      }
-    }
-
-    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 = "BoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class BoolValue : HeuristicLab.Clients.OKB.RunCreation.Value {
-
-    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 = "LongValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class LongValue : HeuristicLab.Clients.OKB.RunCreation.Value {
-
-    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 = "TimeSpanValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class TimeSpanValue : HeuristicLab.Clients.OKB.RunCreation.Value {
-
-    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 = "IntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class IntValue : HeuristicLab.Clients.OKB.RunCreation.Value {
-
-    private int ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public int 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 = "FloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class FloatValue : HeuristicLab.Clients.OKB.RunCreation.Value {
-
-    private float ValueField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public float 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 = "DoubleValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class DoubleValue : HeuristicLab.Clients.OKB.RunCreation.Value {
-
-    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 = "StringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class StringValue : HeuristicLab.Clients.OKB.RunCreation.Value {
-
-    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 = "BinaryValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class BinaryValue : HeuristicLab.Clients.OKB.RunCreation.Value {
-
-    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 = "PercentValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
-      "aTransfer")]
-  public partial class PercentValue : HeuristicLab.Clients.OKB.RunCreation.Value {
-
-    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 = "MissingProblem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
-  public partial class MissingProblem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private string MessageField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Message {
-      get {
-        return this.MessageField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.MessageField, value) != true)) {
-          this.MessageField = value;
-          this.RaisePropertyChanged("Message");
-        }
-      }
-    }
-
-    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 = "UnknownCharacteristicType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
-  public partial class UnknownCharacteristicType : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    private string MessageField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Message {
-      get {
-        return this.MessageField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.MessageField, value) != true)) {
-          this.MessageField = value;
-          this.RaisePropertyChanged("Message");
-        }
-      }
-    }
-
-    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.RunCreation.IRunCreationService")]
-  public interface IRunCreationService {
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetAlgorithms", ReplyAction = "http://tempuri.org/IRunCreationService/GetAlgorithmsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Algorithm> GetAlgorithms(string platformName);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetAlgorithms", ReplyAction = "http://tempuri.org/IRunCreationService/GetAlgorithmsResponse")]
-    System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Algorithm>> GetAlgorithmsAsync(string platformName);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetAlgorithmData", ReplyAction = "http://tempuri.org/IRunCreationService/GetAlgorithmDataResponse")]
-    byte[] GetAlgorithmData(long algorithmId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetAlgorithmData", ReplyAction = "http://tempuri.org/IRunCreationService/GetAlgorithmDataResponse")]
-    System.Threading.Tasks.Task<byte[]> GetAlgorithmDataAsync(long algorithmId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetProblems", ReplyAction = "http://tempuri.org/IRunCreationService/GetProblemsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Problem> GetProblems(string platformName);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetProblems", ReplyAction = "http://tempuri.org/IRunCreationService/GetProblemsResponse")]
-    System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Problem>> GetProblemsAsync(string platformName);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetProblemData", ReplyAction = "http://tempuri.org/IRunCreationService/GetProblemDataResponse")]
-    byte[] GetProblemData(long problemId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetProblemData", ReplyAction = "http://tempuri.org/IRunCreationService/GetProblemDataResponse")]
-    System.Threading.Tasks.Task<byte[]> GetProblemDataAsync(long problemId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/AddRun", ReplyAction = "http://tempuri.org/IRunCreationService/AddRunResponse")]
-    void AddRun(HeuristicLab.Clients.OKB.RunCreation.Run run);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/AddRun", ReplyAction = "http://tempuri.org/IRunCreationService/AddRunResponse")]
-    System.Threading.Tasks.Task AddRunAsync(HeuristicLab.Clients.OKB.RunCreation.Run run);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetCharacteristicValues", ReplyAction = "http://tempuri.org/IRunCreationService/GetCharacteristicValuesResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> GetCharacteristicValues(long problemId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/GetCharacteristicValues", ReplyAction = "http://tempuri.org/IRunCreationService/GetCharacteristicValuesResponse")]
-    System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value>> GetCharacteristicValuesAsync(long problemId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/SetCharacteristicValue", ReplyAction = "http://tempuri.org/IRunCreationService/SetCharacteristicValueResponse")]
-    [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.MissingProblem), Action = "http://tempuri.org/IRunCreationService/SetCharacteristicValueMissingProblemFault", Name = "MissingProblem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
-    [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.UnknownCharacteristicType), Action = "http://tempuri.org/IRunCreationService/SetCharacteristicValueUnknownCharacteristi" +
-        "cTypeFault", Name = "UnknownCharacteristicType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
-    void SetCharacteristicValue(long problemId, HeuristicLab.Clients.OKB.RunCreation.Value value);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/SetCharacteristicValue", ReplyAction = "http://tempuri.org/IRunCreationService/SetCharacteristicValueResponse")]
-    System.Threading.Tasks.Task SetCharacteristicValueAsync(long problemId, HeuristicLab.Clients.OKB.RunCreation.Value value);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/SetCharacteristicValues", ReplyAction = "http://tempuri.org/IRunCreationService/SetCharacteristicValuesResponse")]
-    [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.MissingProblem), Action = "http://tempuri.org/IRunCreationService/SetCharacteristicValuesMissingProblemFault" +
-        "", Name = "MissingProblem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
-    [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.UnknownCharacteristicType), Action = "http://tempuri.org/IRunCreationService/SetCharacteristicValuesUnknownCharacterist" +
-        "icTypeFault", Name = "UnknownCharacteristicType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
-    void SetCharacteristicValues(long problemId, System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> values);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IRunCreationService/SetCharacteristicValues", ReplyAction = "http://tempuri.org/IRunCreationService/SetCharacteristicValuesResponse")]
-    System.Threading.Tasks.Task SetCharacteristicValuesAsync(long problemId, System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> values);
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-  public interface IRunCreationServiceChannel : HeuristicLab.Clients.OKB.RunCreation.IRunCreationService, System.ServiceModel.IClientChannel {
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-  public partial class RunCreationServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.OKB.RunCreation.IRunCreationService>, HeuristicLab.Clients.OKB.RunCreation.IRunCreationService {
-
-    public RunCreationServiceClient() {
-    }
-
-    public RunCreationServiceClient(string endpointConfigurationName) :
-      base(endpointConfigurationName) {
-    }
-
-    public RunCreationServiceClient(string endpointConfigurationName, string remoteAddress) :
-      base(endpointConfigurationName, remoteAddress) {
-    }
-
-    public RunCreationServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
-      base(endpointConfigurationName, remoteAddress) {
-    }
-
-    public RunCreationServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
-      base(binding, remoteAddress) {
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Algorithm> GetAlgorithms(string platformName) {
-      return base.Channel.GetAlgorithms(platformName);
-    }
-
-    public System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Algorithm>> GetAlgorithmsAsync(string platformName) {
-      return base.Channel.GetAlgorithmsAsync(platformName);
-    }
-
-    public byte[] GetAlgorithmData(long algorithmId) {
-      return base.Channel.GetAlgorithmData(algorithmId);
-    }
-
-    public System.Threading.Tasks.Task<byte[]> GetAlgorithmDataAsync(long algorithmId) {
-      return base.Channel.GetAlgorithmDataAsync(algorithmId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Problem> GetProblems(string platformName) {
-      return base.Channel.GetProblems(platformName);
-    }
-
-    public System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Problem>> GetProblemsAsync(string platformName) {
-      return base.Channel.GetProblemsAsync(platformName);
-    }
-
-    public byte[] GetProblemData(long problemId) {
-      return base.Channel.GetProblemData(problemId);
-    }
-
-    public System.Threading.Tasks.Task<byte[]> GetProblemDataAsync(long problemId) {
-      return base.Channel.GetProblemDataAsync(problemId);
-    }
-
-    public void AddRun(HeuristicLab.Clients.OKB.RunCreation.Run run) {
-      base.Channel.AddRun(run);
-    }
-
-    public System.Threading.Tasks.Task AddRunAsync(HeuristicLab.Clients.OKB.RunCreation.Run run) {
-      return base.Channel.AddRunAsync(run);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> GetCharacteristicValues(long problemId) {
-      return base.Channel.GetCharacteristicValues(problemId);
-    }
-
-    public System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value>> GetCharacteristicValuesAsync(long problemId) {
-      return base.Channel.GetCharacteristicValuesAsync(problemId);
-    }
-
-    public void SetCharacteristicValue(long problemId, HeuristicLab.Clients.OKB.RunCreation.Value value) {
-      base.Channel.SetCharacteristicValue(problemId, value);
-    }
-
-    public System.Threading.Tasks.Task SetCharacteristicValueAsync(long problemId, HeuristicLab.Clients.OKB.RunCreation.Value value) {
-      return base.Channel.SetCharacteristicValueAsync(problemId, value);
-    }
-
-    public void SetCharacteristicValues(long problemId, System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> values) {
-      base.Channel.SetCharacteristicValues(problemId, values);
-    }
-
-    public System.Threading.Tasks.Task SetCharacteristicValuesAsync(long problemId, System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> values) {
-      return base.Channel.SetCharacteristicValuesAsync(problemId, values);
-    }
-  }
+namespace HeuristicLab.Clients.OKB.RunCreation
+{
+    using System.Runtime.Serialization;
+    
+    
+    [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.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class Algorithm : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private HeuristicLab.Clients.OKB.RunCreation.AlgorithmClass AlgorithmClassField;
+        
+        private HeuristicLab.Clients.OKB.RunCreation.DataType DataTypeField;
+        
+        private string DescriptionField;
+        
+        private long IdField;
+        
+        private string NameField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.OKB.RunCreation.AlgorithmClass AlgorithmClass
+        {
+            get
+            {
+                return this.AlgorithmClassField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.AlgorithmClassField, value) != true))
+                {
+                    this.AlgorithmClassField = value;
+                    this.RaisePropertyChanged("AlgorithmClass");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.OKB.RunCreation.DataType DataType
+        {
+            get
+            {
+                return this.DataTypeField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.DataTypeField, value) != true))
+                {
+                    this.DataTypeField = value;
+                    this.RaisePropertyChanged("DataType");
+                }
+            }
+        }
+        
+        [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 long Id
+        {
+            get
+            {
+                return this.IdField;
+            }
+            set
+            {
+                if ((this.IdField.Equals(value) != true))
+                {
+                    this.IdField = value;
+                    this.RaisePropertyChanged("Id");
+                }
+            }
+        }
+        
+        [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");
+                }
+            }
+        }
+        
+        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="AlgorithmClass", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class AlgorithmClass : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private string DescriptionField;
+        
+        private string NameField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [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");
+                }
+            }
+        }
+        
+        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="DataType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class DataType : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private string NameField;
+        
+        private string TypeNameField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.NameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.NameField, value) != true))
+                {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string TypeName
+        {
+            get
+            {
+                return this.TypeNameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.TypeNameField, value) != true))
+                {
+                    this.TypeNameField = value;
+                    this.RaisePropertyChanged("TypeName");
+                }
+            }
+        }
+        
+        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="Problem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class Problem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private HeuristicLab.Clients.OKB.RunCreation.DataType DataTypeField;
+        
+        private string DescriptionField;
+        
+        private long IdField;
+        
+        private string NameField;
+        
+        private HeuristicLab.Clients.OKB.RunCreation.ProblemClass ProblemClassField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.OKB.RunCreation.DataType DataType
+        {
+            get
+            {
+                return this.DataTypeField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.DataTypeField, value) != true))
+                {
+                    this.DataTypeField = value;
+                    this.RaisePropertyChanged("DataType");
+                }
+            }
+        }
+        
+        [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 long Id
+        {
+            get
+            {
+                return this.IdField;
+            }
+            set
+            {
+                if ((this.IdField.Equals(value) != true))
+                {
+                    this.IdField = value;
+                    this.RaisePropertyChanged("Id");
+                }
+            }
+        }
+        
+        [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 HeuristicLab.Clients.OKB.RunCreation.ProblemClass ProblemClass
+        {
+            get
+            {
+                return this.ProblemClassField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.ProblemClassField, value) != true))
+                {
+                    this.ProblemClassField = value;
+                    this.RaisePropertyChanged("ProblemClass");
+                }
+            }
+        }
+        
+        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="ProblemClass", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class ProblemClass : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private string DescriptionField;
+        
+        private string NameField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [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");
+                }
+            }
+        }
+        
+        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="Solution", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.SingleObjectiveSolution))]
+    public partial class Solution : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private HeuristicLab.Clients.OKB.RunCreation.DataType DataTypeField;
+        
+        private long IdField;
+        
+        private long ProblemIdField;
+        
+        private System.Nullable<long> RunIdField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.OKB.RunCreation.DataType DataType
+        {
+            get
+            {
+                return this.DataTypeField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.DataTypeField, value) != true))
+                {
+                    this.DataTypeField = value;
+                    this.RaisePropertyChanged("DataType");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public long Id
+        {
+            get
+            {
+                return this.IdField;
+            }
+            set
+            {
+                if ((this.IdField.Equals(value) != true))
+                {
+                    this.IdField = value;
+                    this.RaisePropertyChanged("Id");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public long ProblemId
+        {
+            get
+            {
+                return this.ProblemIdField;
+            }
+            set
+            {
+                if ((this.ProblemIdField.Equals(value) != true))
+                {
+                    this.ProblemIdField = value;
+                    this.RaisePropertyChanged("ProblemId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<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="SingleObjectiveSolution", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class SingleObjectiveSolution : HeuristicLab.Clients.OKB.RunCreation.Solution
+    {
+        
+        private double QualityField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double Quality
+        {
+            get
+            {
+                return this.QualityField;
+            }
+            set
+            {
+                if ((this.QualityField.Equals(value) != true))
+                {
+                    this.QualityField = value;
+                    this.RaisePropertyChanged("Quality");
+                }
+            }
+        }
+    }
+    
+    [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.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class Run : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private long AlgorithmIdField;
+        
+        private System.Guid ClientIdField;
+        
+        private System.DateTime CreatedDateField;
+        
+        private System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> ParameterValuesField;
+        
+        private long ProblemIdField;
+        
+        private System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> ResultValuesField;
+        
+        private System.Guid UserIdField;
+        
+        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 System.Guid ClientId
+        {
+            get
+            {
+                return this.ClientIdField;
+            }
+            set
+            {
+                if ((this.ClientIdField.Equals(value) != true))
+                {
+                    this.ClientIdField = value;
+                    this.RaisePropertyChanged("ClientId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime CreatedDate
+        {
+            get
+            {
+                return this.CreatedDateField;
+            }
+            set
+            {
+                if ((this.CreatedDateField.Equals(value) != true))
+                {
+                    this.CreatedDateField = value;
+                    this.RaisePropertyChanged("CreatedDate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> ParameterValues
+        {
+            get
+            {
+                return this.ParameterValuesField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.ParameterValuesField, value) != true))
+                {
+                    this.ParameterValuesField = value;
+                    this.RaisePropertyChanged("ParameterValues");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public long ProblemId
+        {
+            get
+            {
+                return this.ProblemIdField;
+            }
+            set
+            {
+                if ((this.ProblemIdField.Equals(value) != true))
+                {
+                    this.ProblemIdField = value;
+                    this.RaisePropertyChanged("ProblemId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> 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");
+                }
+            }
+        }
+        
+        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="Value", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.BoolValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.LongValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.TimeSpanValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.DoubleValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.PercentValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.FloatValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.IntValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.StringValue))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.BinaryValue))]
+    public partial class Value : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private HeuristicLab.Clients.OKB.RunCreation.DataType DataTypeField;
+        
+        private string NameField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.OKB.RunCreation.DataType DataType
+        {
+            get
+            {
+                return this.DataTypeField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.DataTypeField, value) != true))
+                {
+                    this.DataTypeField = value;
+                    this.RaisePropertyChanged("DataType");
+                }
+            }
+        }
+        
+        [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");
+                }
+            }
+        }
+        
+        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="BoolValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class BoolValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        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="LongValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class LongValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        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="TimeSpanValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class TimeSpanValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        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="DoubleValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class DoubleValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        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="PercentValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class PercentValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        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="FloatValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class FloatValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        private float ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public float 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="IntValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class IntValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        private int ValueField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int 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="StringValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class StringValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        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="BinaryValue", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation.Dat" +
+        "aTransfer")]
+    public partial class BinaryValue : HeuristicLab.Clients.OKB.RunCreation.Value
+    {
+        
+        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="MissingProblem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
+    public partial class MissingProblem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private string MessageField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Message
+        {
+            get
+            {
+                return this.MessageField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.MessageField, value) != true))
+                {
+                    this.MessageField = value;
+                    this.RaisePropertyChanged("Message");
+                }
+            }
+        }
+        
+        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="MissingSolution", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
+    public partial class MissingSolution : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private string MessageField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Message
+        {
+            get
+            {
+                return this.MessageField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.MessageField, value) != true))
+                {
+                    this.MessageField = value;
+                    this.RaisePropertyChanged("Message");
+                }
+            }
+        }
+        
+        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="UnknownCharacteristicType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
+    public partial class UnknownCharacteristicType : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        private string MessageField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Message
+        {
+            get
+            {
+                return this.MessageField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.MessageField, value) != true))
+                {
+                    this.MessageField = value;
+                    this.RaisePropertyChanged("Message");
+                }
+            }
+        }
+        
+        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.RunCreation.IRunCreationService")]
+    public interface IRunCreationService
+    {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetAlgorithms", ReplyAction="http://tempuri.org/IRunCreationService/GetAlgorithmsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Algorithm> GetAlgorithms(string platformName);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetAlgorithms", ReplyAction="http://tempuri.org/IRunCreationService/GetAlgorithmsResponse")]
+        System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Algorithm>> GetAlgorithmsAsync(string platformName);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetAlgorithmData", ReplyAction="http://tempuri.org/IRunCreationService/GetAlgorithmDataResponse")]
+        byte[] GetAlgorithmData(long algorithmId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetAlgorithmData", ReplyAction="http://tempuri.org/IRunCreationService/GetAlgorithmDataResponse")]
+        System.Threading.Tasks.Task<byte[]> GetAlgorithmDataAsync(long algorithmId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetProblems", ReplyAction="http://tempuri.org/IRunCreationService/GetProblemsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Problem> GetProblems(string platformName);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetProblems", ReplyAction="http://tempuri.org/IRunCreationService/GetProblemsResponse")]
+        System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Problem>> GetProblemsAsync(string platformName);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetProblemData", ReplyAction="http://tempuri.org/IRunCreationService/GetProblemDataResponse")]
+        byte[] GetProblemData(long problemId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetProblemData", ReplyAction="http://tempuri.org/IRunCreationService/GetProblemDataResponse")]
+        System.Threading.Tasks.Task<byte[]> GetProblemDataAsync(long problemId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetSolutions", ReplyAction="http://tempuri.org/IRunCreationService/GetSolutionsResponse")]
+        [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.MissingProblem), Action="http://tempuri.org/IRunCreationService/GetSolutionsMissingProblemFault", Name="MissingProblem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
+        System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Solution> GetSolutions(long problemId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetSolutions", ReplyAction="http://tempuri.org/IRunCreationService/GetSolutionsResponse")]
+        System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Solution>> GetSolutionsAsync(long problemId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetSolution", ReplyAction="http://tempuri.org/IRunCreationService/GetSolutionResponse")]
+        HeuristicLab.Clients.OKB.RunCreation.Solution GetSolution(long solutionId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetSolution", ReplyAction="http://tempuri.org/IRunCreationService/GetSolutionResponse")]
+        System.Threading.Tasks.Task<HeuristicLab.Clients.OKB.RunCreation.Solution> GetSolutionAsync(long solutionId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetSolutionData", ReplyAction="http://tempuri.org/IRunCreationService/GetSolutionDataResponse")]
+        [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.MissingSolution), Action="http://tempuri.org/IRunCreationService/GetSolutionDataMissingSolutionFault", Name="MissingSolution", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
+        byte[] GetSolutionData(long solutionId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetSolutionData", ReplyAction="http://tempuri.org/IRunCreationService/GetSolutionDataResponse")]
+        System.Threading.Tasks.Task<byte[]> GetSolutionDataAsync(long solutionId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/AddSolution", ReplyAction="http://tempuri.org/IRunCreationService/AddSolutionResponse")]
+        long AddSolution(HeuristicLab.Clients.OKB.RunCreation.Solution solution, byte[] data);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/AddSolution", ReplyAction="http://tempuri.org/IRunCreationService/AddSolutionResponse")]
+        System.Threading.Tasks.Task<long> AddSolutionAsync(HeuristicLab.Clients.OKB.RunCreation.Solution solution, byte[] data);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/DeleteSolution", ReplyAction="http://tempuri.org/IRunCreationService/DeleteSolutionResponse")]
+        void DeleteSolution(HeuristicLab.Clients.OKB.RunCreation.Solution solution);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/DeleteSolution", ReplyAction="http://tempuri.org/IRunCreationService/DeleteSolutionResponse")]
+        System.Threading.Tasks.Task DeleteSolutionAsync(HeuristicLab.Clients.OKB.RunCreation.Solution solution);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/AddRun", ReplyAction="http://tempuri.org/IRunCreationService/AddRunResponse")]
+        void AddRun(HeuristicLab.Clients.OKB.RunCreation.Run run);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/AddRun", ReplyAction="http://tempuri.org/IRunCreationService/AddRunResponse")]
+        System.Threading.Tasks.Task AddRunAsync(HeuristicLab.Clients.OKB.RunCreation.Run run);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetCharacteristicValues", ReplyAction="http://tempuri.org/IRunCreationService/GetCharacteristicValuesResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> GetCharacteristicValues(long problemId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/GetCharacteristicValues", ReplyAction="http://tempuri.org/IRunCreationService/GetCharacteristicValuesResponse")]
+        System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value>> GetCharacteristicValuesAsync(long problemId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/SetCharacteristicValue", ReplyAction="http://tempuri.org/IRunCreationService/SetCharacteristicValueResponse")]
+        [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.MissingProblem), Action="http://tempuri.org/IRunCreationService/SetCharacteristicValueMissingProblemFault", Name="MissingProblem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
+        [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.UnknownCharacteristicType), Action="http://tempuri.org/IRunCreationService/SetCharacteristicValueUnknownCharacteristi" +
+            "cTypeFault", Name="UnknownCharacteristicType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
+        void SetCharacteristicValue(long problemId, HeuristicLab.Clients.OKB.RunCreation.Value value);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/SetCharacteristicValue", ReplyAction="http://tempuri.org/IRunCreationService/SetCharacteristicValueResponse")]
+        System.Threading.Tasks.Task SetCharacteristicValueAsync(long problemId, HeuristicLab.Clients.OKB.RunCreation.Value value);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/SetCharacteristicValues", ReplyAction="http://tempuri.org/IRunCreationService/SetCharacteristicValuesResponse")]
+        [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.UnknownCharacteristicType), Action="http://tempuri.org/IRunCreationService/SetCharacteristicValuesUnknownCharacterist" +
+            "icTypeFault", Name="UnknownCharacteristicType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
+        [System.ServiceModel.FaultContractAttribute(typeof(HeuristicLab.Clients.OKB.RunCreation.MissingProblem), Action="http://tempuri.org/IRunCreationService/SetCharacteristicValuesMissingProblemFault" +
+            "", Name="MissingProblem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.RunCreation")]
+        void SetCharacteristicValues(long problemId, System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> values);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IRunCreationService/SetCharacteristicValues", ReplyAction="http://tempuri.org/IRunCreationService/SetCharacteristicValuesResponse")]
+        System.Threading.Tasks.Task SetCharacteristicValuesAsync(long problemId, System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> values);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public interface IRunCreationServiceChannel : HeuristicLab.Clients.OKB.RunCreation.IRunCreationService, System.ServiceModel.IClientChannel
+    {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class RunCreationServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.OKB.RunCreation.IRunCreationService>, HeuristicLab.Clients.OKB.RunCreation.IRunCreationService
+    {
+        
+        public RunCreationServiceClient()
+        {
+        }
+        
+        public RunCreationServiceClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName)
+        {
+        }
+        
+        public RunCreationServiceClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public RunCreationServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public RunCreationServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress)
+        {
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Algorithm> GetAlgorithms(string platformName)
+        {
+            return base.Channel.GetAlgorithms(platformName);
+        }
+        
+        public System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Algorithm>> GetAlgorithmsAsync(string platformName)
+        {
+            return base.Channel.GetAlgorithmsAsync(platformName);
+        }
+        
+        public byte[] GetAlgorithmData(long algorithmId)
+        {
+            return base.Channel.GetAlgorithmData(algorithmId);
+        }
+        
+        public System.Threading.Tasks.Task<byte[]> GetAlgorithmDataAsync(long algorithmId)
+        {
+            return base.Channel.GetAlgorithmDataAsync(algorithmId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Problem> GetProblems(string platformName)
+        {
+            return base.Channel.GetProblems(platformName);
+        }
+        
+        public System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Problem>> GetProblemsAsync(string platformName)
+        {
+            return base.Channel.GetProblemsAsync(platformName);
+        }
+        
+        public byte[] GetProblemData(long problemId)
+        {
+            return base.Channel.GetProblemData(problemId);
+        }
+        
+        public System.Threading.Tasks.Task<byte[]> GetProblemDataAsync(long problemId)
+        {
+            return base.Channel.GetProblemDataAsync(problemId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Solution> GetSolutions(long problemId)
+        {
+            return base.Channel.GetSolutions(problemId);
+        }
+        
+        public System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Solution>> GetSolutionsAsync(long problemId)
+        {
+            return base.Channel.GetSolutionsAsync(problemId);
+        }
+        
+        public HeuristicLab.Clients.OKB.RunCreation.Solution GetSolution(long solutionId)
+        {
+            return base.Channel.GetSolution(solutionId);
+        }
+        
+        public System.Threading.Tasks.Task<HeuristicLab.Clients.OKB.RunCreation.Solution> GetSolutionAsync(long solutionId)
+        {
+            return base.Channel.GetSolutionAsync(solutionId);
+        }
+        
+        public byte[] GetSolutionData(long solutionId)
+        {
+            return base.Channel.GetSolutionData(solutionId);
+        }
+        
+        public System.Threading.Tasks.Task<byte[]> GetSolutionDataAsync(long solutionId)
+        {
+            return base.Channel.GetSolutionDataAsync(solutionId);
+        }
+        
+        public long AddSolution(HeuristicLab.Clients.OKB.RunCreation.Solution solution, byte[] data)
+        {
+            return base.Channel.AddSolution(solution, data);
+        }
+        
+        public System.Threading.Tasks.Task<long> AddSolutionAsync(HeuristicLab.Clients.OKB.RunCreation.Solution solution, byte[] data)
+        {
+            return base.Channel.AddSolutionAsync(solution, data);
+        }
+        
+        public void DeleteSolution(HeuristicLab.Clients.OKB.RunCreation.Solution solution)
+        {
+            base.Channel.DeleteSolution(solution);
+        }
+        
+        public System.Threading.Tasks.Task DeleteSolutionAsync(HeuristicLab.Clients.OKB.RunCreation.Solution solution)
+        {
+            return base.Channel.DeleteSolutionAsync(solution);
+        }
+        
+        public void AddRun(HeuristicLab.Clients.OKB.RunCreation.Run run)
+        {
+            base.Channel.AddRun(run);
+        }
+        
+        public System.Threading.Tasks.Task AddRunAsync(HeuristicLab.Clients.OKB.RunCreation.Run run)
+        {
+            return base.Channel.AddRunAsync(run);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> GetCharacteristicValues(long problemId)
+        {
+            return base.Channel.GetCharacteristicValues(problemId);
+        }
+        
+        public System.Threading.Tasks.Task<System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value>> GetCharacteristicValuesAsync(long problemId)
+        {
+            return base.Channel.GetCharacteristicValuesAsync(problemId);
+        }
+        
+        public void SetCharacteristicValue(long problemId, HeuristicLab.Clients.OKB.RunCreation.Value value)
+        {
+            base.Channel.SetCharacteristicValue(problemId, value);
+        }
+        
+        public System.Threading.Tasks.Task SetCharacteristicValueAsync(long problemId, HeuristicLab.Clients.OKB.RunCreation.Value value)
+        {
+            return base.Channel.SetCharacteristicValueAsync(problemId, value);
+        }
+        
+        public void SetCharacteristicValues(long problemId, System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> values)
+        {
+            base.Channel.SetCharacteristicValues(problemId, values);
+        }
+        
+        public System.Threading.Tasks.Task SetCharacteristicValuesAsync(long problemId, System.Collections.Generic.List<HeuristicLab.Clients.OKB.RunCreation.Value> values)
+        {
+            return base.Channel.SetCharacteristicValuesAsync(problemId, values);
+        }
+    }
 }
Index: stable/HeuristicLab.Clients.OKB/3.3/RunCreation/SingleObjectiveOKBSolution.cs
===================================================================
--- stable/HeuristicLab.Clients.OKB/3.3/RunCreation/SingleObjectiveOKBSolution.cs	(revision 15082)
+++ stable/HeuristicLab.Clients.OKB/3.3/RunCreation/SingleObjectiveOKBSolution.cs	(revision 15082)
@@ -0,0 +1,105 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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 HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Persistence.Default.Xml;
+using System;
+using System.IO;
+
+namespace HeuristicLab.Clients.OKB.RunCreation {
+  [Item("OKB Solution (single-objective)", "")]
+  [StorableClass]
+  public sealed class SingleObjectiveOKBSolution : OKBSolution {
+    [Storable]
+    private double quality;
+    public double Quality {
+      get { return quality; }
+      set {
+        if (quality == value) return;
+        quality = value;
+        OnQualityChanged();
+      }
+    }
+
+    [StorableConstructor]
+    private SingleObjectiveOKBSolution(bool deserializing) : base(deserializing) { }
+    private SingleObjectiveOKBSolution(SingleObjectiveOKBSolution original, Cloner cloner)
+      : base(original, cloner) {
+      quality = original.quality;
+    }
+    public SingleObjectiveOKBSolution(long problemId) : base(problemId) {
+      quality = double.NaN;
+    }
+    public SingleObjectiveOKBSolution(Solution solution) : base(solution) {
+      var soSolution = solution as SingleObjectiveSolution;
+      if (soSolution == null) throw new ArgumentException("Solution is not of type SingleObjectiveSolution", "solution");
+      Quality = soSolution.Quality;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SingleObjectiveOKBSolution(this, cloner);
+    }
+
+    public override void Download(long solutionId) {
+      if (SolutionId == solutionId) return;
+      byte[] solutionData = RunCreationClient.Instance.GetSolutionData(solutionId);
+      using (var stream = new MemoryStream(solutionData)) {
+        Solution = XmlParser.Deserialize<IItem>(stream);
+        SolutionId = solutionId;
+      }
+      var sol = RunCreationClient.Instance.GetSolution(solutionId);
+      ProblemId = sol.ProblemId;
+      var soSol = sol as SingleObjectiveSolution;
+      if (soSol == null) throw new InvalidOperationException(string.Format("Solution with id {0} is not a single-objective solution.", solutionId));
+      Quality = soSol.Quality;
+    }
+
+    public override void DownloadData() {
+      using (var stream = new MemoryStream(RunCreationClient.Instance.GetSolutionData(SolutionId))) {
+        Solution = XmlParser.Deserialize<IItem>(stream);
+      }
+    }
+
+    public override void Upload() {
+      if (SolutionId != -1) throw new InvalidOperationException("Solution exists already.");
+      using (var stream = new MemoryStream()) {
+        if (Solution != null) XmlGenerator.Serialize(Solution, stream);
+        SolutionId = RunCreationClient.Instance.AddSolution(
+          new SingleObjectiveSolution() {
+            ProblemId = ProblemId,
+            Quality = Quality,
+            DataType = Solution != null ? new DataType() {
+              Name = Solution.GetType().Name,
+              TypeName = Solution.GetType().FullName
+            } : null
+          }, stream.ToArray());
+      }
+    }
+
+    public event EventHandler QualityChanged;
+    private void OnQualityChanged() {
+      var handler = QualityChanged;
+      if  (handler != null) handler(this, EventArgs.Empty);
+    }
+  }
+}
