Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/MenuItems/ImportJsonTemplateMenuItem.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/MenuItems/ImportJsonTemplateMenuItem.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/MenuItems/ImportJsonTemplateMenuItem.cs	(revision 17342)
@@ -20,5 +20,4 @@
     }
 
-
     public override void Execute() {
       FileManager.ImportJsonTemplate();
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs	(revision 17342)
@@ -10,5 +10,5 @@
     public override void InjectData(IParameter parameter, JsonItem data) {
       foreach (var x in parameter.Cast<dynamic>().ValidValues)
-        if (x.GetType().Name == CastValue<string>(data.Default))
+        if (x.GetType().Name == CastValue<string>(data.Value))
           parameter.ActualValue = x;
 
@@ -20,5 +20,5 @@
       new JsonItem() {
         Name = value.Name,
-        Default = value.ActualValue?.GetType().Name,
+        Value = value.ActualValue?.GetType().Name,
         Range = GetValidValues(value),
         Parameters = GetParameterizedChilds(value)
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/DummyConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/DummyConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/DummyConverter.cs	(revision 17342)
@@ -14,5 +14,5 @@
 
     public override JsonItem ExtractData(IItem value) => 
-      new JsonItem() { Default = value.GetType().Name };
+      new JsonItem() { Value = value.GetType().Name };
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs	(revision 17342)
@@ -12,5 +12,5 @@
       item.Cast<dynamic>().Value = Enum.Parse(
         item.GetType().GenericTypeArguments.First(), 
-        CastValue<string>(data.Default));
+        CastValue<string>(data.Value));
 
     public override JsonItem ExtractData(IItem value) {
@@ -18,5 +18,5 @@
       object val = ((dynamic)value).Value;
       Type enumType = val.GetType();
-      data.Default = Enum.GetName(enumType, val);
+      data.Value = Enum.GetName(enumType, val);
       data.Range = Enum.GetNames(enumType);
       return data;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs	(revision 17342)
@@ -11,10 +11,9 @@
       new JsonItem() { 
         Name = value.Name,
-        Default = value.Cast<ILookupParameter>().ActualName
+        ActualName = value.Cast<ILookupParameter>().ActualName
       };
 
     public override void InjectData(IParameter parameter, JsonItem data) =>
-      parameter.Cast<ILookupParameter>().ActualName = data.Default.Cast<string>();
-    
+      parameter.Cast<ILookupParameter>().ActualName = data.ActualName.Cast<string>();
   }
 }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs	(revision 17342)
@@ -11,5 +11,5 @@
       JsonItem data = base.ExtractData(value);
 
-      data.Default = value.GetType().Name;
+      data.Value = value.GetType().Name;
       data.Operators = new List<JsonItem>();
       dynamic val = value.Cast<dynamic>();
@@ -17,5 +17,5 @@
         data.Operators.Add(new JsonItem() {
           Name = op.Name,
-          Default = val.Operators.ItemChecked(op),
+          Value = val.Operators.ItemChecked(op),
           Range = new object[] { false, true },
           Path = data.Path + "." + op.Name
@@ -35,5 +35,5 @@
     private bool GetOperatorState(string name, JsonItem data) {
       foreach(var op in data.Operators) {
-        if (op.Name == name) return op.Default.Cast<bool>();
+        if (op.Name == name) return op.Value.Cast<bool>();
       }
       return false;
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs	(revision 17342)
@@ -10,9 +10,9 @@
   public class StringValueConverter : BaseConverter {
     public override void InjectData(IItem item, JsonItem data) =>
-      item.Cast<StringValue>().Value = CastValue<string>(data.Default);
+      item.Cast<StringValue>().Value = CastValue<string>(data.Value);
 
     public override JsonItem ExtractData(IItem value) => 
       new JsonItem() {
-        Default = value.Cast<StringValue>().Value
+        Value = value.Cast<StringValue>().Value
       };
   }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs	(revision 17342)
@@ -10,8 +10,16 @@
     public override JsonItem ExtractData(IParameter value) {
       IValueLookupParameter param = value.Cast<IValueLookupParameter>();
+      object actualValue = null;
+      IList<object> actualRange = null;
+      if(param.Value != null) {
+        JsonItem tmp = JsonItemConverter.Extract(param.Value);
+        actualValue = tmp.Value;
+        actualRange = tmp.Range;
+      }
       return new JsonItem() {
         Name = value.Name,
-        Default = param.ActualName,
-        Reference = param.Value != null ? JsonItemConverter.Extract(param.Value) : null
+        ActualName = param.ActualName,
+        Value = actualValue,
+        Range = actualRange
       };
     }
@@ -19,7 +27,7 @@
     public override void InjectData(IParameter parameter, JsonItem data) {
       IValueLookupParameter param = parameter.Cast<IValueLookupParameter>();
-      param.ActualName = CastValue<string>(data.Default);
-      if (param.Value != null && data.Reference != null)
-        JsonItemConverter.Inject(param.Value, data.Reference);
+      param.ActualName = CastValue<string>(data.ActualName);
+      if (param.Value != null)
+        JsonItemConverter.Inject(param.Value, data);
     }
   }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs	(revision 17342)
@@ -9,6 +9,9 @@
   public class ValueParameterConverter : ParameterBaseConverter {
 
-    public override void InjectData(IParameter parameter, JsonItem data) => 
+    public override void InjectData(IParameter parameter, JsonItem data) {
+      if (parameter.ActualValue == null && data.Value != null)
+        parameter.ActualValue = Instantiate(parameter.DataType);
       JsonItemConverter.Inject(parameter.ActualValue, data);
+    }
 
     public override JsonItem ExtractData(IParameter value) {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs	(revision 17342)
@@ -14,9 +14,9 @@
   {
     public override void InjectData(IItem item, JsonItem data) => 
-      CopyArrayData(item.Cast<ArrayType>(), CastValue<T[]>(data.Default));
+      CopyArrayData(item.Cast<ArrayType>(), CastValue<T[]>(data.Value));
 
     public override JsonItem ExtractData(IItem value) => 
       new JsonItem() {
-        Default = value.Cast<ArrayType>().CloneAsArray()
+        Value = value.Cast<ArrayType>().CloneAsArray()
       };
 
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs	(revision 17342)
@@ -14,13 +14,18 @@
   {
     public override void InjectData(IItem item, JsonItem data) => 
-      CopyMatrixData(item.Cast<MatrixType>(), CastValue<T[,]>(data.Default));
+      CopyMatrixData(item.Cast<MatrixType>(), CastValue<T[,]>(data.Value));
 
     public override JsonItem ExtractData(IItem value) =>
       new JsonItem() {
-        Default = value.Cast<MatrixType>().CloneAsMatrix()
+        Value = value.Cast<MatrixType>().CloneAsMatrix()
       };
 
     #region Helper
     private void CopyMatrixData(MatrixType matrix, T[,] data) {
+      var rowInfo = matrix.GetType().GetProperty("Rows");
+      rowInfo.SetValue(matrix, data.GetLength(0));
+      var colInfo = matrix.GetType().GetProperty("Columns");
+      colInfo.SetValue(matrix, data.GetLength(1));
+      //matrix.Cast<dynamic>().Columns = data.GetLength(1);
       for (int x = 0; x < data.GetLength(0); ++x) {
         for (int y = 0; y < data.GetLength(1); ++y) {
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs	(revision 17342)
@@ -13,9 +13,9 @@
 
     public override void InjectData(IItem item, JsonItem data) =>
-      item.Cast<ValueType>().Value = CastValue<T>(data.Default);
+      item.Cast<ValueType>().Value = CastValue<T>(data.Value);
 
     public override JsonItem ExtractData(IItem value) => 
       new JsonItem() {
-        Default = value.Cast<ValueType>().Value,
+        Value = value.Cast<ValueType>().Value,
         Range = new object[] { GetMinValue(), GetMaxValue() }
       };
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/CustomJsonWriter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/CustomJsonWriter.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/CustomJsonWriter.cs	(revision 17342)
@@ -15,5 +15,5 @@
       base.Formatting = Formatting.Indented;
       base.WritePropertyName(name);
-      isRangeArray = name == "Range" || name == "Default";
+      isRangeArray = name == nameof(JsonItem.Range) || name == nameof(JsonItem.Value);
     }
 
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs	(revision 17342)
@@ -59,5 +59,5 @@
       RefactorStaticParameters(obj);
 
-      obj.Property(nameof(JsonItem.Default))?.Remove();
+      obj.Property(nameof(JsonItem.Value))?.Remove();
       obj.Property(nameof(JsonItem.Type))?.Remove();
 
@@ -70,5 +70,5 @@
       TransformNodes(x => {
         var p = x.ToObject<JsonItem>();
-        if (p.Default == null || (p.Default != null && p.Default.GetType() == typeof(string) && p.Range == null)) {
+        if ((p.Value == null || (p.Value != null && p.Value.GetType() == typeof(string) && p.Range == null) && p.ActualName == null)) {
           objToRemove.Add(x);
         } else {
@@ -88,5 +88,5 @@
         x.Property(nameof(JsonItem.Parameters))?.Remove();
         x.Property(nameof(JsonItem.Type))?.Remove();
-        if (p.Default == null) objToRemove.Add(x);
+        if (p.Value == null) objToRemove.Add(x);
       }, token[Constants.StaticParameters]);
       foreach (var x in objToRemove) x.Remove();
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCInstantiator.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCInstantiator.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCInstantiator.cs	(revision 17342)
@@ -91,8 +91,8 @@
       foreach(var x in ParameterizedItems.Values)
         foreach (var p in x.Parameters)
-          if (p.Default is string) {
+          if (p.Value is string) {
             string key = p.Path;
             if (p.Range != null)
-              key = $"{p.Path}.{p.Default.Cast<string>()}";
+              key = $"{p.Path}.{p.Value.Cast<string>()}";
 
             if (ParameterizedItems.TryGetValue(key, out JsonItem value))
@@ -107,8 +107,8 @@
         // override default value
         if (ConfigurableItems.TryGetValue(item.Path, out JsonItem param)) {
-          param.Default = item.Default;
-          // override default value of reference (for ValueLookupParameters)
-          if (param.Reference != null)
-            param.Reference.Default = item.Reference?.Default;
+          param.Value = item.Value;
+          // override ActualName (for LookupParameters)
+          if (param.ActualName != null)
+            param.ActualName = item.ActualName;
         } else throw new InvalidDataException($"No {Constants.FreeParameters.Trim('s')} with path='{item.Path}' defined!");
       }
@@ -135,10 +135,8 @@
         Name = obj[nameof(JsonItem.Name)]?.ToString(),
         Path = obj[nameof(JsonItem.Path)]?.ToString(),
-        Default = obj[nameof(JsonItem.Default)]?.ToObject<object>(),
+        Value = obj[nameof(JsonItem.Value)]?.ToObject<object>(),
         Range = obj[nameof(JsonItem.Range)]?.ToObject<object[]>(),
         Type = GetType(obj[nameof(JsonItem.Path)]?.ToObject<string>()),
-        Reference = obj[nameof(JsonItem.Type)] == null ? 
-                    null : 
-                    BuildJsonItem(obj[nameof(JsonItem.Type)].ToObject<JObject>()),
+        ActualName = obj[nameof(JsonItem.ActualName)]?.ToString(),
         Parameters = PopulateParameters(obj),
         Operators = PopulateOperators(obj)
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItem.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItem.cs	(revision 17341)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItem.cs	(revision 17342)
@@ -25,9 +25,9 @@
     public IList<JsonItem> Operators { get; set; }
 
-    private object defaultValue;
-    public object Default {
-      get => defaultValue; 
+    private object value;
+    public object Value {
+      get => value; 
       set {
-        defaultValue = value;
+        this.value = value;
         if(Range != null && value != null && !FulfillConstraints())
           throw new ArgumentOutOfRangeException("Default", "Default is not in range.");
@@ -40,13 +40,16 @@
       set {
         range = value;
-        if (Default != null && value != null && !FulfillConstraints())
+        if (Value != null && value != null && !FulfillConstraints())
           throw new ArgumentOutOfRangeException("Default", "Default is not in range.");
       } 
     }
-        
+    
+    public string ActualName { get; set; }
+
+    [JsonIgnore]
     public JsonItem Reference { get; set; }
 
     [JsonIgnore]
-    public bool IsConfigurable => (Default != null && Range != null);
+    public bool IsConfigurable => (Value != null && Range != null);
 
     public static void Merge(JsonItem target, JsonItem from) {
@@ -55,6 +58,7 @@
       target.Range = from.Range ?? target.Range;
       target.Path = from.Path ?? target.Path;
-      target.Default = from.Default ?? target.Default;
+      target.Value = from.Value ?? target.Value;
       target.Reference = from.Reference ?? target.Reference;
+      target.ActualName = from.ActualName ?? target.ActualName;
       target.Parameters = from.Parameters ?? target.Parameters;
       target.Operators = from.Operators ?? target.Operators;
@@ -64,12 +68,12 @@
 
     public static bool FulfillConstraints(JsonItem data) =>
-      data.Range != null && data.Default != null && (
-      IsInRangeList(data.Range, data.Default) ||
-      IsInNumericRange<long>(data.Default, data.Range[0], data.Range[1]) ||
-      IsInNumericRange<int>(data.Default, data.Range[0], data.Range[1]) ||
-      IsInNumericRange<short>(data.Default, data.Range[0], data.Range[1]) ||
-      IsInNumericRange<byte>(data.Default, data.Range[0], data.Range[1]) ||
-      IsInNumericRange<float>(data.Default, data.Range[0], data.Range[1]) ||
-      IsInNumericRange<double>(data.Default, data.Range[0], data.Range[1]));
+      data.Range != null && data.Value != null && (
+      IsInRangeList(data.Range, data.Value) ||
+      IsInNumericRange<long>(data.Value, data.Range[0], data.Range[1]) ||
+      IsInNumericRange<int>(data.Value, data.Range[0], data.Range[1]) ||
+      IsInNumericRange<short>(data.Value, data.Range[0], data.Range[1]) ||
+      IsInNumericRange<byte>(data.Value, data.Range[0], data.Range[1]) ||
+      IsInNumericRange<float>(data.Value, data.Range[0], data.Range[1]) ||
+      IsInNumericRange<double>(data.Value, data.Range[0], data.Range[1]));
 
     public void UpdatePath() {
