Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.Designer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.Designer.cs	(revision 17433)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Shared/JsonItemBaseControl.Designer.cs	(revision 17435)
@@ -79,5 +79,4 @@
       this.textBoxName.Location = new System.Drawing.Point(92, 23);
       this.textBoxName.Name = "textBoxName";
-      this.textBoxName.ReadOnly = true;
       this.textBoxName.Size = new System.Drawing.Size(404, 20);
       this.textBoxName.TabIndex = 10;
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.Designer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.Designer.cs	(revision 17433)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.Designer.cs	(revision 17435)
@@ -31,6 +31,21 @@
       this.panel = new System.Windows.Forms.Panel();
       this.jsonItemBindingSource = new System.Windows.Forms.BindingSource(this.components);
+      this.resultItems = new System.Windows.Forms.CheckedListBox();
+      this.groupBox2 = new System.Windows.Forms.GroupBox();
+      this.groupBox3 = new System.Windows.Forms.GroupBox();
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
       this.groupBoxDetails.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.jsonItemBindingSource)).BeginInit();
+      this.groupBox2.SuspendLayout();
+      this.groupBox3.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -43,8 +58,9 @@
       // exportButton
       // 
-      this.exportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.exportButton.Location = new System.Drawing.Point(801, 687);
+      this.exportButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.exportButton.Location = new System.Drawing.Point(3, 570);
       this.exportButton.Name = "exportButton";
-      this.exportButton.Size = new System.Drawing.Size(121, 34);
+      this.exportButton.Size = new System.Drawing.Size(422, 29);
       this.exportButton.TabIndex = 1;
       this.exportButton.Text = "Export";
@@ -54,9 +70,10 @@
       // treeView
       // 
-      this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left)));
-      this.treeView.Location = new System.Drawing.Point(12, 12);
+      this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.treeView.Location = new System.Drawing.Point(6, 19);
       this.treeView.Name = "treeView";
-      this.treeView.Size = new System.Drawing.Size(342, 669);
+      this.treeView.Size = new System.Drawing.Size(353, 327);
       this.treeView.TabIndex = 3;
       this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect);
@@ -68,7 +85,7 @@
             | System.Windows.Forms.AnchorStyles.Right)));
       this.groupBoxDetails.Controls.Add(this.panel);
-      this.groupBoxDetails.Location = new System.Drawing.Point(360, 12);
+      this.groupBoxDetails.Location = new System.Drawing.Point(3, 3);
       this.groupBoxDetails.Name = "groupBoxDetails";
-      this.groupBoxDetails.Size = new System.Drawing.Size(562, 669);
+      this.groupBoxDetails.Size = new System.Drawing.Size(422, 561);
       this.groupBoxDetails.TabIndex = 4;
       this.groupBoxDetails.TabStop = false;
@@ -83,5 +100,5 @@
       this.panel.Location = new System.Drawing.Point(7, 20);
       this.panel.Name = "panel";
-      this.panel.Size = new System.Drawing.Size(549, 643);
+      this.panel.Size = new System.Drawing.Size(409, 535);
       this.panel.TabIndex = 0;
       // 
@@ -89,4 +106,81 @@
       // 
       this.jsonItemBindingSource.DataSource = typeof(HeuristicLab.JsonInterface.IJsonItem);
+      // 
+      // resultItems
+      // 
+      this.resultItems.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.resultItems.FormattingEnabled = true;
+      this.resultItems.Location = new System.Drawing.Point(6, 19);
+      this.resultItems.Name = "resultItems";
+      this.resultItems.Size = new System.Drawing.Size(353, 199);
+      this.resultItems.TabIndex = 5;
+      // 
+      // groupBox2
+      // 
+      this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.groupBox2.Controls.Add(this.treeView);
+      this.groupBox2.Location = new System.Drawing.Point(3, 3);
+      this.groupBox2.Name = "groupBox2";
+      this.groupBox2.Size = new System.Drawing.Size(365, 352);
+      this.groupBox2.TabIndex = 6;
+      this.groupBox2.TabStop = false;
+      this.groupBox2.Text = "Elements";
+      // 
+      // groupBox3
+      // 
+      this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.groupBox3.Controls.Add(this.resultItems);
+      this.groupBox3.Location = new System.Drawing.Point(3, 3);
+      this.groupBox3.Name = "groupBox3";
+      this.groupBox3.Size = new System.Drawing.Size(365, 231);
+      this.groupBox3.TabIndex = 7;
+      this.groupBox3.TabStop = false;
+      this.groupBox3.Text = "Result Elements";
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.splitContainer1.Location = new System.Drawing.Point(3, 3);
+      this.splitContainer1.Name = "splitContainer1";
+      this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.groupBox2);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.groupBox3);
+      this.splitContainer1.Size = new System.Drawing.Size(371, 599);
+      this.splitContainer1.SplitterDistance = 358;
+      this.splitContainer1.TabIndex = 8;
+      // 
+      // splitContainer2
+      // 
+      this.splitContainer2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.splitContainer2.Location = new System.Drawing.Point(12, 12);
+      this.splitContainer2.Name = "splitContainer2";
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.splitContainer1);
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.groupBoxDetails);
+      this.splitContainer2.Panel2.Controls.Add(this.exportButton);
+      this.splitContainer2.Size = new System.Drawing.Size(809, 605);
+      this.splitContainer2.SplitterDistance = 377;
+      this.splitContainer2.TabIndex = 9;
       // 
       // ExportJsonDialog
@@ -94,8 +188,6 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(934, 733);
-      this.Controls.Add(this.groupBoxDetails);
-      this.Controls.Add(this.treeView);
-      this.Controls.Add(this.exportButton);
+      this.ClientSize = new System.Drawing.Size(833, 629);
+      this.Controls.Add(this.splitContainer2);
       this.Name = "ExportJsonDialog";
       this.RightToLeft = System.Windows.Forms.RightToLeft.No;
@@ -104,4 +196,14 @@
       this.groupBoxDetails.ResumeLayout(false);
       ((System.ComponentModel.ISupportInitialize)(this.jsonItemBindingSource)).EndInit();
+      this.groupBox2.ResumeLayout(false);
+      this.groupBox3.ResumeLayout(false);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -117,4 +219,9 @@
     private System.Windows.Forms.GroupBox groupBoxDetails;
     private System.Windows.Forms.Panel panel;
+    private System.Windows.Forms.CheckedListBox resultItems;
+    private System.Windows.Forms.GroupBox groupBox2;
+    private System.Windows.Forms.GroupBox groupBox3;
+    private System.Windows.Forms.SplitContainer splitContainer1;
+    private System.Windows.Forms.SplitContainer splitContainer2;
   }
 }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs	(revision 17433)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.OptimizerIntegration/Views/ExportJsonDialog.cs	(revision 17435)
@@ -22,4 +22,5 @@
     private IList<JsonItemVMBase> VMs { get; set; }
     private JCGenerator Generator { get; set; } = new JCGenerator();
+    private IDictionary<string, IJsonItem> ResultItems = new Dictionary<string, IJsonItem>();
 
     private IContent content;
@@ -31,9 +32,10 @@
         VMs = new List<JsonItemVMBase>();
         treeView.Nodes.Clear();
+        ResultItems.Clear();
         
         Optimizer = content as IOptimizer;
         Root = JsonItemConverter.Extract(Optimizer);
         TreeNode parent = new TreeNode(Root.Name);
-      
+
         BuildTreeNode(parent, Root);
         treeView.Nodes.Add(parent);
@@ -63,4 +65,19 @@
           x.Item.Parent.Children.Remove(x.Item);
         }
+      }
+
+      foreach(var x in ResultItems.Values) {
+        x.Parent.Children.Remove(x);
+      }
+
+      foreach(var x in resultItems.CheckedItems) {
+        if(ResultItems.TryGetValue((string)x, out IJsonItem item)) {
+          Root.AddChildren(item);
+        }
+      }
+
+      IList<IJsonItem> faultyItems = new List<IJsonItem>();
+      if(!Root.GetValidator().Validate(ref faultyItems)) {
+        //print faultyItems
       }
 
@@ -95,5 +112,6 @@
             if (IsDrawableItem(c)) {
               if (c is ResultItem) {
-
+                resultItems.Items.Add(c.Name, true);
+                ResultItems.Add(c.Name, c);
               } else {
                 TreeNode childNode = new TreeNode(c.Name);
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Constants.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Constants.cs	(revision 17433)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Constants.cs	(revision 17435)
@@ -12,6 +12,5 @@
 
     internal const string Metadata = "Metadata";
-    internal const string Optimizer = "Optimizer";
-    internal const string Problem = "Problem";
+    internal const string TemplateName = "TemplateName";
     internal const string HLFileLocation = "HLFileLocation";
     internal const string Parameters = "Parameters";
@@ -20,6 +19,5 @@
     internal const string Template = @"{
       '" + Metadata + @"': {
-        '" + Optimizer + @"':'',
-        '" + Problem + @"':'',
+        '" + TemplateName + @"':'',
         '" + HLFileLocation + @"':''
       },
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs	(revision 17433)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs	(revision 17435)
@@ -7,5 +7,5 @@
 using HeuristicLab.Optimization;
 
-namespace HeuristicLab.JsonInterface.Converters {
+namespace HeuristicLab.JsonInterface {
   public class AlgorithmConverter : ParameterizedItemConverter {
     public override int Priority => 30;
@@ -27,5 +27,5 @@
         item.AddChildren(new ResultItem() {
           Name = res.Name,
-          Description = value.ItemDescription,
+          Description = res.Description,
           Value = true,
           Range = new object[] { true, false }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs	(revision 17433)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs	(revision 17435)
@@ -9,4 +9,5 @@
 using Newtonsoft.Json.Linq;
 using HEAL.Attic;
+using System.IO;
 
 namespace HeuristicLab.JsonInterface {
@@ -15,125 +16,57 @@
   /// </summary>
   public class JCGenerator {
-    private JObject Template { get; set; } = JObject.Parse(Constants.Template);
-    private JArray JArrayItems { get; set; }
-    private IList<IJsonItem> JsonItems { get; set; }
-    private IOptimizer Optimizer { get; set; }
 
-    
-    public string GenerateTemplate(IOptimizer optimizer) {
-      // data container
-      JArrayItems = new JArray();
-      JArray ResultItems = new JArray();
-      JsonItems = new List<IJsonItem>();
+    public void GenerateTemplate(string path, IOptimizer optimizer) =>
+      GenerateTemplate(path, optimizer.Name, optimizer);
 
+    public void GenerateTemplate(string path, string templateName, IOptimizer optimizer) =>
+      GenerateTemplate(path, templateName, optimizer, JsonItemConverter.Extract(optimizer));
+
+    public void GenerateTemplate(string path, string templateName, IOptimizer optimizer, IJsonItem rootItem) {
+      // init
+      JObject template = JObject.Parse(Constants.Template);
+      JArray parameterItems = new JArray();
+      JArray resultItems = new JArray();
+      IList<IJsonItem> jsonItems = new List<IJsonItem>();
+      string fullPath = Path.GetDirectoryName(Path.GetFullPath(path));
+      
+      // recursively filter items with values/ranges/actualNames
+      PopulateJsonItems(rootItem, jsonItems);
+
+      // serialize hl file
       ProtoBufSerializer serializer = new ProtoBufSerializer();
-      serializer.Serialize(optimizer, @"C:\Workspace\template.hl");
-      Template[Constants.Metadata][Constants.HLFileLocation] = @"C:\Workspace\template.hl";
+      string hlFilePath = fullPath + @"\" + templateName + ".hl";
+      serializer.Serialize(optimizer, hlFilePath);
 
-      // extract JsonItem, save the name in the metadata section of the 
-      // template and save it an JArray incl. all parameters of the JsonItem, 
-      // which have parameters aswell
-      AddIItem(optimizer);
-      // save the JArray with JsonItems (= IParameterizedItems)
+      // filter result items
+      foreach (var item in jsonItems) {
+        if (item is ResultItem)
+          resultItems.Add(Serialize(item));
+        else
+          parameterItems.Add(Serialize(item));
+      }
+      
+      // set template data
+      template[Constants.Metadata][Constants.TemplateName] = templateName;
+      template[Constants.Metadata][Constants.HLFileLocation] = hlFilePath;
+      template[Constants.Parameters] = parameterItems;
+      template[Constants.ActivatedResults] = resultItems;
 
-      JArrayItems = new JArray();
-      foreach (var item in JsonItems) {
-        if (item is ResultItem)
-          ResultItems.Add(Serialize(item));
-        else
-          JArrayItems.Add(Serialize(item));
-      }
-      Template[Constants.Parameters] = JArrayItems;
-      Template[Constants.ActivatedResults] = ResultItems;
-      // serialize template and return string
-      return SingleLineArrayJsonWriter.Serialize(Template);
+      // serialize template and write file
+      File.WriteAllText(fullPath + @"\" + templateName + ".json", SingleLineArrayJsonWriter.Serialize(template));
     }
 
-    public string GenerateTemplate(IEnumerable<IJsonItem> items) {
-      ProtoBufSerializer serializer = new ProtoBufSerializer();
-      serializer.Serialize(Optimizer, @"C:\Workspace\template.hl");
-      Template[Constants.Metadata][Constants.HLFileLocation] = @"C:\Workspace\template.hl";
-
-      JArray ResultItems = new JArray();
-
-      JArrayItems = new JArray();
-      foreach (var item in items) {
-        if (item is ResultItem)
-          ResultItems.Add(Serialize(item));
-        else
-          JArrayItems.Add(Serialize(item));
-      }
-      Template[Constants.Parameters] = JArrayItems;
-      Template[Constants.ActivatedResults] = ResultItems;
-
-      // serialize template and return string
-      return SingleLineArrayJsonWriter.Serialize(Template);
-    }
-
-    public string GenerateTemplate(IJsonItem rootItem, IOptimizer optimizer) {
-      // data container
-      Template = JObject.Parse(Constants.Template);
-      JsonItems = new List<IJsonItem>();
-
-      // extract JsonItem, save the name in the metadata section of the 
-      // template and save it an JArray incl. all parameters of the JsonItem, 
-      // which have parameters aswell
-      Template[Constants.Metadata][Constants.Optimizer] = optimizer.Name;
-      PopulateJsonItems(rootItem);
-
-      ProtoBufSerializer serializer = new ProtoBufSerializer();
-      serializer.Serialize(Optimizer, @"C:\Workspace\template.hl");
-      Template[Constants.Metadata][Constants.HLFileLocation] = @"C:\Workspace\template.hl";
-
-      JArray ResultItems = new JArray();
-
-      JArrayItems = new JArray();
-      foreach (var item in JsonItems) {
-        if (item is ResultItem)
-          ResultItems.Add(Serialize(item));
-        else
-          JArrayItems.Add(Serialize(item));
-      }
-      Template[Constants.Parameters] = JArrayItems;
-      Template[Constants.ActivatedResults] = ResultItems;
-
-      // serialize template and return string
-      return SingleLineArrayJsonWriter.Serialize(Template);
-    }
-
-    public IEnumerable<IJsonItem> FetchJsonItems(IOptimizer optimizer) {
-      // data container
-      Template = JObject.Parse(Constants.Template);
-      JsonItems = new List<IJsonItem>();
-      Optimizer = optimizer;
-
-      // extract JsonItem, save the name in the metadata section of the 
-      // template and save it an JArray incl. all parameters of the JsonItem, 
-      // which have parameters aswell
-      AddIItem(optimizer);
-
-      // serialize template and return string
-      return JsonItems;
-    }
-    
-    #region Helper
-
-    private void AddIItem(IItem item) {
-      IJsonItem jsonItem = JsonItemConverter.Extract(item);
-      Template[Constants.Metadata][Constants.Optimizer] = item.ItemName;
-      PopulateJsonItems(jsonItem);
-    }
-
+    #region Helper    
     // serializes ParameterizedItems and saves them in list "JsonItems".
-    private void PopulateJsonItems(IJsonItem item) {
+    private void PopulateJsonItems(IJsonItem item, IList<IJsonItem> jsonItems) {
       IEnumerable<IJsonItem> tmpParameter = item.Children;
       
       if (item.Value != null || item.Range != null || item is ResultItem || item.ActualName != null) {
-        JsonItems.Add(item);
+        jsonItems.Add(item);
       }
 
       if (tmpParameter != null) {
         foreach (var p in tmpParameter) {
-          PopulateJsonItems(p);
+          PopulateJsonItems(p, jsonItems);
         }
       }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs	(revision 17433)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs	(revision 17435)
@@ -42,6 +42,6 @@
 
       // extract metadata information
-      string optimizerName = instData.Template[Constants.Metadata][Constants.Optimizer].ToString();
-      string hLFileLocation = instData.Template[Constants.Metadata][Constants.HLFileLocation].ToString();
+      string optimizerName = instData.Template[Constants.Metadata][Constants.TemplateName].ToString();
+      string hLFileLocation = Path.GetFullPath(instData.Template[Constants.Metadata][Constants.HLFileLocation].ToString());
 
       // deserialize hl file
@@ -72,6 +72,4 @@
 
     private static void CollectParameterizedItems(InstData instData) {
-      //JCGenerator generator = new JCGenerator();
-      //IEnumerable<IJsonItem> items = generator.FetchJsonItems(instData.Optimizer);
       IJsonItem root = JsonItemConverter.Extract(instData.Optimizer);
       instData.Objects.Add(root.Path, root);
@@ -95,31 +93,4 @@
         instData.Objects.Add(tmp.Path, tmp);
       }
-
-
-      /*
-      foreach (JObject item in instData.Template[Constants.Parameters]) {
-        string[] pathParts = item.Property("Path").Value.ToString().Split('.');
-        
-        // rebuilds object tree
-        IJsonItem parent = null;
-        StringBuilder partialPath = new StringBuilder();
-        for(int i = 0; i < pathParts.Length-1; ++i) {
-          partialPath.Append(pathParts[i]);
-          IJsonItem tmp = null;
-          if (instData.Objects.TryGetValue(partialPath.ToString(), out IJsonItem value)) {
-            tmp = value;
-          } else {
-            tmp = new JsonItem() { Name = pathParts[i] };
-            if (parent != null) parent.AddChilds(tmp);
-            instData.Objects.Add(partialPath.ToString(), tmp);
-          }
-          partialPath.Append(".");
-          parent = tmp;
-        }
-
-        IJsonItem data = JsonItem.BuildJsonItem(item);
-        parent.AddChilds(data);
-        instData.Objects.Add(data.Path, data);
-      }*/
     }
     
@@ -127,5 +98,4 @@
       foreach (JObject obj in instData.Config) {
         // build item from config object
-        //IJsonItem item = JsonItem.BuildJsonItem(obj);
         string path = obj.Property("Path").Value.ToString();
         // override default value
@@ -138,12 +108,4 @@
       }
     }
-
-    private static IJsonItem GetData(string key, InstData instData)
-    {
-      if (instData.Objects.TryGetValue(key, out IJsonItem value))
-        return value;
-      else
-        throw new InvalidDataException($"Type of item '{key}' is not defined!");
-    }
     #endregion
   }
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItem.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItem.cs	(revision 17433)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Models/JsonItem.cs	(revision 17435)
@@ -34,6 +34,7 @@
         if (!res) faultyItems.Add(item);
         Cache.Add(hash, res);
-        foreach (var child in item.Children)
-          res = res && ValidateHelper(child as JsonItem, ref faultyItems);
+        if(item.Children != null)
+          foreach (var child in item.Children)
+            res = res && ValidateHelper(child as JsonItem, ref faultyItems);
         return res;
       }
