Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs	(revision 18077)
@@ -15,5 +15,5 @@
       IParameter parameter = item as IParameter;
       foreach (var x in GetValidValues(parameter))
-        if(x.ToString() == cdata.Value)
+        if(x.ToString() == cdata.Value && cdata.Active)
           parameter.ActualValue = x;
 
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs	(revision 18077)
@@ -13,7 +13,9 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      ((dynamic)item).Value = (dynamic)Enum.Parse(
-        item.GetType().GenericTypeArguments.First(),
-        ((StringJsonItem)data).Value);
+      if(data.Active) { 
+        ((dynamic)item).Value = (dynamic)Enum.Parse(
+          item.GetType().GenericTypeArguments.First(),
+          ((StringJsonItem)data).Value);
+      }
     }
       
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ExperimentConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ExperimentConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ExperimentConverter.cs	(revision 18077)
@@ -42,5 +42,5 @@
       if (data.Children != null) {
         foreach (var i in data.Children) {
-          if (i.Path.EndsWith("NumberOfWorkers") && i is IntJsonItem worker) {
+          if (i.Path.EndsWith("NumberOfWorkers") && i is IntJsonItem worker && i.Active) {
             experiment.NumberOfWorkers = worker.Value;
           } else {
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ItemCollectionConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ItemCollectionConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ItemCollectionConverter.cs	(revision 18077)
@@ -40,6 +40,9 @@
       foreach (var i in listItem.Value) {
         var tmp = Instantiate(genericType);
-        root.Inject(tmp, i, root);
-        collection.Add((dynamic)tmp);
+        if (data.Active) {
+          i.Active = true;
+          root.Inject(tmp, i, root);
+          collection.Add((dynamic)tmp);
+        }
       }
     }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs	(revision 18077)
@@ -10,6 +10,9 @@
       t.GetInterfaces().Any(x => x == typeof(ILookupParameter));
 
-    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
-      ((ILookupParameter)item).ActualName = ((ILookupJsonItem)data).ActualName as string;
+    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
+      if(data.Active)
+        ((ILookupParameter)item).ActualName = ((ILookupJsonItem)data).ActualName as string;
+    }
+      
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs	(revision 18077)
@@ -17,5 +17,5 @@
         IJsonItem childItem = GetChildItem(op.Name, data);
         if(childItem != null) {
-          if(childItem is BoolJsonItem boolJsonItem) {
+          if(childItem is BoolJsonItem boolJsonItem && childItem.Active) {
             val.Operators.SetItemCheckedState(op, boolJsonItem.Value);
           }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs	(revision 18077)
@@ -22,41 +22,59 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
+      if (data.Children.All(x => !x.Active))
+        return;
+
       var parameter = item as ValueParameter<IRegressionProblemData>;
 
-      DoubleMatrixJsonItem dataset = null;
-      StringJsonItem targetVariable = null;
-      IntRangeJsonItem testPartition = null;
-      IntRangeJsonItem trainingPartition = null;
-      StringArrayJsonItem allowedInputVariables = null;
+      DoubleMatrixJsonItem datasetItem = null;
+      StringJsonItem targetVariableItem = null;
+      IntRangeJsonItem testPartitionItem = null;
+      IntRangeJsonItem trainingPartitionItem = null;
+      StringArrayJsonItem allowedInputVariablesItem = null;
 
       // get all child items
       foreach (var child in data.Children) {
+        if (!child.Active)
+          continue;
+
         if (child.Path.EndsWith(Dataset))
-          dataset = child as DoubleMatrixJsonItem;
+          datasetItem = child as DoubleMatrixJsonItem;
         else if (child.Path.EndsWith(TargetVariable))
-          targetVariable = child as StringJsonItem;
+          targetVariableItem = child as StringJsonItem;
         else if (child.Path.EndsWith(TestPartition))
-          testPartition = child as IntRangeJsonItem;
+          testPartitionItem = child as IntRangeJsonItem;
         else if (child.Path.EndsWith(TrainingPartition))
-          trainingPartition = child as IntRangeJsonItem;
+          trainingPartitionItem = child as IntRangeJsonItem;
         else if (child.Path.EndsWith(AllowedInputVariables))
-          allowedInputVariables = child as StringArrayJsonItem;
+          allowedInputVariablesItem = child as StringArrayJsonItem;
       }
 
       // check data
-      if(!dataset.ColumnNames.Any(x => x == targetVariable.Value)) {
-        throw new Exception($"The value of the target variable ('{targetVariable.Value}') has no matching row name value of the dataset.");
+      if(!datasetItem.ColumnNames.Any(x => x == targetVariableItem.Value)) {
+        throw new Exception($"The value of the target variable ('{targetVariableItem.Value}') has no matching row name value of the dataset.");
       }
 
-      foreach(var v in allowedInputVariables.Value) {
-        if(!dataset.ColumnNames.Any(x => x == v))
+      foreach(var v in allowedInputVariablesItem.Value) {
+        if(!datasetItem.ColumnNames.Any(x => x == v))
           throw new Exception($"The value of the input variable ('{v}') has no matching row name value of the dataset.");
       }
 
       // create the new problemData object
+      var dataset = datasetItem == null ? 
+        parameter.Value.Dataset : 
+        new Dataset(datasetItem.ColumnNames, datasetItem.Value);
+
+      var allowedInputVariables = allowedInputVariablesItem == null ? 
+        parameter.Value.AllowedInputVariables : 
+        allowedInputVariablesItem.Value;
+
+      var targetVariable = targetVariableItem == null ?
+        parameter.Value.TargetVariable :
+        targetVariableItem.Value;
+
       var problemData = new RegressionProblemData(
-        new Dataset(dataset.ColumnNames, dataset.Value), 
-        allowedInputVariables.Value, 
-        targetVariable.Value);
+        dataset,
+        allowedInputVariables,
+        targetVariable);
 
       // set the new problemData
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs	(revision 18077)
@@ -10,6 +10,9 @@
       typeof(StringValue).IsAssignableFrom(t);
 
-    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
-      ((StringValue)item).Value = ((StringJsonItem)data).Value;
+    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
+      if(data.Active)
+        ((StringValue)item).Value = ((StringJsonItem)data).Value;
+    }
+      
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs	(revision 18077)
@@ -13,5 +13,6 @@
       IValueLookupParameter param = item as IValueLookupParameter;
       IValueLookupJsonItem lookupItem = data as IValueLookupJsonItem;
-      param.ActualName = lookupItem.ActualName;
+      if(data.Active)
+        param.ActualName = lookupItem.ActualName;
       if (param.Value != null && lookupItem.ActualValue != null)
         root.Inject(param.Value, lookupItem.ActualValue, root);
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs	(revision 18077)
@@ -13,5 +13,5 @@
       IParameter parameter = value as IParameter;
 
-      if (parameter.ActualValue == null)
+      if (parameter.ActualValue == null && data.Active)
         parameter.ActualValue = Instantiate(parameter.DataType);
       root.Inject(parameter.ActualValue, data, root);
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs	(revision 18077)
@@ -14,6 +14,8 @@
       IntRange range = item as IntRange;
       IntRangeJsonItem cdata = data as IntRangeJsonItem;
-      range.Start = cdata.MinValue;
-      range.End = cdata.MaxValue;
+      if(data.Active) {
+        range.Start = cdata.MinValue;
+        range.End = cdata.MaxValue;
+      }
     }
 
@@ -40,6 +42,8 @@
       DoubleRange range = item as DoubleRange;
       DoubleRangeJsonItem cdata = data as DoubleRangeJsonItem;
-      range.Start = cdata.MinValue;
-      range.End = cdata.MaxValue;
+      if (data.Active) {
+        range.Start = cdata.MinValue;
+        range.End = cdata.MaxValue;
+      }
     }
 
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs	(revision 18077)
@@ -12,12 +12,14 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      IntArray arr = item as IntArray;
-      IntArrayJsonItem intArrayItem = data as IntArrayJsonItem;
-      bool resizeTmp = arr.Resizable;
-      arr.Resizable = true;
-      arr.Length = intArrayItem.Value.Length;
-      for (int i = 0; i < intArrayItem.Value.Length; ++i)
-        arr[i] = intArrayItem.Value[i];
-      arr.Resizable = resizeTmp;
+      if(data.Active) {
+        IntArray arr = item as IntArray;
+        IntArrayJsonItem intArrayItem = data as IntArrayJsonItem;
+        bool resizeTmp = arr.Resizable;
+        arr.Resizable = true;
+        arr.Length = intArrayItem.Value.Length;
+        for (int i = 0; i < intArrayItem.Value.Length; ++i)
+          arr[i] = intArrayItem.Value[i];
+        arr.Resizable = resizeTmp;
+      }
     }
 
@@ -39,12 +41,14 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      DoubleArray arr = item as DoubleArray;
-      DoubleArrayJsonItem doubleArrayItem = data as DoubleArrayJsonItem;
-      bool resizeTmp = arr.Resizable;
-      arr.Resizable = true;
-      arr.Length = doubleArrayItem.Value.Length;
-      for (int i = 0; i < doubleArrayItem.Value.Length; ++i)
-        arr[i] = doubleArrayItem.Value[i];
-      arr.Resizable = resizeTmp;
+      if(data.Active) {
+        DoubleArray arr = item as DoubleArray;
+        DoubleArrayJsonItem doubleArrayItem = data as DoubleArrayJsonItem;
+        bool resizeTmp = arr.Resizable;
+        arr.Resizable = true;
+        arr.Length = doubleArrayItem.Value.Length;
+        for (int i = 0; i < doubleArrayItem.Value.Length; ++i)
+          arr[i] = doubleArrayItem.Value[i];
+        arr.Resizable = resizeTmp;
+      }
     }
 
@@ -66,12 +70,14 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      PercentArray arr = item as PercentArray;
-      DoubleArrayJsonItem doubleArrayItem = data as DoubleArrayJsonItem;
-      bool resizeTmp = arr.Resizable;
-      arr.Resizable = true;
-      arr.Length = doubleArrayItem.Value.Length;
-      for (int i = 0; i < doubleArrayItem.Value.Length; ++i)
-        arr[i] = doubleArrayItem.Value[i];
-      arr.Resizable = resizeTmp;
+      if(data.Active) {
+        PercentArray arr = item as PercentArray;
+        DoubleArrayJsonItem doubleArrayItem = data as DoubleArrayJsonItem;
+        bool resizeTmp = arr.Resizable;
+        arr.Resizable = true;
+        arr.Length = doubleArrayItem.Value.Length;
+        for (int i = 0; i < doubleArrayItem.Value.Length; ++i)
+          arr[i] = doubleArrayItem.Value[i];
+        arr.Resizable = resizeTmp;
+      }
     }
 
@@ -93,12 +99,14 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      BoolArray arr = item as BoolArray;
-      BoolArrayJsonItem boolArrayItem = data as BoolArrayJsonItem;
-      bool resizeTmp = arr.Resizable;
-      arr.Resizable = true;
-      arr.Length = boolArrayItem.Value.Length;
-      for(int i = 0; i < boolArrayItem.Value.Length; ++i)
-        arr[i] = boolArrayItem.Value[i];
-      arr.Resizable = resizeTmp;
+      if(data.Active) {
+        BoolArray arr = item as BoolArray;
+        BoolArrayJsonItem boolArrayItem = data as BoolArrayJsonItem;
+        bool resizeTmp = arr.Resizable;
+        arr.Resizable = true;
+        arr.Length = boolArrayItem.Value.Length;
+        for (int i = 0; i < boolArrayItem.Value.Length; ++i)
+          arr[i] = boolArrayItem.Value[i];
+        arr.Resizable = resizeTmp;
+      }
     }
 
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs	(revision 18077)
@@ -9,7 +9,9 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      IntMatrix mat = item as IntMatrix;
-      IntMatrixJsonItem d = data as IntMatrixJsonItem;
-      CopyMatrixData(mat, d.Value);
+      if(data.Active) {
+        IntMatrix mat = item as IntMatrix;
+        IntMatrixJsonItem d = data as IntMatrixJsonItem;
+        CopyMatrixData(mat, d.Value);
+      }
     }
 
@@ -28,7 +30,9 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      DoubleMatrix mat = item as DoubleMatrix;
-      DoubleMatrixJsonItem d = data as DoubleMatrixJsonItem;
-      CopyMatrixData(mat, d.Value);
+      if(data.Active) {
+        DoubleMatrix mat = item as DoubleMatrix;
+        DoubleMatrixJsonItem d = data as DoubleMatrixJsonItem;
+        CopyMatrixData(mat, d.Value);
+      }
     }
 
@@ -49,7 +53,9 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      PercentMatrix mat = item as PercentMatrix;
-      DoubleMatrixJsonItem d = data as DoubleMatrixJsonItem;
-      CopyMatrixData(mat, d.Value);
+      if(data.Active) {
+        PercentMatrix mat = item as PercentMatrix;
+        DoubleMatrixJsonItem d = data as DoubleMatrixJsonItem;
+        CopyMatrixData(mat, d.Value);
+      }
     }
 
@@ -68,7 +74,9 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      BoolMatrix mat = item as BoolMatrix;
-      BoolMatrixJsonItem d = data as BoolMatrixJsonItem;
-      CopyMatrixData(mat, d.Value);
+      if(data.Active) {
+        BoolMatrix mat = item as BoolMatrix;
+        BoolMatrixJsonItem d = data as BoolMatrixJsonItem;
+        CopyMatrixData(mat, d.Value);
+      }
     }
 
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs	(revision 18077)
@@ -11,6 +11,9 @@
       typeof(IntValue).IsAssignableFrom(t);
 
-    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
-      ((IntValue)item).Value = ((IntJsonItem)data).Value;
+    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
+      if(data.Active)
+        ((IntValue)item).Value = ((IntJsonItem)data).Value;
+    }
+      
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
@@ -30,6 +33,8 @@
       typeof(DoubleValue).IsAssignableFrom(t);
 
-    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
-      ((DoubleValue)item).Value = ((DoubleJsonItem)data).Value;
+    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
+      if (data.Active)
+        ((DoubleValue)item).Value = ((DoubleJsonItem)data).Value;
+    }
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
@@ -49,6 +54,8 @@
       typeof(PercentValue).IsAssignableFrom(t);
 
-    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
-      ((PercentValue)item).Value = ((DoubleJsonItem)data).Value;
+    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
+      if (data.Active)
+        ((PercentValue)item).Value = ((DoubleJsonItem)data).Value;
+    }
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
@@ -68,6 +75,8 @@
       typeof(BoolValue).IsAssignableFrom(t);
 
-    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
-      ((BoolValue)item).Value = ((BoolJsonItem)data).Value;
+    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
+      if (data.Active)
+        ((BoolValue)item).Value = ((BoolJsonItem)data).Value;
+    }
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
@@ -85,6 +94,8 @@
       typeof(DateTimeValue).IsAssignableFrom(t);
 
-    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
-      ((DateTimeValue)item).Value = ((DateTimeJsonItem)data).Value;
+    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
+      if (data.Active)
+        ((DateTimeValue)item).Value = ((DateTimeJsonItem)data).Value;
+    }
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItemConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItemConverter.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItemConverter.cs	(revision 18077)
@@ -53,5 +53,5 @@
       if (item != null && !InjectCache.ContainsKey(item.GetHashCode())) {
         IJsonItemConverter converter = GetConverter(item.GetType());
-        if(converter != null) converter.Inject(item, data, root);
+        if (converter != null) converter.Inject(item, data, root);
         InjectCache.Add(item.GetHashCode(), data);
       }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItems/ConcreteRestrictedArrayJsonItem.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItems/ConcreteRestrictedArrayJsonItem.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItems/ConcreteRestrictedArrayJsonItem.cs	(revision 18077)
@@ -2,4 +2,5 @@
 using System.Linq;
 using HEAL.Attic;
+using Newtonsoft.Json.Linq;
 
 namespace HeuristicLab.JsonInterface {
@@ -28,4 +29,11 @@
     }
 
+    public override void SetJObject(JObject jObject) {
+      base.SetJObject(jObject);
+      ConcreteRestrictedItems =
+        (jObject[nameof(IConcreteRestrictedJsonItem<T>.ConcreteRestrictedItems)]?
+        .ToObject<IEnumerable<T>>());
+    }
+
     public ConcreteRestrictedArrayJsonItem() { }
 
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItems/ConcreteRestrictedValueJsonItem.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItems/ConcreteRestrictedValueJsonItem.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItems/ConcreteRestrictedValueJsonItem.cs	(revision 18077)
@@ -2,4 +2,5 @@
 using System.Linq;
 using HEAL.Attic;
+using Newtonsoft.Json.Linq;
 
 namespace HeuristicLab.JsonInterface {
@@ -18,4 +19,11 @@
     }
 
+    public override void SetJObject(JObject jObject) {
+      base.SetJObject(jObject);
+      ConcreteRestrictedItems =
+        (jObject[nameof(IConcreteRestrictedJsonItem<T>.ConcreteRestrictedItems)]?
+        .ToObject<IEnumerable<T>>());
+    }
+
     public ConcreteRestrictedValueJsonItem() { }
 
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs	(revision 18076)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs	(revision 18077)
@@ -107,10 +107,5 @@
         var rcModifierItem = JsonItemConverter.Extract(rcModifier);
 
-        foreach (JObject param in parameters) {
-          var path = param[nameof(IJsonItem.Path)].ToString();
-          foreach (var item in rcModifierItem)
-            if (item.Path == path)
-              item.SetJObject(param);
-        }
+        SetJObjects(rcModifierItem, parameters);        
 
         JsonItemConverter.Inject(rcModifier, rcModifierItem);
@@ -124,15 +119,23 @@
       Objects.Add(root.Path, root);
 
-      foreach (JObject obj in Template[Constants.Parameters]) {
-        string path = obj.Property(nameof(IJsonItem.Path)).Value.ToString();
-        foreach(var tmp in root) {
-          if(tmp.Path == path) {
-            tmp.SetJObject(obj);
-            Objects.Add(tmp.Path, tmp);
+      foreach (var kvp in SetJObjects(root, Template[Constants.Parameters]))
+        Objects.Add(kvp);
+    }
+
+    private IDictionary<string, IJsonItem> SetJObjects(IJsonItem root, JToken parameters) {
+      var dict = new Dictionary<string, IJsonItem>();
+      foreach (JObject obj in parameters) {
+        var path = obj[nameof(IJsonItem.Path)].ToString();
+        foreach (var item in root) {
+          if (item.Path == path) {
+            item.SetJObject(obj);
+            item.Active = true;
+            dict.Add(item.Path, item);
           }
         }
       }
+      return dict;
     }
-    
+
     private void MergeTemplateWithConfig() {
       foreach (JObject obj in Config) {
Index: branches/3026_IntegrationIntoSymSpace/JsonInterface_DockerHub_Readme.md
===================================================================
--- branches/3026_IntegrationIntoSymSpace/JsonInterface_DockerHub_Readme.md	(revision 18077)
+++ branches/3026_IntegrationIntoSymSpace/JsonInterface_DockerHub_Readme.md	(revision 18077)
@@ -0,0 +1,124 @@
+# HeuristicLab JSON Command Line Interface (HL JSON CLI)
+The HeuristicLab JSON command line interface is a new type of application for HeuristicLab. The intended use is the execution of configurable tasks on a command line interface (CLI). We use JSON files to define such tasks. 
+
+---
+## Supported tags and respective `Dockerfile` links
+* `latest`
+
+---
+## Quick reference
+* Maintained by: [HEAL](https://heal.heuristiclab.com)
+* Download and Documentation of the standalone version: [HeuristicLab](https://dev.heuristiclab.com)
+* Build on top of: [mono](https://hub.docker.com/_/mono)
+
+<!--## What is HeuristicLab?-->
+
+---
+## Usage
+<b>Step - 1:</b> Prepare your [template](#create-a-template) and [configuration](#create-a-configuration) file.
+
+<b>Step - 2:</b> Run the container with the following command: 
+```
+docker run --rm -it -v <path-to-template-and-config-files>:/files healresearch/heuristiclab-json-cli:latest /files/<template>.json /files/<config>.json /files/<out>.json
+```
+* Replace `<path-to-template-and-config-files>` with the path of the folder which contains the template (with the linked .hl-file) and configuration files.
+* Replace `<template>` with your template JSON file.
+* Replace `<config>` with your configuration JSON file.
+* Replace `<out>` with a desired output JSON file (this file is overwritten if it already exists).
+
+This command starts the execution of the template file with the desired configuration, and saves the generated results into the `<out>.json` file.
+
+<b>NOTE:</b> The algorithm saves the results of finished runs continuously, this can cause the creation of output files while the algorithm is still running.
+
+---
+## <a name="create-a-template"></a>Create a template
+<b>Step - 1</b> Checkout the [SVN branch](https://src.heuristiclab.com/svn/core/branches/3026_IntegrationIntoSymSpace) and build the solution files `HeuristicLab.ExtLibs.sln` and `HeuristicLab 3.3.sln`. After the build process, the binaries are located in the folder `bin`.
+
+<b>Step - 2:</b> Start HeuristicLab with the application `Optimizer` and configure the desired problem/algorithm combination.
+
+<b>Step - 3:</b> Start the algorithm and let it run until it generated all types of results. The results are located in the tab `Results`, typically it is sufficient to let the algorithm finish one generation/iteration.
+
+<b>Step - 4:</b> Navigate to: _File_ -> _Export_ -> _Json-Template_ to open the JSON template export dialog.
+
+<b>Step - 5:</b> The first tab `Parameters` lists every configurable parameter. Each selected parameter is saved in the template and is dynamically changeable with a configuration later on. All other (unselected) parameters are fixed and cannot be modified with a configuration file.
+
+<b>Step - 6:</b> The second tab `Results` lists all possible results. Select all types of results which are required for the output.
+
+<b>Step - 7:</b> Set a name for the template and save it to the desired destination. This generates two files (e.g. `Template.json` and `Template.hl`), both of them represent the template. It is possible to move those files into different folders, but you need to adapt the property `HLFileLocation` in the JSON file.
+<!--
+1. start HeuristicLab and configure your desired problem with the application `Optimizer`
+2. start the algorithm and let it run until it generated all types of results (you can see the results in the tab âResultsâ, typically it is sufficient to let the algorithm finish one generation/iteration)
+3. go to: File -> Export -> Json-Template (this opens a new dialog window)
+5. select every parameter you wish to configure dynamically with the CLI (everything else is a fixed parameter and cannot be changed with a configuration file)
+6. select every result type you need (tab `Results` in the `Export Json` window)
+7. set a name for the template
+8. click export and save it to your desired destination
+9. it generates two files (for example: `Template.json` and `Template.hl`), both of them represent the template; you can move those files, but you need to adapt the property `HLFileLocation` contained in the JSON file
+-->
+
+---
+## <a name="create-a-configuration"></a>Create a configuration
+<b>Step - 1:</b> Create a new JSON file, e.g. `Config.json`.
+
+<b>Step - 2:</b> The content of `Config.json` is an array of JSON objects. Copy all desired `Parameters` of the template JSON file into your configuration file and adapt the values to fit your needs. The following code shows an exemplary content of `Config.json`: 
+```json 
+[
+  {
+    "Value": 250,
+    "Name": "PopulationSize",
+    "Description": "The size of the population of solutions.",
+    "Path": "Genetic Algorithm (GA).PopulationSize"
+  },
+  {
+    "Value": 0.35,
+    "Name": "MutationProbability",
+    "Description": "The probability that the mutation operator is applied on a solution.",
+    "Path": "Genetic Algorithm (GA).MutationProbability"
+  }
+]
+```
+This example shows the dynamic change of the properties `PopulationSize` to 250 and `MutationProbability` to 0.35.
+
+<b>NOTE - A:</b> Every parameter needs to be part of the list `Parameters` of the template JSON file.
+
+<b>NOTE - B:</b> The following properties cannot get configured in the configuration file and are ignored within the instantiation process:
+* `Minimum`
+* `Maximum`
+* `ConcreteRestrictedItems`
+* `ColumnsResizable`
+* `RowsResizable`
+* `Resizable`
+
+<b>NOTE - C:</b> The property `Path` is necessary to be able to assign it with the associated object in HeuristicLab (works like an unique identifier). Everything else should be optional.
+
+<!--
+1. create an empty JSON file
+2. the content of the configuration is an array of objects; in the following example, the population size of the algorithm is set to 250 and the mutation probability is set to 0.35:
+```json 
+[
+  {
+    "Value": 250,
+    "Name": "PopulationSize",
+    "Description": "The size of the population of solutions.",
+    "Path": "Genetic Algorithm (GA).PopulationSize"
+  },
+  {
+    "Value": 0.35,
+    "Name": "MutationProbability",
+    "Description": "The probability that the mutation operator is applied on a solution.",
+    "Path": "Genetic Algorithm (GA).MutationProbability"
+  }
+]
+```
+3. copy all desired `Parameter` objects of the template JSON file into your configuration file (every template file consists of three parts: metadata, parameters and results)
+4. adapt the values as you wish
+5. every parameter object needs the property `Path` (the path describes the targeted object inside the object-graph in HeuristicLab and works like a unique identifier), everything else should be optional
+-->
+---
+## License
+HeuristicLab is licensed under the [GNU GPL v3](http://www.gnu.org/licenses/gpl-3.0.html). More information can be found [here](https://dev.heuristiclab.com/trac.fcgi/wiki/Download#License).
+
+As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
+
+As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.
+<!--As usually with docker containers, a container contains other software which may be under other licenses.-->
