Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs	(revision 17451)
@@ -27,5 +27,5 @@
       IAlgorithm algorithm = value as IAlgorithm;
       foreach (var res in algorithm.Results) {
-        item.AddChildren(new ResultItem() {
+        item.AddChildren(new ResultJsonItem() {
           Name = res.Name,
           Description = res.Description
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs	(revision 17451)
@@ -1,3 +1,4 @@
 ﻿using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
@@ -7,4 +8,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using Newtonsoft.Json.Linq;
 
 namespace HeuristicLab.JsonInterface {
@@ -15,6 +17,35 @@
 
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
-      // TODO: inject data
-      throw new NotImplementedException();
+      //Dictionary<string, IList<double>> dict = null;
+      var dictTmp = new Dictionary<string, IList>();
+      /*if (data.Children[0].Value is JObject jObj) {
+        dict = jObj.ToObject<Dictionary<string, IList<double>>>();
+        foreach (var x in dict) {
+          dictTmp.Add(x.Key, (IList)x.Value);
+        }
+      } else if(data.Children[0].Value is Dictionary<string, IList<double>> d) {
+        dict = d;
+      } else {
+        dictTmp = (Dictionary<string, IList>)data.Children[0].Value;
+      }
+      */
+      DoubleNamedMatrixJsonItem matrix = data.Children[0] as DoubleNamedMatrixJsonItem;
+      if(matrix != null) {
+        int c = 0;
+        foreach(var col in matrix.RowNames) {
+          dictTmp.Add(col, new List<double>(matrix.Value[c]));
+          ++c;
+        }
+      }
+
+      dynamic val = (dynamic)item;
+      object dataset = (object)val.Dataset;
+      var dataInfo = dataset.GetType().GetField("variableValues", flags);
+      dataInfo.SetValue(dataset, dictTmp);
+      val.TargetVariable = (string)data.Children[3].Value;
+      val.TrainingPartition.Start = ((IntRangeJsonItem)data.Children[2]).Value.First();
+      val.TrainingPartition.End = ((IntRangeJsonItem)data.Children[2]).Value.Last();
+      val.TestPartition.Start = ((IntRangeJsonItem)data.Children[1]).Value.First();
+      val.TestPartition.End = ((IntRangeJsonItem)data.Children[1]).Value.Last();
     }
 
@@ -28,9 +59,45 @@
       object dataset = (object)val.Dataset;
       dynamic targetVariable = val.TargetVariable;
-      FieldInfo dataInfo = dataset.GetType().GetField("storableData", flags);
-      // TODO: aufteilen in trainings und test daten abschnitte
-      item.AddChildren(new JsonItem() {
-        Name = "Dataset",
-        Value = dataInfo.GetValue(dataset)
+      
+      FieldInfo dataInfo = dataset.GetType().GetField("variableValues", flags);
+      
+      if(dataInfo.GetValue(dataset) is Dictionary<string, IList> dict) {
+        int cols = dict.Count;
+        int rows = 0;
+        IList<string> rowNames = new List<string>();
+        double[][] mat = new double[cols][];
+        int c = 0;
+        foreach(var x in dict) {
+          rows = Math.Max(rows, x.Value.Count);
+          rowNames.Add(x.Key);
+          mat[c] = new double[rows];
+          int r = 0;
+          foreach(var rowValue in x.Value) {
+            mat[c][r] = (double)rowValue; 
+            ++r;
+          }
+          ++c;
+        }
+        item.AddChildren(new DoubleNamedMatrixJsonItem() {
+          Name = "Dataset",
+          Value = mat,
+          RowNames = rowNames
+        });
+      }
+
+      var trainingPartition = ((IntRange)val.TrainingPartition);
+      var testPartition = ((IntRange)val.TestPartition);
+
+      item.AddChildren(new IntRangeJsonItem() {
+        Name = "TestPartition",
+        Value = new int[] { testPartition.Start, testPartition.End },
+        Range = new int[] { 0, Math.Max(testPartition.End, trainingPartition.End) }
+      });
+
+      
+      item.AddChildren(new IntRangeJsonItem() {
+        Name = "TrainingPartition",
+        Value = new int[] { trainingPartition.Start, trainingPartition.End },
+        Range = new int[] { 0, Math.Max(testPartition.End, trainingPartition.End)}
       });
 
@@ -42,10 +109,10 @@
       });
 
-
-      item.AddChildren(new JsonItem() {
+      /*
+      item.AddChildren(new StringArrayJsonItem() {
         Name = "AllowedInputVariables",
-        Value = (object)val.AllowedInputVariables,
+        Value = (string[])val.AllowedInputVariables,
         Range = variables.Select(x => x.Value)
-      });
+      });*/
       return item;
     }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ResultParameterConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ResultParameterConverter.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ResultParameterConverter.cs	(revision 17451)
@@ -15,5 +15,5 @@
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
       IResultParameter res = value as IResultParameter;
-      return new ResultItem() {
+      return new ResultJsonItem() {
         Name = res.ActualName,
         ActualName = res.ActualName,
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs	(revision 17451)
@@ -27,5 +27,10 @@
         item = tmp;
       } else {
-        item.Range = new object[] { GetMinValue(param.DataType), GetMaxValue(param.DataType) };
+        var min = GetMinValue(param.DataType);
+        var max = GetMaxValue(param.DataType);
+        if (min != null && max != null)
+          item.Range = new object[] { min, max };
+        else
+          item.Range = null;
       }
       item.Name = param.Name;
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs	(revision 17451)
@@ -17,5 +17,5 @@
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
       IntRange range = item as IntRange;
-      IntArrayJsonItem cdata = data as IntArrayJsonItem;
+      IntRangeJsonItem cdata = data as IntRangeJsonItem;
       range.Start = cdata.Value[0];
       range.End = cdata.Value[1];
@@ -39,5 +39,5 @@
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
       DoubleRange range = item as DoubleRange;
-      DoubleArrayJsonItem cdata = data as DoubleArrayJsonItem;
+      DoubleRangeJsonItem cdata = data as DoubleRangeJsonItem;
       range.Start = cdata.Value[0];
       range.End = cdata.Value[1];
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs	(revision 17451)
@@ -40,10 +40,12 @@
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
       DoubleArray arr = item as DoubleArray;
-      double[] d = CastValue<double[]>(data);
+      DoubleArrayJsonItem doubleItem = data as DoubleArrayJsonItem;
+      //double[] d = CastValue<double[]>(data);
       bool resizeTmp = arr.Resizable;
       arr.Resizable = true;
-      arr.Length = d.Length;
-      for (int i = 0; i < d.Length; ++i)
-        arr[i] = d[i];
+      //arr.Length = d.Length;
+      arr.Length = doubleItem.Value.Length;
+      for (int i = 0; i < doubleItem.Value.Length; ++i)
+        arr[i] = doubleItem.Value[i];
       arr.Resizable = resizeTmp;
     }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs	(revision 17451)
@@ -33,14 +33,16 @@
     public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
       DoubleMatrix mat = item as DoubleMatrix;
-      DoubleMatrixJsonItem d = data as DoubleMatrixJsonItem;
+      DoubleNamedMatrixJsonItem d = data as DoubleNamedMatrixJsonItem;
       CopyMatrixData(mat, d.Value);
     }
 
     public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
-      new DoubleMatrixJsonItem() {
+      new DoubleNamedMatrixJsonItem() {
         Name = "[OverridableParamName]",
         Description = value.ItemDescription,
         Value = Transform((DoubleMatrix)value),
-        Range = new double[] { double.MinValue, double.MaxValue }
+        Range = new double[] { double.MinValue, double.MaxValue },
+        RowNames = ((DoubleMatrix)value).RowNames,
+        ColumnNames = ((DoubleMatrix)value).ColumnNames
       };
   }
@@ -90,6 +92,6 @@
     #region Helper
     protected void CopyMatrixData(MatrixType matrix, T[][] data) {
-      var rows = data.Length;
-      var cols = data.Length > 0 ? data[0].Length : 0;
+      var cols = data.Length;
+      var rows = data.Length > 0 ? data[0].Length : 0;
 
       var rowInfo = matrix.GetType().GetProperty("Rows");
@@ -100,5 +102,5 @@
       for (int x = 0; x < rows; ++x) {
         for (int y = 0; y < cols; ++y) {
-          matrix[x, y] = data[x][y];
+          matrix[x, y] = data[y][x];
         }
       }
@@ -106,9 +108,9 @@
 
     protected T[][] Transform(MatrixType matrix) {
-      T[][] m = new T[matrix.Rows][];
-      for (int r = 0; r < matrix.Rows; ++r) {
-        m[r] = new T[matrix.Columns];
-        for (int c = 0; c < matrix.Columns; ++c) {
-          m[r][c] = matrix[r, c];
+      T[][] m = new T[matrix.Columns][];
+      for (int column = 0; column < matrix.Columns; ++column) {
+        m[column] = new T[matrix.Rows];
+        for (int row = 0; row < matrix.Rows; ++row) {
+          m[column][row] = matrix[row, column];
         }
       }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/HeuristicLab.JsonInterface.csproj
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/HeuristicLab.JsonInterface.csproj	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/HeuristicLab.JsonInterface.csproj	(revision 17451)
@@ -71,4 +71,5 @@
     <Compile Include="Interfaces\IJsonItemValidator.cs" />
     <Compile Include="Interfaces\IMatrixJsonItem.cs" />
+    <Compile Include="Interfaces\INamedMatrixJsonItem.cs" />
     <Compile Include="Models\ArrayJsonItemBase.cs" />
     <Compile Include="Models\BoolJsonItems.cs" />
@@ -79,5 +80,6 @@
     <Compile Include="Models\JsonItem.cs" />
     <Compile Include="Models\MatrixJsonItemBase.cs" />
-    <Compile Include="Models\ResultItem.cs" />
+    <Compile Include="Models\NamedMatrixJsonItemBase.cs" />
+    <Compile Include="Models\ResultJsonItem.cs" />
     <Compile Include="Models\StringJsonItem.cs" />
     <Compile Include="Models\UnsupportedJsonItem.cs" />
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IJsonItem.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IJsonItem.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IJsonItem.cs	(revision 17451)
@@ -9,4 +9,5 @@
 namespace HeuristicLab.JsonInterface {
   public interface IJsonItem {
+    bool Active { get; set; }
     string Name { get; set; }
 
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/INamedMatrixJsonItem.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/INamedMatrixJsonItem.cs	(revision 17451)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/INamedMatrixJsonItem.cs	(revision 17451)
@@ -0,0 +1,12 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HeuristicLab.JsonInterface {
+  public interface INamedMatrixJsonItem : IMatrixJsonItem {
+    IEnumerable<string> RowNames { get; set; }
+    IEnumerable<string> ColumnNames { get; set; }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs	(revision 17451)
@@ -41,5 +41,5 @@
       // filter result items
       foreach (var item in jsonItems) {
-        if (item is ResultItem)
+        if (item is ResultJsonItem)
           resultItems.Add(Serialize(item));
         else
@@ -60,12 +60,12 @@
     // serializes ParameterizedItems and saves them in list "JsonItems".
     private void PopulateJsonItems(IJsonItem item, IList<IJsonItem> jsonItems) {
-      IEnumerable<IJsonItem> tmpParameter = item.Children;
+      IEnumerable<IJsonItem> children = item.Children;
       
-      if (item.Value != null || item.Range != null || item is ResultItem || item.ActualName != null) {
+      if (item.Active && (item.Value != null || item.Range != null || item is ResultJsonItem || item.ActualName != null)) {
         jsonItems.Add(item);
       }
 
-      if (tmpParameter != null) {
-        foreach (var p in tmpParameter) {
+      if (children != null) {
+        foreach (var p in children) {
           PopulateJsonItems(p, jsonItems);
         }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/DoubleJsonItems.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/DoubleJsonItems.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/DoubleJsonItems.cs	(revision 17451)
@@ -23,3 +23,15 @@
     }
   }
+
+  public class DoubleNamedMatrixJsonItem : NamedMatrixJsonItemBase<double> {
+    protected override bool IsInRange() {
+      for (int c = 0; c < Value.Length; ++c) {
+        for (int r = 0; r < Value[c].Length; ++r) {
+          if (Value[c][r] < Range.First() && Range.Last() < Value[c][r])
+            return false;
+        }
+      }
+      return true;
+    }
+  }
 }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/IntJsonItems.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/IntJsonItems.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/IntJsonItems.cs	(revision 17451)
@@ -6,5 +6,10 @@
 
 namespace HeuristicLab.JsonInterface {
-  public class IntJsonItem : JsonItem<int> { }
+  public class IntJsonItem : JsonItem<int> {
+    /*I
+    public int MinValue { get; set; } 
+    public int MaxValue { get; set; }
+    */
+  }
   public class IntArrayJsonItem : ArrayJsonItemBase<int> { }
   public class IntRangeJsonItem : ArrayJsonItemBase<int> {
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItem.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItem.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItem.cs	(revision 17451)
@@ -66,5 +66,8 @@
     public virtual IEnumerable<object> Range { get; set; }
     
+    // TODO eigene items für LookUp?
     public virtual string ActualName { get; set; }
+
+    // TODO jsonIgnore dataType?
 
     [JsonIgnore]
@@ -73,4 +76,7 @@
     [JsonIgnore]
     public virtual IJsonItem Parent { get; set; }
+
+    [JsonIgnore]
+    public virtual bool Active { get; set; }
 
     #region Constructors
@@ -81,20 +87,5 @@
     }
     #endregion
-
-    #region Public Static Methods
-    public static void Merge(JsonItem target, JsonItem from) {
-      target.Name = from.Name ?? target.Name;
-      target.Range = from.Range ?? target.Range;
-      target.Value = from.Value ?? target.Value;
-      target.ActualName = from.ActualName ?? target.ActualName;
-      if(target.Children != null) {
-        if (from.Children != null)
-          ((List<IJsonItem>)from.Children).AddRange(target.Children); 
-      } else {
-        target.Children = from.Children;
-      }
-    }
-    #endregion
-
+    
     #region Public Methods
     public void AddChildren(params IJsonItem[] childs) => 
@@ -124,4 +115,8 @@
 
     #region Helper
+    /*
+     * TODO protected abstract bool Validate();
+     */
+
     protected virtual bool IsInRange() {
       bool b1 = true, b2 = true;
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/NamedMatrixJsonItemBase.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/NamedMatrixJsonItemBase.cs	(revision 17451)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/NamedMatrixJsonItemBase.cs	(revision 17451)
@@ -0,0 +1,36 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json.Linq;
+
+namespace HeuristicLab.JsonInterface {
+  public class NamedMatrixJsonItemBase<T> : MatrixJsonItemBase<T>, INamedMatrixJsonItem {
+    IList<string> rows = new List<string>();
+    public IEnumerable<string> RowNames {
+      get => rows;
+      set => rows = new List<string>(value);
+    }
+
+    IList<string> cols = new List<string>();
+    public IEnumerable<string> ColumnNames { 
+      get => cols; 
+      set => cols = new List<string>(value); 
+    }
+
+    public void AddColumn(string col) {
+      cols.Add(col);
+    }
+
+    public void AddRow(string row) {
+      rows.Add(row);
+    }
+
+    public override void SetFromJObject(JObject jObject) {
+      base.SetFromJObject(jObject);
+      RowNames = jObject[nameof(INamedMatrixJsonItem.RowNames)]?.ToObject<IEnumerable<string>>();
+      ColumnNames = jObject[nameof(INamedMatrixJsonItem.ColumnNames)]?.ToObject<IEnumerable<string>>();
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ResultItem.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ResultItem.cs	(revision 17446)
+++ 	(revision )
@@ -1,11 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace HeuristicLab.JsonInterface {
-  public class ResultItem : JsonItem {
-
-  }
-}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ResultJsonItem.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ResultJsonItem.cs	(revision 17451)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/ResultJsonItem.cs	(revision 17451)
@@ -0,0 +1,11 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HeuristicLab.JsonInterface {
+  public class ResultJsonItem : JsonItem {
+
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/StringJsonItem.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/StringJsonItem.cs	(revision 17446)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/StringJsonItem.cs	(revision 17451)
@@ -7,3 +7,4 @@
 namespace HeuristicLab.JsonInterface {
   public class StringJsonItem : JsonItem<string> { }
+  public class StringArrayJsonItem : JsonItem<string[], string> { }
 }
