Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/ArrayValueVM.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/ArrayValueVM.cs	(revision 17483)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/ArrayValueVM.cs	(revision 17484)
@@ -20,7 +20,7 @@
     
     public override double[] Value {
-      get => ((DoubleArrayJsonItem)Item).Value;
+      get => Item.Value;
       set {
-        ((DoubleArrayJsonItem)Item).Value = value;
+        Item.Value = value;
         OnPropertyChange(this, nameof(Value));
       }
@@ -39,7 +39,7 @@
     
     public override int[] Value {
-      get => ((IntArrayJsonItem)Item).Value;
+      get => Item.Value;
       set {
-        ((IntArrayJsonItem)Item).Value = value;
+        Item.Value = value;
         OnPropertyChange(this, nameof(Value));
       }
@@ -52,21 +52,10 @@
     
     public ArrayValueVM() { }
-
-    public void SetIndexValue(T data, int index) {
-      T[] tmp = Value;
-      if(index >= tmp.Length) { // increasing array
-        T[] newArr = new T[index+1];
-        Array.Copy(tmp, 0, newArr, 0, tmp.Length);
-        tmp = newArr;
-      }
-      tmp[index] = data;
-      Value = tmp;
-    }
-
+    
     public abstract T[] Value { get; set; }
     public bool Resizable { 
-      get => ((IArrayJsonItem)Item).Resizable; 
+      get => Item.Resizable; 
       set {
-        ((IArrayJsonItem)Item).Resizable = value;
+        Item.Resizable = value;
         OnPropertyChange(this, nameof(IArrayJsonItemVM.Resizable));
       }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/MatrixValueVM.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/MatrixValueVM.cs	(revision 17483)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/ViewModels/MatrixValueVM.cs	(revision 17484)
@@ -15,7 +15,7 @@
 
     public override double[][] Value {
-      get => ((DoubleMatrixJsonItem)Item).Value;
+      get => Item.Value;
       set {
-        ((DoubleMatrixJsonItem)Item).Value = value;
+        Item.Value = value;
         OnPropertyChange(this, nameof(Value));
       }
@@ -32,7 +32,7 @@
     public abstract T[][] Value { get; set; }
     public bool RowsResizable {
-      get => ((IMatrixJsonItem)Item).RowsResizable; 
+      get => Item.RowsResizable; 
       set {
-        ((IMatrixJsonItem)Item).RowsResizable = value;
+        Item.RowsResizable = value;
         OnPropertyChange(this, nameof(RowsResizable));
       }
@@ -40,7 +40,7 @@
 
     public bool ColumnsResizable {
-      get => ((IMatrixJsonItem)Item).ColumnsResizable;
+      get => Item.ColumnsResizable;
       set {
-        ((IMatrixJsonItem)Item).ColumnsResizable = value;
+        Item.ColumnsResizable = value;
         OnPropertyChange(this, nameof(ColumnsResizable));
       }
@@ -48,42 +48,17 @@
 
     public IEnumerable<string> RowNames {
-      get => ((JsonItemType)Item).RowNames;
+      get => Item.RowNames;
       set {
-        ((JsonItemType)Item).RowNames = value;
+        Item.RowNames = value;
         OnPropertyChange(this, nameof(RowNames));
       }
     }
     public IEnumerable<string> ColumnNames {
-      get => ((JsonItemType)Item).ColumnNames;
+      get => Item.ColumnNames;
       set {
-        ((JsonItemType)Item).ColumnNames = value;
+        Item.ColumnNames = value;
         OnPropertyChange(this, nameof(ColumnNames));
       }
     }
-
-    public void SetCellValue(T data, int row, int col) {
-      
-      T[][] tmp = Value;
-      
-      // increase y
-      if (row >= tmp.Length) { // increasing array
-        T[][] newArr = new T[row + 1][];
-        Array.Copy(tmp, 0, newArr, 0, tmp.Length);
-        newArr[row] = new T[0];
-        tmp = newArr;
-      }
-
-      // increase x
-      for(int i = 0; i < tmp.Length; ++i) {
-        if(col >= tmp[i].Length) {
-          T[] newArr = new T[col + 1];
-          Array.Copy(tmp[i], 0, newArr, 0, tmp[i].Length);
-          tmp[i] = newArr;
-        }
-      }
-
-      tmp[row][col] = data;
-      Value = tmp;
-    }
   }
 }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs	(revision 17483)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs	(revision 17484)
@@ -46,5 +46,7 @@
         treeView.Nodes.Add(parent);
         treeView.ExpandAll();
-        
+        panelParameterDetails.Controls.Clear();
+        panelResultDetails.Controls.Clear();
+
       } 
     }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.cs	(revision 17483)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/JsonItemMultiValueControl.cs	(revision 17484)
@@ -14,7 +14,7 @@
     public JsonItemDoubleMatrixValueControl(DoubleMatrixValueVM vm) : base(vm, vm.Value) { }
     
-    protected override void SaveCellData(double data, int row, int col) {
+    protected override void Save() {
       DoubleMatrixValueVM vm = VM as DoubleMatrixValueVM;
-      vm.SetCellValue(data, row, col);
+      vm.Value = Matrix;
     }
     
@@ -24,7 +24,7 @@
     public JsonItemIntArrayValueControl(IntArrayValueVM vm) : base(vm, vm.Value) { }
     
-    protected override void SaveCellData(int data, int row, int col) {
+    protected override void Save() {
       IntArrayValueVM vm = VM as IntArrayValueVM;
-      vm.SetIndexValue(data, row);
+      vm.Value = Matrix[0];
     }
     
@@ -34,7 +34,7 @@
     public JsonItemDoubleArrayValueControl(DoubleArrayValueVM vm) : base(vm, vm.Value) { }
     
-    protected override void SaveCellData(double data, int row, int col) {
+    protected override void Save() {
       DoubleArrayValueVM vm = VM as DoubleArrayValueVM;
-      vm.SetIndexValue(data, row);
+      vm.Value = Matrix[0];
     }
     
@@ -47,5 +47,5 @@
     private int Columns { get; set; }
 
-    private T[][] Matrix { get; set; }
+    protected T[][] Matrix { get; set; }
     
     protected IEnumerable<string> RowNames {
@@ -108,23 +108,5 @@
     }
     
-    protected abstract void SaveCellData(T data, int row, int col);
-
-    private void InitSizeConfiguration(int? rows, int? columns) {
-      if(rows != null) {
-        checkBoxRows.CheckedChanged += CheckBoxRows_CheckedChanged;
-        textBoxRows.Text = rows.ToString();
-      } else {
-        checkBoxRows.Enabled = false;
-        textBoxRows.ReadOnly = true;
-      }
-
-      if (columns != null) {
-        checkBoxColumns.CheckedChanged += CheckBoxColumns_CheckedChanged;
-        textBoxColumns.Text = columns.ToString();
-      } else {
-        checkBoxColumns.Enabled = false;
-        textBoxColumns.ReadOnly = true;
-      }
-    }
+    protected abstract void Save();
 
     private void RefreshMatrix() {
@@ -135,4 +117,5 @@
       Matrix = new T[Columns][];
       
+      // add columns
       for (int c = 0; c < Columns; ++c) {
         string name = $"Column {c}";
@@ -142,4 +125,5 @@
       }
 
+      // copy data from old matrix into new
       for (int c = 0; c < Columns; ++c) {
         T[] newCol = new T[Rows];
@@ -149,4 +133,5 @@
       }
 
+      // add rows
       if(Rows > 0 && Columns > 0) {
         dataGridView.Rows.Add(Rows);
@@ -165,4 +150,23 @@
     }
 
+    #region Init
+    private void InitSizeConfiguration(int? rows, int? columns) {
+      if (rows != null) {
+        checkBoxRows.CheckedChanged += CheckBoxRows_CheckedChanged;
+        textBoxRows.Text = rows.ToString();
+      } else {
+        checkBoxRows.Enabled = false;
+        textBoxRows.ReadOnly = true;
+      }
+
+      if (columns != null) {
+        checkBoxColumns.CheckedChanged += CheckBoxColumns_CheckedChanged;
+        textBoxColumns.Text = columns.ToString();
+      } else {
+        checkBoxColumns.Enabled = false;
+        textBoxColumns.ReadOnly = true;
+      }
+    }
+
     private void InitRangeBinding() {
       NumericRangeControl = numericRangeControl1;
@@ -174,5 +178,7 @@
         false, DataSourceUpdateMode.OnPropertyChanged);
     }
-
+    #endregion
+
+    #region Validation
     private void textBoxRows_Validating(object sender, CancelEventArgs e) {
       if (string.IsNullOrWhiteSpace(textBoxRows.Text)) {
@@ -204,9 +210,12 @@
       }
     }
-    
+    #endregion
+
+    #region Events
     private void textBoxRows_TextChanged(object sender, EventArgs e) {
       if(!textBoxRows.ReadOnly && int.TryParse(textBoxRows.Text, out int r) && Rows != r) {
         Rows = r;
         RefreshMatrix();
+        Save();
       }
     }
@@ -216,4 +225,5 @@
         Columns = c;
         RefreshMatrix();
+        Save();
       }
     }
@@ -232,6 +242,8 @@
                                             typeof(T),
                                             System.Globalization.CultureInfo.InvariantCulture);
-      SaveCellData(Matrix[e.ColumnIndex][e.RowIndex], e.ColumnIndex, e.RowIndex);
-    }
+      //Save(Matrix[e.ColumnIndex][e.RowIndex], e.ColumnIndex, e.RowIndex);
+      Save();
+    }
+    #endregion
   }
 }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs	(revision 17483)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs	(revision 17484)
@@ -44,5 +44,4 @@
     }
 
-
     #region Helper
     private bool GetOperatorState(string name, IJsonItem data) {
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs	(revision 17483)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs	(revision 17484)
@@ -29,4 +29,10 @@
       dynamic val = (dynamic)item;
       object dataset = (object)val.Dataset;
+      var rows = dataset.GetType().GetField("rows", flags);
+      rows.SetValue(dataset, matrix.Value[0].Length);
+
+      var variableNames = dataset.GetType().GetField("variableNames", flags);
+      variableNames.SetValue(dataset, matrix.RowNames);
+
       var dataInfo = dataset.GetType().GetField("variableValues", flags);
       dataInfo.SetValue(dataset, dictTmp);
