Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/Runner.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/Runner.cs	(revision 17394)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface.App/Runner.cs	(revision 17395)
@@ -11,25 +11,25 @@
   internal static class Runner {
     internal static void Run(string template, string config, string outputFile = @"C:\Workspace\test.txt") {
-      IAlgorithm alg = JsonTemplateInstantiator.Instantiate(template, config);
+      IOptimizer optimizer = JsonTemplateInstantiator.Instantiate(template, config);
   
-      Task task = alg.StartAsync();
+      Task task = optimizer.StartAsync();
       while(!task.IsCompleted) {
-        WriteResultsToFile(outputFile, alg);
+        WriteResultsToFile(outputFile, optimizer);
         Thread.Sleep(100);
       }
-      WriteResultsToFile(outputFile, alg);
+      WriteResultsToFile(outputFile, optimizer);
     }
 
-    private static void WriteResultsToFile(string file, IAlgorithm optimizer) =>
+    private static void WriteResultsToFile(string file, IOptimizer optimizer) =>
       File.WriteAllText(file, FetchResults(optimizer));
 
-    private static string FetchResults(IAlgorithm optimizer) {
+    private static string FetchResults(IOptimizer optimizer) {
       StringBuilder sb = new StringBuilder();
-      //foreach (var run in optimizer.Runs) {
-        //sb.AppendLine($"--- {run.ToString()} ---");
-        foreach (var res in optimizer.Results) {
-          sb.AppendLine($"{res.Name}: {res.Value}");
+      foreach (var run in optimizer.Runs) {
+        sb.AppendLine($"--- {run.ToString()} ---");
+        foreach (var res in run.Results) {
+          sb.AppendLine($"{res.Key}: {res.Value}");
         }
-      //}
+      }
       return sb.ToString();
     }
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Constants.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Constants.cs	(revision 17394)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Constants.cs	(revision 17395)
@@ -12,5 +12,5 @@
 
     internal const string Metadata = "Metadata";
-    internal const string Algorithm = "Algorithm";
+    internal const string Optimizer = "Optimizer";
     internal const string Problem = "Problem";
     internal const string HLFileLocation = "HLFileLocation";
@@ -19,5 +19,5 @@
     internal const string Template = @"{
       '" + Metadata + @"': {
-        '" + Algorithm + @"':'',
+        '" + Optimizer + @"':'',
         '" + Problem + @"':'',
         '" + HLFileLocation + @"':''
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs	(revision 17395)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/AlgorithmConverter.cs	(revision 17395)
@@ -0,0 +1,29 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.JsonInterface.Converters {
+  public class AlgorithmConverter : ParameterizedItemConverter {
+    public override int Priority => 30;
+
+    public override Type ConvertableType => typeof(IAlgorithm);
+
+    public override void InjectData(IItem item, JsonItem data, IJsonItemConverter root) {
+      base.InjectData(item, data, root);
+      IAlgorithm algorithm = item as IAlgorithm;
+      JsonItem problemData = data.Children.Where(x => x.Name == algorithm.Problem.Name).First();
+      root.Inject(algorithm.Problem, problemData, root);
+
+    }
+
+    public override void Populate(IItem value, JsonItem item, IJsonItemConverter root) {
+      base.Populate(value, item, root);
+      IAlgorithm algorithm = value as IAlgorithm;
+      item.AddChilds(root.Extract(algorithm.Problem, root));
+    }
+  }
+}
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs	(revision 17394)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs	(revision 17395)
@@ -26,5 +26,5 @@
     
     public abstract void InjectData(IItem item, JsonItem data, IJsonItemConverter root);
-    public abstract void Populate(IItem value, JsonItem item, IJsonItemConverter root);
+    public abstract void Populate(IItem value, JsonItem item, IJsonItemConverter root); // TODO: populate?
 
     #region Helper
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/HeuristicLab.JsonInterface.csproj
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/HeuristicLab.JsonInterface.csproj	(revision 17394)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/HeuristicLab.JsonInterface.csproj	(revision 17395)
@@ -62,4 +62,5 @@
   <ItemGroup>
     <Compile Include="Constants.cs" />
+    <Compile Include="Converters\AlgorithmConverter.cs" />
     <Compile Include="Converters\RegressionProblemDataConverter.cs" />
     <Compile Include="Converters\ValueLookupParameterConverter.cs" />
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs	(revision 17394)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs	(revision 17395)
@@ -20,5 +20,5 @@
     }
     
-    public static string GenerateTemplate(IAlgorithm algorithm) {
+    public static string GenerateTemplate(IOptimizer optimizer) {
       // data container
       GenData genData = new GenData() {
@@ -28,5 +28,5 @@
 
       ProtoBufSerializer serializer = new ProtoBufSerializer();
-      serializer.Serialize(algorithm, @"C:\Workspace\template.hl");
+      serializer.Serialize(optimizer, @"C:\Workspace\template.hl");
       genData.Template[Constants.Metadata][Constants.HLFileLocation] = @"C:\Workspace\template.hl";
 
@@ -34,7 +34,5 @@
       // template and save it an JArray incl. all parameters of the JsonItem, 
       // which have parameters aswell
-      AddInstantiableIItem(Constants.Algorithm, algorithm, genData);
-      if (algorithm.Problem != null) // only when an problem exists
-        AddInstantiableIItem(Constants.Problem, algorithm.Problem, genData);
+      AddInstantiableIItem(Constants.Optimizer, optimizer, genData);
 
       // save the JArray with JsonItems (= IParameterizedItems)
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs	(revision 17394)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateInstantiator.cs	(revision 17395)
@@ -29,6 +29,6 @@
     /// <param name="templateFile">Template file (json), generated with JCGenerator.</param>
     /// <param name="configFile">Config file (json) for the template.</param>
-    /// <returns>confugrated IAlgorithm object</returns>
-    public static IAlgorithm Instantiate(string templateFile, string configFile = "") {
+    /// <returns>confugrated IOptimizer object</returns>
+    public static IOptimizer Instantiate(string templateFile, string configFile = "") {
       InstData instData = new InstData() {
         Objects = new Dictionary<string, JsonItem>()
@@ -41,11 +41,10 @@
 
       // extract metadata information
-      string algorithmName = instData.Template[Constants.Metadata][Constants.Algorithm].ToString();
-      string problemName = instData.Template[Constants.Metadata][Constants.Problem].ToString();
+      string optimizerName = instData.Template[Constants.Metadata][Constants.Optimizer].ToString();
       string hLFileLocation = instData.Template[Constants.Metadata][Constants.HLFileLocation].ToString();
 
       // deserialize hl file
       ProtoBufSerializer serializer = new ProtoBufSerializer();
-      IAlgorithm algorithm = (IAlgorithm)serializer.Deserialize(hLFileLocation);
+      IOptimizer optimizer = (IOptimizer)serializer.Deserialize(hLFileLocation);
 
       // collect all parameterizedItems from template
@@ -57,15 +56,10 @@
 
       // get algorthm data and object
-      JsonItem algorithmData = GetData(algorithmName, instData);
-
-      // get problem data and object
-      JsonItem problemData = GetData(problemName, instData);
+      JsonItem optimizerData = instData.Objects[optimizerName];
 
       // inject configuration
-      JsonItemConverter.Inject(algorithm, algorithmData);
-      if(algorithm.Problem != null)
-        JsonItemConverter.Inject(algorithm.Problem, problemData);
+      JsonItemConverter.Inject(optimizer, optimizerData);
 
-      return algorithm;
+      return optimizer;
     }
 
