Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/RunCreationClient.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/RunCreationClient.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/RunCreationClient.cs	(revision 13550)
@@ -22,8 +22,11 @@
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using HeuristicLab.Clients.Common;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Persistence.Default.Xml;
 
 namespace HeuristicLab.Clients.OKB.RunCreation {
@@ -114,4 +117,81 @@
     #endregion
 
+    #region OKB-Item Conversion
+    public IItem ConvertToItem(Value value) {
+      if (value is BinaryValue) {
+        IItem item = null;
+        var binaryValue = (BinaryValue)value;
+        if (binaryValue.Value != null) {
+          using (var stream = new MemoryStream(binaryValue.Value)) {
+            try {
+              item = XmlParser.Deserialize<IItem>(stream);
+            } catch (Exception) { }
+            stream.Close();
+          }
+        }
+        return item ?? new Data.StringValue(value.DataType.Name);
+      } else if (value is BoolValue) {
+        return new Data.BoolValue(((BoolValue)value).Value);
+      } else if (value is FloatValue) {
+        return new Data.DoubleValue(((FloatValue)value).Value);
+      } else if (value is PercentValue) {
+        return new Data.PercentValue(((PercentValue)value).Value);
+      } else if (value is DoubleValue) {
+        return new Data.DoubleValue(((DoubleValue)value).Value);
+      } else if (value is IntValue) {
+        return new Data.IntValue((int)((IntValue)value).Value);
+      } else if (value is LongValue) {
+        return new Data.IntValue((int)((LongValue)value).Value);
+      } else if (value is StringValue) {
+        return new Data.StringValue(((StringValue)value).Value);
+      } else if (value is TimeSpanValue) {
+        return new Data.TimeSpanValue(TimeSpan.FromSeconds((long)((TimeSpanValue)value).Value));
+      }
+      return null;
+    }
+
+    public Value ConvertToValue(IItem item, string name) {
+      Value result = null;
+      if (item is ValueTypeValue<bool>) {
+        var boolValue = (ValueTypeValue<bool>)item;
+        result = new BoolValue() { Value = boolValue.Value };
+      } else if (item is ValueTypeValue<int>) {
+        var intValue = (ValueTypeValue<int>)item;
+        result = new IntValue() { Value = intValue.Value };
+      } else if (item is ValueTypeValue<long>) {
+        var longValue = (ValueTypeValue<long>)item;
+        result = new LongValue() { Value = longValue.Value };
+      } else if (item is ValueTypeValue<float>) {
+        var floatValue = (ValueTypeValue<float>)item;
+        result = new FloatValue() { Value = floatValue.Value };
+      } else if (item is ValueTypeValue<double>) {
+        var doubleValue = (ValueTypeValue<double>)item;
+        if (item is Data.PercentValue) result = new PercentValue() { Value = doubleValue.Value };
+        else result = new DoubleValue() { Value = doubleValue.Value };
+      } else if (item is ValueTypeValue<TimeSpan>) {
+        var timeSpanValue = (ValueTypeValue<TimeSpan>)item;
+        result = new TimeSpanValue() { Value = (long)timeSpanValue.Value.TotalSeconds };
+      } else if (item is Data.StringValue) {
+        var stringValue = (Data.StringValue)item;
+        result = new StringValue() { Value = stringValue.Value };
+      }
+      if (result == null) {
+        var binaryValue = new BinaryValue {
+          DataType = new DataType() {
+            Name = item.GetType().Name,
+            TypeName = item.GetType().AssemblyQualifiedName
+          }
+        };
+        using (var memStream = new MemoryStream()) {
+          XmlGenerator.Serialize(item, memStream);
+          binaryValue.Value = memStream.ToArray();
+        }
+        result = binaryValue;
+      }
+      result.Name = name;
+      return result;
+    }
+    #endregion
+
     #region Events
     public event EventHandler Refreshing;
Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/BoolValue.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/BoolValue.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/BoolValue.cs	(revision 13550)
@@ -24,4 +24,5 @@
 namespace HeuristicLab.Clients.OKB.RunCreation {
   public partial class BoolValue {
+
     public BoolValue() {
       DataType = new DataType() {
@@ -31,5 +32,5 @@
     }
 
-    public override string ToString() {
+    public override string GetValue() {
       return Value.ToString(CultureInfo.CurrentCulture.NumberFormat);
     }
Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/DoubleValue.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/DoubleValue.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/DoubleValue.cs	(revision 13550)
@@ -31,5 +31,5 @@
     }
 
-    public override string ToString() {
+    public override string GetValue() {
       return Value.ToString(CultureInfo.CurrentCulture.NumberFormat);
     }
Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/FloatValue.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/FloatValue.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/FloatValue.cs	(revision 13550)
@@ -31,5 +31,5 @@
     }
 
-    public override string ToString() {
+    public override string GetValue() {
       return Value.ToString(CultureInfo.CurrentCulture.NumberFormat);
     }
Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/IntValue.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/IntValue.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/IntValue.cs	(revision 13550)
@@ -31,5 +31,5 @@
     }
 
-    public override string ToString() {
+    public override string GetValue() {
       return Value.ToString(CultureInfo.CurrentCulture.NumberFormat);
     }
Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/LongValue.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/LongValue.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/LongValue.cs	(revision 13550)
@@ -31,5 +31,5 @@
     }
 
-    public override string ToString() {
+    public override string GetValue() {
       return Value.ToString(CultureInfo.CurrentCulture.NumberFormat);
     }
Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/PercentValue.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/PercentValue.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/PercentValue.cs	(revision 13550)
@@ -31,6 +31,6 @@
     }
 
-    public override string ToString() {
-      return (100 * Value).ToString(CultureInfo.CurrentCulture.NumberFormat) + "%";
+    public override string GetValue() {
+      return Value.ToString(CultureInfo.CurrentCulture.NumberFormat);
     }
   }
Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/StringValue.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/StringValue.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/StringValue.cs	(revision 13550)
@@ -30,5 +30,5 @@
     }
 
-    public override string ToString() {
+    public override string GetValue() {
       return Value;
     }
Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/TimeSpanValue.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/TimeSpanValue.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/TimeSpanValue.cs	(revision 13550)
@@ -31,6 +31,6 @@
     }
 
-    public override string ToString() {
-      return Value.ToString(CultureInfo.CurrentCulture.DateTimeFormat);
+    public override string GetValue() {
+      return Value.ToString(CultureInfo.CurrentCulture.NumberFormat);
     }
   }
Index: trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/Value.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/Value.cs	(revision 13534)
+++ trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/ServiceClient/Value.cs	(revision 13550)
@@ -26,4 +26,8 @@
 namespace HeuristicLab.Clients.OKB.RunCreation {
   public partial class Value {
+    public virtual string GetValue() {
+      return string.Empty;
+    }
+
     public static Value Create(string name, string strValue, string type) {
       switch (type) {
