Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab 3.3.sln
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab 3.3.sln	(revision 17228)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab 3.3.sln	(revision 17263)
@@ -1,6 +1,6 @@
 ﻿
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.16
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29009.5
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{96396439-A764-4022-A8D2-BE021449B8D1}"
@@ -471,4 +471,8 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.DataAnalysis.DecisionTrees-3.4", "HeuristicLab.Algorithms.DataAnalysis.DecisionTrees\3.4\HeuristicLab.Algorithms.DataAnalysis.DecisionTrees-3.4.csproj", "{541A53F3-E6A7-402F-91BB-D76041CDD9FD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Manufacture", "ParameterTest\HeuristicLab.Manufacture.csproj", "{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Heuristiclab.ConfigStarter", "Heuristiclab.ConfigStarter\Heuristiclab.ConfigStarter.csproj", "{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}"
 EndProject
 Global
@@ -2290,4 +2294,28 @@
 		{541A53F3-E6A7-402F-91BB-D76041CDD9FD}.Release|x86.ActiveCfg = Release|Any CPU
 		{541A53F3-E6A7-402F-91BB-D76041CDD9FD}.Release|x86.Build.0 = Release|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Debug|x64.Build.0 = Debug|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Debug|x86.Build.0 = Debug|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Release|x64.ActiveCfg = Release|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Release|x64.Build.0 = Release|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Release|x86.ActiveCfg = Release|Any CPU
+		{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Release|x86.Build.0 = Release|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x64.Build.0 = Debug|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x86.Build.0 = Debug|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x64.ActiveCfg = Release|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x64.Build.0 = Release|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x86.ActiveCfg = Release|Any CPU
+		{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/App.config
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/App.config	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/App.config	(revision 17263)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
+    </startup>
+</configuration>
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Extensions/IItemExtensions.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Extensions/IItemExtensions.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Extensions/IItemExtensions.cs	(revision 17263)
@@ -0,0 +1,14 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+
+namespace ParameterTest {
+  public static class IItemExtensions {
+    public static void SetWithParameterData(this IItem item, ParameterData data) {
+
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Extensions/ObjectExtensions.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Extensions/ObjectExtensions.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Extensions/ObjectExtensions.cs	(revision 17263)
@@ -0,0 +1,11 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ParameterTest {
+  public static class ObjectExtensions {
+    public static T Cast<T>(this object obj) => (T)obj;
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Extensions/TypeExtensions.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Extensions/TypeExtensions.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Extensions/TypeExtensions.cs	(revision 17263)
@@ -0,0 +1,43 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ParameterTest {
+  public static class TypeExtensions {
+    public static bool IsEqualTo(this Type type, Type other) {
+      if (other == null) throw new ArgumentNullException("other");
+      if (type == other) return true;
+      if (other.IsInterface && other.IsGenericType)
+        return
+          type.IsAssignableFrom(other) ||
+          type.GetInterfaces()
+            .Where(i => i.IsGenericType)
+            .Any(i => i.GetGenericTypeDefinition() == other);
+      else if (other.IsInterface) {
+        /*
+        Type baseType = type;
+        while (baseType != typeof(object)) {
+          var interfaces = baseType.GetInterfaces();
+          var minimalInterfaces = interfaces.Except(interfaces.SelectMany(i => i.GetInterfaces()));
+          if (baseType == other && minimalInterfaces.Any(i => i == other))
+            return true;
+          baseType = baseType.BaseType;
+        }
+        */
+        return type.GetInterfaces().Any(i => i == other);
+      }
+        
+      else if (other.IsGenericType) {
+        Type baseType = type;
+        while (baseType != typeof(object)) {
+          if (baseType.IsGenericType && baseType.GetGenericTypeDefinition() == other)
+            return true;
+          baseType = baseType.BaseType;
+        }
+      }
+      return type.IsAssignableFrom(other);
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/HeuristicLab.Manufacture.csproj
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/HeuristicLab.Manufacture.csproj	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/HeuristicLab.Manufacture.csproj	(revision 17263)
@@ -0,0 +1,225 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>ParameterTest</RootNamespace>
+    <AssemblyName>ParameterTest</AssemblyName>
+    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <Deterministic>true</Deterministic>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HEAL.Attic, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\bin\HEAL.Attic.dll</HintPath>
+    </Reference>
+    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Extensions\IItemExtensions.cs" />
+    <Compile Include="Extensions\ObjectExtensions.cs" />
+    <Compile Include="Extensions\TypeExtensions.cs" />
+    <Compile Include="JCGenerator.cs" />
+    <Compile Include="JCInstantiator.cs" />
+    <Compile Include="ParameterTransformer\ConstrainedValueParameterTransformer.cs" />
+    <Compile Include="ParameterTransformer\ParameterBaseTransformer.cs" />
+    <Compile Include="ParameterTransformer\ValueParameterTransformer.cs" />
+    <Compile Include="TypeTransformer\EnumTypeTransformer.cs" />
+    <Compile Include="TypeTransformer\StringValueTransformer.cs" />
+    <Compile Include="TypeTransformer\ValueTypeArrayTransformer.cs" />
+    <Compile Include="TypeTransformer\BaseTransformer.cs" />
+    <Compile Include="TypeTransformer\ValueTypeMatrixTransformer.cs" />
+    <Compile Include="TypeTransformer\ValueTypeValueTransformer.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Template.cs" />
+    <Compile Include="Interfaces\ITypeTransformer.cs" />
+    <Compile Include="Transformer.cs" />
+    <Compile Include="Util.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.ALPS\3.3\HeuristicLab.Algorithms.ALPS-3.3.csproj">
+      <Project>{59f354cb-fe13-4253-aed2-ad86372bec27}</Project>
+      <Name>HeuristicLab.Algorithms.ALPS-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.Benchmarks\3.3\HeuristicLab.Algorithms.Benchmarks-3.3.csproj">
+      <Project>{068c70a7-8caf-4ab6-8721-4564d62292bc}</Project>
+      <Name>HeuristicLab.Algorithms.Benchmarks-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.CMAEvolutionStrategy\3.4\HeuristicLab.Algorithms.CMAEvolutionStrategy-3.4.csproj">
+      <Project>{291010e4-2f4e-4d29-a795-753cff293fdb}</Project>
+      <Name>HeuristicLab.Algorithms.CMAEvolutionStrategy-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.DataAnalysis.DecisionTrees\3.4\HeuristicLab.Algorithms.DataAnalysis.DecisionTrees-3.4.csproj">
+      <Project>{541a53f3-e6a7-402f-91bb-d76041cdd9fd}</Project>
+      <Name>HeuristicLab.Algorithms.DataAnalysis.DecisionTrees-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.DataAnalysis.Glmnet\3.4\HeuristicLab.Algorithms.DataAnalysis.Glmnet-3.4.csproj">
+      <Project>{4c7f6d8a-b279-4898-acd6-7be39111def9}</Project>
+      <Name>HeuristicLab.Algorithms.DataAnalysis.Glmnet-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.EvolutionStrategy\3.3\HeuristicLab.Algorithms.EvolutionStrategy-3.3.csproj">
+      <Project>{e0b45023-cb84-48a1-a1b7-8295b64b7bad}</Project>
+      <Name>HeuristicLab.Algorithms.EvolutionStrategy-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.GeneticAlgorithm\3.3\HeuristicLab.Algorithms.GeneticAlgorithm-3.3.csproj">
+      <Project>{a51da44f-cb35-4f6f-99f5-2a2e904ab93b}</Project>
+      <Name>HeuristicLab.Algorithms.GeneticAlgorithm-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.GradientDescent\3.3\HeuristicLab.Algorithms.GradientDescent-3.3.csproj">
+      <Project>{1256b945-eea9-4be4-9880-76b5b113f089}</Project>
+      <Name>HeuristicLab.Algorithms.GradientDescent-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.LocalSearch\3.3\HeuristicLab.Algorithms.LocalSearch-3.3.csproj">
+      <Project>{4ae3fc69-c575-42d2-bc46-0fad5850efc5}</Project>
+      <Name>HeuristicLab.Algorithms.LocalSearch-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.MOCMAEvolutionStrategy\3.3\HeuristicLab.Algorithms.MOCMAEvolutionStrategy-3.3.csproj">
+      <Project>{0e2e224f-e9b2-41f3-b510-09183eeba2af}</Project>
+      <Name>HeuristicLab.Algorithms.MOCMAEvolutionStrategy-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.NSGA2\3.3\HeuristicLab.Algorithms.NSGA2-3.3.csproj">
+      <Project>{15452b9f-a436-4139-8ee7-da72fb8d3664}</Project>
+      <Name>HeuristicLab.Algorithms.NSGA2-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy\3.3\HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3.csproj">
+      <Project>{1d41eae6-cc79-41d4-858c-589c4db5e50d}</Project>
+      <Name>HeuristicLab.Algorithms.OffspringSelectionEvolutionStrategy-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm\3.3\HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm-3.3.csproj">
+      <Project>{f409dd9e-1e9c-4eb1-aa3a-9f6e987c6e58}</Project>
+      <Name>HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.ParameterlessPopulationPyramid\3.3\HeuristicLab.Algorithms.ParameterlessPopulationPyramid-3.3.csproj">
+      <Project>{9319c447-8183-4dbc-8145-0e3cf98084cc}</Project>
+      <Name>HeuristicLab.Algorithms.ParameterlessPopulationPyramid-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.ParticleSwarmOptimization\3.3\HeuristicLab.Algorithms.ParticleSwarmOptimization-3.3.csproj">
+      <Project>{2c429157-9c34-4dd3-9d5f-b444b751e39a}</Project>
+      <Name>HeuristicLab.Algorithms.ParticleSwarmOptimization-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.RandomSearch\3.3\HeuristicLab.Algorithms.RandomSearch-3.3.csproj">
+      <Project>{4a15dc1a-51ee-4cb7-ac05-f5afddece1b1}</Project>
+      <Name>HeuristicLab.Algorithms.RandomSearch-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.RAPGA\3.3\HeuristicLab.Algorithms.RAPGA-3.3.csproj">
+      <Project>{b03c4e41-1d01-4c60-b0f4-dbb257d98ca8}</Project>
+      <Name>HeuristicLab.Algorithms.RAPGA-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.ScatterSearch\3.3\HeuristicLab.Algorithms.ScatterSearch-3.3.csproj">
+      <Project>{5fee5db4-7fd9-4cbd-bec2-3fee17b31a94}</Project>
+      <Name>HeuristicLab.Algorithms.ScatterSearch-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.SimulatedAnnealing\3.3\HeuristicLab.Algorithms.SimulatedAnnealing-3.3.csproj">
+      <Project>{96e5ed5b-187d-4012-9cda-d85cdad38342}</Project>
+      <Name>HeuristicLab.Algorithms.SimulatedAnnealing-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.TabuSearch\3.3\HeuristicLab.Algorithms.TabuSearch-3.3.csproj">
+      <Project>{d58a232d-04ba-4186-b73e-0ec86fd31abe}</Project>
+      <Name>HeuristicLab.Algorithms.TabuSearch-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.VariableNeighborhoodSearch\3.3\HeuristicLab.Algorithms.VariableNeighborhoodSearch-3.3.csproj">
+      <Project>{e4cfb0c3-0589-4893-b38e-8bedf885c765}</Project>
+      <Name>HeuristicLab.Algorithms.VariableNeighborhoodSearch-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Analysis\3.3\HeuristicLab.Analysis-3.3.csproj">
+      <Project>{887425B4-4348-49ED-A457-B7D2C26DDBF9}</Project>
+      <Name>HeuristicLab.Analysis-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Encodings.PermutationEncoding\3.3\HeuristicLab.Encodings.PermutationEncoding-3.3.csproj">
+      <Project>{DBECB8B0-B166-4133-BAF1-ED67C3FD7FCA}</Project>
+      <Name>HeuristicLab.Encodings.PermutationEncoding-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">
+      <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>
+      <Name>HeuristicLab.Operators-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
+      <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
+      <Name>HeuristicLab.Optimization-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
+      <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>
+      <Name>HeuristicLab.Parameters-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
+      <Project>{94186a6a-5176-4402-ae83-886557b53cca}</Project>
+      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
+      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
+      <Name>HeuristicLab.Problems.Instances-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Problems.Knapsack\3.3\HeuristicLab.Problems.Knapsack-3.3.csproj">
+      <Project>{E10F395F-C8A6-48AD-B470-9AA7A1F43809}</Project>
+      <Name>HeuristicLab.Problems.Knapsack-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Problems.TravelingSalesman\3.3\HeuristicLab.Problems.TravelingSalesman-3.3.csproj">
+      <Project>{d767c38d-8014-46b0-9a32-03a3aecce34a}</Project>
+      <Name>HeuristicLab.Problems.TravelingSalesman-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.Problems.VehicleRouting\3.4\HeuristicLab.Problems.VehicleRouting-3.4.csproj">
+      <Project>{B94FFB82-43D4-40AB-9980-B03470ADF221}</Project>
+      <Name>HeuristicLab.Problems.VehicleRouting-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\HeuristicLab.SequentialEngine\3.3\HeuristicLab.SequentialEngine-3.3.csproj">
+      <Project>{dc3d7072-7999-4719-b65d-3997744d5dc1}</Project>
+      <Name>HeuristicLab.SequentialEngine-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Interfaces/ITypeTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Interfaces/ITypeTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Interfaces/ITypeTransformer.cs	(revision 17263)
@@ -0,0 +1,17 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using Newtonsoft.Json.Linq;
+
+namespace ParameterTest {
+  public interface ITypeTransformer {
+    ParameterData ToData(IItem value);
+    //IItem FromData(ParameterData obj, Type targetType);
+
+    void SetValue(IItem item, ParameterData obj);
+    //void SetParameter(ParameterData data, IParameter parameter, Type )
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/JCGenerator.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/JCGenerator.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/JCGenerator.cs	(revision 17263)
@@ -0,0 +1,334 @@
+﻿using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using HeuristicLab.Algorithms.GeneticAlgorithm;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Problems.TravelingSalesman;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace ParameterTest {
+  public class JCGenerator {
+
+    private JObject template = JObject.Parse(@"{
+      'Metadata': {},
+      'FreeParameters': {},
+      'StaticParameters': {
+        'Algorithm':{},
+        'Problem':{},
+        'TypeList':{}
+      }
+    }");
+
+    
+    private Dictionary<string, string> TypeList = new Dictionary<string, string>();
+
+    public string GenerateTemplate(IAlgorithm algorithm, IProblem problem) {
+      algorithm.Problem = problem;
+      foreach(var x in BJCO(algorithm)) {
+        Console.WriteLine(x.ToString());
+      }
+      /*
+      JCObject algorithmData = BuildJCObject(algorithm);
+      JCObject problemData = BuildJCObject(problem);
+
+      ProcessStaticParameters(algorithmData, problemData);
+      ProcessFreeParameters(algorithmData, problemData);
+      ProcessTypeList();
+
+      return template.ToString(Formatting.Indented);
+      */
+      return "";
+    }
+
+    #region Helper
+    private JCObject BuildJCObject(IItem item) {
+      JCObject obj = new JCObject();
+      obj.Name = item.ItemName;
+      obj.Parameters = BuildJCParameter(item).Parameters;
+      return obj;
+    }
+
+    private IList<JCObject> BJCO(IParameterizedItem item) {
+      List<JCObject> list = new List<JCObject>();
+      JCObject obj = new JCObject();
+      obj.Name = item.ItemName;
+      obj.StaticParameters = new List<ParameterData>();
+      obj.FreeParameters = new List<ParameterData>();
+
+      list.Add(obj);
+
+      foreach (var param in item.Parameters) {
+        if(!param.Hidden) {
+          ParameterData newParam = new ParameterData();
+          newParam.Name = param.Name;
+          if (!Util.IsTypeOf(param, typeof(ILookupParameter<>))) {
+            if (param.ActualValue is IntValue) {
+              SetParameterValueStats(newParam, ((IntValue)param.ActualValue).Value, 0, int.MaxValue);
+            } else if (param.ActualValue is BoolValue) {
+              SetParameterValueStats(newParam, ((BoolValue)param.ActualValue).Value, false, true);
+            } else if (param.ActualValue is PercentValue) {
+              SetParameterValueStats(newParam, ((PercentValue)param.ActualValue).Value, 0d, 1d);
+            } else if (param.ActualValue is DoubleValue) {
+              SetParameterValueStats(newParam, ((DoubleValue)param.ActualValue).Value, 0d, double.MaxValue);
+            } else if (Util.IsTypeOf(param.ActualValue, typeof(EnumValue<>))) {
+              var enumType = ((dynamic)param.ActualValue).Value.GetType();
+              SetParameterValueStats(newParam,
+                Enum.GetName(enumType, ((dynamic)param.ActualValue).Value),
+                Enum.GetNames(enumType));
+            } else if (param.ActualValue is StringValue) {
+              SetParameterValueStats(newParam, ((StringValue)param.ActualValue).Value);
+            } else if (Util.IsTypeOf(param.ActualValue, typeof(ValueTypeMatrix<>))) {
+              SetParameterValueStats(newParam, ((dynamic)param.ActualValue).CloneAsMatrix());
+            } else if (Util.IsTypeOf(param.ActualValue, typeof(ValueTypeArray<>))) {
+              SetParameterValueStats(newParam, ((dynamic)param.ActualValue).CloneAsArray());
+            } else {
+              AddType(param.ActualValue);
+              //newParam.Path = newParam.Path.Substring(0, newParam.Path.Length - 6);
+              SetParameterValueStats(newParam, param.ActualValue?.GetType().Name, ExtractPossibleValues(item, param.DataType));
+            }
+          }
+
+
+          obj.StaticParameters.Add(newParam);
+
+          if (param is IParameterizedItem) {
+            list.AddRange(BJCO((IParameterizedItem)param));
+          }
+          if (Util.IsTypeOf(param, typeof(IConstrainedValueParameter<>))) {
+            foreach (var validValue in ((dynamic)param).ValidValues) {
+              if (newParam.Range == null) newParam.Range = new List<object>();
+              object v = (object)validValue;
+              try {
+                if (!newParam.Range.Contains(v))
+                  newParam.Range.Add(v);
+              } catch { }
+              if (validValue is IParameterizedItem) {
+                list.AddRange(BJCO((IParameterizedItem)validValue));
+              }
+            }
+          }
+        }
+      }
+      return list;
+    }
+
+
+
+    private IEnumerable<IParameterizedItem> GetIParameterItems(IParameterizedItem item) {
+      List<IParameterizedItem> items = new List<IParameterizedItem>();
+      items.Add(item);
+      foreach(var param in item.Parameters) {
+        if(param is IParameterizedItem) {
+          items.AddRange(GetIParameterItems((IParameterizedItem)param));
+        }
+        if(Util.IsTypeOf(param, typeof(IConstrainedValueParameter<>))){
+          foreach(var validValue in ((dynamic)param).ValidValues) {
+            if(validValue is IParameterizedItem) {
+              items.AddRange(GetIParameterItems((IParameterizedItem)validValue));
+            }
+          }
+        }
+      }
+      return items;
+    }
+
+    private JsonSerializer Settings() => new JsonSerializer() {
+      TypeNameHandling = TypeNameHandling.None,
+      NullValueHandling = NullValueHandling.Ignore
+    };
+
+    private void ProcessFreeParameters(JCObject algorithmData, JCObject problemData) {
+      JObject freeParams = new JObject();
+      JToken alg = JToken.FromObject(algorithmData.Parameters, Settings());
+      JToken prob = JToken.FromObject(problemData.Parameters, Settings());
+      
+      IList<JObject> objToRemove = new List<JObject>();
+      TransformNodes(x => {
+        var p = x.ToObject<ParameterData>();
+        if (p.Default == null || (p.Default != null && p.Default.GetType() == typeof(string) && p.Range == null)) {
+          objToRemove.Add(x);
+        } else {
+          x.Property("Path")?.Remove();
+          x.Property("Type")?.Remove();
+        }
+      },alg, prob);
+      foreach (var x in objToRemove) x.Remove();
+
+      freeParams.Add(algorithmData.Name, alg);
+      freeParams.Add(problemData.Name, prob);
+      template["FreeParameters"] = freeParams;
+    }
+
+    private void ProcessStaticParameters(JCObject algorithmData, JCObject problemData) {
+      template["StaticParameters"]["Algorithm"] = JObject.FromObject(algorithmData, Settings());
+      template["StaticParameters"]["Problem"] = JObject.FromObject(problemData, Settings());
+      TransformNodes(x => x.Property("Range")?.Remove(),
+        template["StaticParameters"]["Algorithm"]["Parameters"],
+        template["StaticParameters"]["Problem"]["Parameters"]);
+    }
+
+    private void ProcessTypeList() {
+      template["StaticParameters"]["TypeList"] = JObject.FromObject(TypeList);
+    }
+
+    private void TransformNodes(Action<JObject> action, params JToken[] tokens) {
+      foreach(JObject obj in tokens.SelectMany(x => x.Children<JObject>())) {
+        action(obj);
+      }
+    }
+    #endregion
+
+    
+    private ParameterData BuildJCParameter(IItem item, string startPath = "") {
+      ParameterData obj = new ParameterData();
+      obj.Name = item.ItemName;
+      obj.Path = startPath;
+
+      AddType(item, obj.Name);
+
+      try {
+        ExtractParameterInfo(item, obj);
+      } catch { }
+      ExtractOperatorInfo(item, obj);
+      return obj;
+    }
+
+    private bool ProcessValueTypeParameters(ParameterData jCParameter, IParameter parameter) {
+      if (parameter.ActualValue is IntValue)
+        SetParameterValueStats(jCParameter, 
+          ((IntValue)parameter.ActualValue).Value, 
+          0, int.MaxValue);
+      else if (parameter.ActualValue is BoolValue)
+        SetParameterValueStats(jCParameter, 
+          ((BoolValue)parameter.ActualValue).Value, 
+          false, true);
+      else if (parameter.ActualValue is PercentValue)
+        SetParameterValueStats(jCParameter, 
+          ((PercentValue)parameter.ActualValue).Value, 
+          0d, 1d);
+      else if (parameter.ActualValue is DoubleValue)
+        SetParameterValueStats(jCParameter, 
+          ((DoubleValue)parameter.ActualValue).Value, 
+          0d, double.MaxValue);
+      else return false;
+      return true;
+    }
+
+    private bool ProcessEnumTypeParameters(ParameterData jCParameter, IParameter parameter) {
+      if (Util.IsTypeOf(parameter.ActualValue, typeof(EnumValue<>))) {
+        var enumType = ((dynamic)parameter.ActualValue).Value.GetType();
+        SetParameterValueStats(jCParameter,
+          Enum.GetName(enumType, ((dynamic)parameter.ActualValue).Value),
+          Enum.GetNames(enumType));
+      } else return false;
+      return true;
+    }
+
+    private bool ProcessMatrixTypeParameters(ParameterData jCParameter, IParameter parameter) {
+      if (Util.IsTypeOf(parameter.ActualValue, typeof(ValueTypeMatrix<>))) {
+        SetParameterValueStats(jCParameter, ((dynamic)parameter.ActualValue).CloneAsMatrix());
+      } else return false;
+      return true;
+    }
+
+    private bool ProcessArrayTypeParameters(ParameterData jCParameter, IParameter parameter) {
+      if (Util.IsTypeOf(parameter.ActualValue, typeof(ValueTypeArray<>))) {
+        SetParameterValueStats(jCParameter, ((dynamic)parameter.ActualValue).CloneAsArray());
+      } else return false;
+      return true;
+    }
+
+    private void SetParameterValueStats(ParameterData parameter, object value, params object[] range) {
+      parameter.Default = value;
+      parameter.Range = range.Length == 0 ? null : range;
+    }
+
+    
+    private void ExtractParameterInfo(IItem item, ParameterData obj) {
+      if (item is IParameterizedItem) {
+        foreach (var param in ((IParameterizedItem)item).Parameters) {
+          if (!param.Hidden) {
+
+            ParameterData newParam = BuildJCParameter(param);
+            newParam.Name = param.Name;
+            var tmpType = param.GetType();
+            newParam.Path = (obj.Path != "" ? obj.Path + "." : "") + param.Name + ".Value.Value";
+
+            if (obj.Parameters == null)
+              obj.Parameters = new List<ParameterData>();
+            obj.Parameters.Add(newParam);
+
+
+            if (param.ActualValue is IntValue) {
+              SetParameterValueStats(newParam, ((IntValue)param.ActualValue).Value, 0, int.MaxValue);
+            } else if (param.ActualValue is BoolValue) {
+              SetParameterValueStats(newParam, ((BoolValue)param.ActualValue).Value, false, true);
+            } else if (param.ActualValue is PercentValue) {
+              SetParameterValueStats(newParam, ((PercentValue)param.ActualValue).Value, 0d, 1d);
+            } else if (param.ActualValue is DoubleValue) {
+              SetParameterValueStats(newParam, ((DoubleValue)param.ActualValue).Value, 0d, double.MaxValue);
+            } else if (Util.IsTypeOf(param.ActualValue, typeof(EnumValue<>))) {
+              var enumType = ((dynamic)param.ActualValue).Value.GetType();
+              SetParameterValueStats(newParam, 
+                Enum.GetName(enumType, ((dynamic)param.ActualValue).Value), 
+                Enum.GetNames(enumType));
+            } else if (param.ActualValue is StringValue) {
+              SetParameterValueStats(newParam, ((StringValue)param.ActualValue).Value);
+            } else if (Util.IsTypeOf(param.ActualValue, typeof(ValueTypeMatrix<>))) {
+              SetParameterValueStats(newParam, ((dynamic)param.ActualValue).CloneAsMatrix());
+            } else if (Util.IsTypeOf(param.ActualValue, typeof(ValueTypeArray<>))) {
+              SetParameterValueStats(newParam, ((dynamic)param.ActualValue).CloneAsArray());
+            } else {
+              AddType(param.ActualValue);
+              newParam.Path = newParam.Path.Substring(0, newParam.Path.Length - 6);
+              SetParameterValueStats(newParam, param.ActualValue?.GetType().Name, ExtractPossibleValues(item, param.DataType));
+            }
+          }
+        }
+      }
+    }
+
+    private object[] ExtractPossibleValues(IItem item, Type paramType) {
+      IList<object> list = new List<object>();
+      if (item is Algorithm) {
+        IEnumerable<IItem> items = ((Algorithm)item).Problem.Operators.Where(x => paramType.IsAssignableFrom(x.GetType()));
+        foreach (var op in items) {
+          string name = op.GetType().Name;
+          list.Add(name);
+          AddType(op, name);
+        }
+      }
+      return list.ToArray();
+    }
+
+    private void AddType(object obj, string key = null) {
+      if (obj != null) {
+        if (key == null) key = obj.GetType().Name;
+        try {
+          if (!TypeList.ContainsKey(key))
+            TypeList.Add(key, obj.GetType().AssemblyQualifiedName);
+        } catch { }
+      }
+    }
+
+    private void ExtractOperatorInfo(IItem item, ParameterData obj) {
+      if (item is IMultiOperator) {
+        foreach (var op in ((IMultiOperator)item).Operators) {
+          ParameterData newOperator = BuildJCParameter(op);
+          if (obj.Operators == null)
+            obj.Operators = new List<ParameterData>();
+          obj.Operators.Add(newOperator);
+          newOperator.Name = op.GetType().Name;
+
+          newOperator.Path = obj.Path + ".Operators." + op.Name;
+          MultiPermutationManipulator manipulator = new MultiPermutationManipulator();
+        }
+      }
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/JCInstantiator.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/JCInstantiator.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/JCInstantiator.cs	(revision 17263)
@@ -0,0 +1,169 @@
+﻿using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Optimization;
+using Newtonsoft.Json.Linq;
+
+namespace ParameterTest {
+
+  
+  public class JCInstantiator {
+    //private Dictionary<string, JCProperty> Properties = new Dictionary<string, JCProperty>();
+    private Dictionary<string, string> TypeList = new Dictionary<string, string>();
+
+    #region Constants
+    private const string SParametersID = "StaticParameters";
+    private const string FParametersID = "FreeParameters";
+    private const string TListID = "TypeList";
+    private const string AlgorithmID = "Algorithm";
+    private const string ProblemID = "Problem";
+    #endregion
+
+    public IAlgorithm Instantiate(string configFile) {
+      JObject config = JObject.Parse(File.ReadAllText(configFile));
+
+      TypeList = config[SParametersID][TListID].ToObject<Dictionary<string, string>>();
+
+      JCObject algorithmData = config[SParametersID][AlgorithmID].ToObject<JCObject>();
+      JCObject problemData = config[SParametersID][ProblemID].ToObject<JCObject>();
+
+      IAlgorithm algorithm = CreateTypeListObject<IAlgorithm>(algorithmData.Name);
+      algorithm.Problem = CreateTypeListObject<IProblem>(problemData.Name);
+
+      ProcessParameters(algorithmData, algorithm);
+      ProcessParameters(problemData, algorithm.Problem);
+
+      ParameterData[] freeAlgorithmParameters = config[FParametersID][algorithmData.Name].ToObject<ParameterData[]>();
+      ParameterData[] freeProblemParameters = config[FParametersID][problemData.Name].ToObject<ParameterData[]>();
+      UseFreeParams(algorithmData.Name, freeAlgorithmParameters, algorithm);
+      UseFreeParams(problemData.Name, freeProblemParameters, algorithm.Problem);
+      return algorithm;
+    }
+
+    private T CreateTypeListObject<T>(string key) {
+      if (TypeList.TryGetValue(key, out string value)) {
+        Type type = Type.GetType(value);
+        return (T)Activator.CreateInstance(type);
+      } else throw new TypeLoadException($"The type '{key}' does not exists in TypeList.");
+    }
+
+    private void ProcessParameters(JCObject obj, IParameterizedItem instance) {
+      foreach (var param in obj.Parameters)
+        if (param.Default != null)
+          SetParameterValue(FindPropertyByKey(instance, param.Name), param.Default);
+    }
+
+    private void SetParameterValue (IParameter parameter, object value) {
+      if (Util.IsTypeOf(parameter, typeof(IFixedValueParameter<>))) return;
+      if (Util.IsTypeOf(parameter, typeof(IConstrainedValueParameter<>)))
+        SetCVParameter(parameter, value);
+      else if (Util.IsTypeOf(parameter.ActualValue, typeof(ValueTypeMatrix<>)))
+        SetVTMatrix(parameter, value);
+      else if (Util.IsTypeOf(parameter.ActualValue, typeof(ValueTypeArray<>)))
+        SetVTArray(parameter, value);
+      else if (Util.IsTypeOf(parameter.ActualValue, typeof(EnumValue<>)))
+        SetEnum(parameter, value);
+      else if (!(value is string))
+        SetValue(parameter, value);
+      else
+        SetNewInstance(parameter, value);
+    }
+    #region Helper for SetParameterValue
+    private void SetCVParameter(IParameter parameter, object value) {
+      foreach (var x in ((dynamic)parameter).ValidValues)
+        if (x.GetType().Name == (string)value)
+          parameter.ActualValue = x;
+    }
+
+    private void SetVTMatrix(IParameter parameter, object value) {
+      var matrixType = ((dynamic)parameter.ActualValue).CloneAsMatrix().GetType();
+      var data = ((JToken)value).ToObject(matrixType);
+      parameter.ActualValue = (IItem)Activator.CreateInstance(parameter.ActualValue.GetType(), new object[] { data });
+    }
+
+    private void SetVTArray(IParameter parameter, object value) {
+      var arrayType = ((dynamic)parameter.ActualValue).CloneAsArray().GetType();
+      var data = ((JToken)value).ToObject(arrayType);
+      parameter.ActualValue = (IItem)Activator.CreateInstance(parameter.ActualValue.GetType(), new object[] { data });
+    }
+
+    private void SetEnum(IParameter parameter, object value) {
+      var enumType = ((dynamic)parameter.ActualValue).Value.GetType();
+      var data = Enum.Parse(enumType, (string)value);
+      ((dynamic)parameter.ActualValue).Value = data;
+    }
+
+    private void SetValue(IParameter parameter, object value) {
+      var x = (dynamic)parameter.ActualValue;
+      if (value is IConvertible)
+        x.Value = Convert.ChangeType(value, x.Value.GetType());
+      else
+        x.Value = value;
+    }
+
+    private void SetNewInstance(IParameter parameter, object value) => 
+      parameter.ActualValue = (IItem)Activator.CreateInstance(Type.GetType(TypeList[(string)value]));
+    #endregion
+
+    private IParameter FindPropertyByKey(IParameterizedItem item, string key) {
+      if (item.Parameters.TryGetValue(key, out IParameter param))
+        return param;
+      else throw new KeyNotFoundException();
+    }
+
+
+    /*
+    JCProperty property = FindPropertyByPath(instance, param.Path);
+    property.Value = param.Default;
+    Properties.Add(obj.Name + "." + param.Name, property); 
+    
+    private JCProperty FindPropertyByPath(object start, string path) {
+      string[] parts = path.Split('.');
+      object instance = start;
+      for (int i = 0; i < parts.Length - 1; ++i) {
+        if (parts[i].StartsWith("Parameters['")) {
+          IParameterizedItem pItem = (IParameterizedItem)instance;
+          string tmp = parts[i].Replace("Parameters['", "").Replace("']", "");
+          if (pItem.Parameters.ContainsKey(tmp))
+            instance = pItem.Parameters[tmp];
+        } else {
+          PropertyInfo propInfo = instance.GetType().GetProperty(parts[i]);
+          instance = propInfo.GetValue(instance);
+        }
+      }
+      return new JCProperty(instance.GetType().GetProperty(parts[parts.Length - 1]), instance, TypeList);
+    }
+    */
+    private bool IsInRangeList(IEnumerable<object> list, object value) {
+      foreach (var x in list)
+        if (x.Equals(value)) return true;
+      return false;
+    }
+
+    private void UseFreeParams(string root, ParameterData[] parameters, IParameterizedItem instance) {
+      foreach (var param in parameters) {
+        string key = $"{root}.{param.Name}";
+        if((param.Range == null && param.Default != null) ||
+          (param.Range != null && IsInRangeList(param.Range, param.Default)) ||
+          IsInNumericRange<long>(param.Default, param.Range[0], param.Range[1]) ||
+          IsInNumericRange<double>(param.Default, param.Range[0], param.Range[1]))
+          SetParameterValue(FindPropertyByKey(instance, param.Name), param.Default);
+        //Properties[key].Value = param.Default;
+        else
+          throw new ArgumentOutOfRangeException(key);
+      }
+    }
+
+    private bool IsInNumericRange<T>(object value, object min, object max) where T : IComparable =>
+      (value != null && min != null && max != null && value is T && min is T && max is T &&
+        (((T)min).CompareTo(value) == -1 || ((T)min).CompareTo(value) == 0) && 
+        (((T)max).CompareTo(value) ==  1 || ((T)max).CompareTo(value) == 0));
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/ParameterTransformer/ConstrainedValueParameterTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/ParameterTransformer/ConstrainedValueParameterTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/ParameterTransformer/ConstrainedValueParameterTransformer.cs	(revision 17263)
@@ -0,0 +1,16 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+
+namespace ParameterTest.ParameterTransformer {
+  public class ConstrainedValueParameterTransformer : ParameterBaseTransformer {
+    public override void SetValue(IParameter parameter, ParameterData data) {
+      foreach (var x in parameter.Cast<dynamic>().ValidValues)
+        if (x.GetType().Name == CastValue<string>(data.Default))
+          parameter.ActualValue = x;
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/ParameterTransformer/ParameterBaseTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/ParameterTransformer/ParameterBaseTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/ParameterTransformer/ParameterBaseTransformer.cs	(revision 17263)
@@ -0,0 +1,20 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+
+namespace ParameterTest {
+  public abstract class ParameterBaseTransformer : BaseTransformer {
+    public override IItem FromData(ParameterData obj, Type targetType) {
+      throw new NotImplementedException();
+    }
+
+
+
+    public override void SetValue(IItem item, ParameterData data) => SetValue(item.Cast<IParameter>(), data);
+
+    public abstract void SetValue(IParameter parameter, ParameterData data);
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/ParameterTransformer/ValueParameterTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/ParameterTransformer/ValueParameterTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/ParameterTransformer/ValueParameterTransformer.cs	(revision 17263)
@@ -0,0 +1,15 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+
+namespace ParameterTest {
+  public class ValueParameterTransformer : ParameterBaseTransformer {
+
+    public override void SetValue(IParameter parameter, ParameterData data) => 
+      Transformer.SetValue(parameter.ActualValue, data);
+
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Program.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Program.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Program.cs	(revision 17263)
@@ -0,0 +1,48 @@
+﻿using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Algorithms.ALPS;
+using HeuristicLab.Algorithms.GeneticAlgorithm;
+using HeuristicLab.Algorithms.LocalSearch;
+using HeuristicLab.Algorithms.TabuSearch;
+using HeuristicLab.Analysis;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Optimization;
+using HeuristicLab.Parameters;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.Knapsack;
+using HeuristicLab.Problems.TravelingSalesman;
+using HeuristicLab.Problems.VehicleRouting;
+using HeuristicLab.SequentialEngine;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Serialization;
+
+
+namespace ParameterTest {
+  
+  public class Program {
+    static void Main(string[] args) {
+      //GeneticAlgorithm ga = new GeneticAlgorithm();
+      GeneticAlgorithm alg = new GeneticAlgorithm();
+      TravelingSalesmanProblem tsp = new TravelingSalesmanProblem();
+
+      JCGenerator gen = new JCGenerator();
+      File.WriteAllText(@"C:\Workspace\TemplateProto9.json", gen.GenerateTemplate(alg, tsp));
+      
+      JCInstantiator configurator = new JCInstantiator();
+      //configurator.Instantiate(@"C:\Workspace\TemplateProto9.json");
+      //Configure(@"C:\Workspace\TemplateProto9.json");
+      //Console.WriteLine(Optimizer);
+
+      Console.ReadLine();
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Properties/AssemblyInfo.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Properties/AssemblyInfo.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Properties/AssemblyInfo.cs	(revision 17263)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ParameterTest")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ParameterTest")]
+[assembly: AssemblyCopyright("Copyright ©  2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components.  If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("0e3aab5e-f152-44e0-a054-4d9a83ecee08")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Template.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Template.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Template.cs	(revision 17263)
@@ -0,0 +1,52 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using Newtonsoft.Json;
+
+namespace ParameterTest {   
+  public class JCObject {
+    public string Name { get; set; }
+    public IList<ParameterData> Parameters { get; set; }
+    public IList<ParameterData> FreeParameters { get; set; }
+    public IList<ParameterData> StaticParameters { get; set; }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append($"{Name}: [");
+      foreach(var x in StaticParameters) {
+        sb.Append(x.ToString());
+      }
+      sb.Append($"\n]");
+      return sb.ToString();
+    }
+  }
+
+  public class ParameterData {
+    public string Name { get; set; }
+    [JsonIgnore]
+    public string Type { get; set; }
+    public object Default { get; set; }
+    //[JsonIgnore]
+    public string Path { get; set; }
+    public IList<object> Range { get; set; }
+    public IList<ParameterData> Parameters { get; set; }
+    public IList<ParameterData> Operators { get; set; }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append($"\n{Name}, {Default}, Range[");
+      if(Range != null) {
+        foreach (var x in Range) {
+          sb.Append(x.ToString() + ", ");
+        }
+      }
+      sb.Append($"],");
+      return sb.ToString();
+    }
+  }
+
+
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Transformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Transformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Transformer.cs	(revision 17263)
@@ -0,0 +1,53 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace ParameterTest {
+  public static class Transformer {
+    private static IDictionary<Type, ITypeTransformer> transformers = new Dictionary<Type, ITypeTransformer>();
+    
+    public static void Register(Type type, ITypeTransformer transformer) {
+      if(!transformers.ContainsKey(type))
+        transformers.Add(type, transformer);
+    }
+
+
+    public static void Register<T>(ITypeTransformer transformer) => Register(typeof(T), transformer);
+
+    public static ITypeTransformer Get(Type type) {
+      foreach (var x in transformers) {
+        if (type.IsEqualTo(x.Key)) return x.Value;
+      }
+      return null;
+    }
+
+    internal static void SetValue(IItem item, ParameterData data) {
+      Get(item.GetType()).SetValue(item, data);
+    }
+
+
+    static Transformer() {
+      Register<IntValue>(new ValueTypeValueTransformer<IntValue, int>());
+      Register<DoubleValue>(new ValueTypeValueTransformer<DoubleValue, double>());
+      Register<PercentValue>(new ValueTypeValueTransformer<PercentValue, double>());
+      Register<BoolValue>(new ValueTypeValueTransformer<BoolValue, bool>());
+      Register<DateTimeValue>(new ValueTypeValueTransformer<DateTimeValue, DateTime>());
+      Register<StringValue>(new StringValueTransformer());
+
+      Register<IntArray>(new ValueTypeArrayTransformer<IntArray, int>());
+      Register<DoubleArray>(new ValueTypeArrayTransformer<DoubleArray, double>());
+      Register<PercentArray>(new ValueTypeArrayTransformer<PercentArray, double>());
+      Register<BoolArray>(new ValueTypeArrayTransformer<BoolArray, bool>());
+
+      Register<IntMatrix>(new ValueTypeMatrixTransformer<IntMatrix, int>());
+      Register<DoubleMatrix>(new ValueTypeMatrixTransformer<DoubleMatrix, double>());
+      Register<PercentMatrix>(new ValueTypeMatrixTransformer<PercentMatrix, double>());
+      Register<BoolMatrix>(new ValueTypeMatrixTransformer<BoolMatrix, bool>());
+    }
+
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/BaseTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/BaseTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/BaseTransformer.cs	(revision 17263)
@@ -0,0 +1,29 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using Newtonsoft.Json.Linq;
+
+namespace ParameterTest {
+  public abstract class BaseTransformer : ITypeTransformer
+  {
+    public abstract void SetValue(IItem item, ParameterData data);
+    public abstract IItem FromData(ParameterData obj, Type targetType);
+    public virtual ParameterData ToData(IItem value) => 
+      new ParameterData() { Name = value.ItemName };
+
+    protected ValueType CastValue<ValueType>(object obj) {
+      if (obj is JToken)
+        return ((JToken)obj).ToObject<ValueType>();
+      else
+        return (ValueType)obj;
+    }
+
+    protected IItem Instantiate(Type type, params object[] args) =>
+      (IItem)Activator.CreateInstance(type,args);
+
+    protected IItem Instantiate<T>(params object[] args) => Instantiate(typeof(T), args);
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/EnumTypeTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/EnumTypeTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/EnumTypeTransformer.cs	(revision 17263)
@@ -0,0 +1,32 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace ParameterTest {
+  public class EnumTypeTransformer : BaseTransformer {
+    public override IItem FromData(ParameterData obj, Type targetType) {
+      Type enumType = targetType.GenericTypeArguments.First();
+      var data = Enum.Parse(enumType, CastValue<string>(obj.Default));
+      //item.Cast<dynamic>().Value = data;
+      return Instantiate(targetType, data);
+    }
+
+    public override void SetValue(IItem item, ParameterData data) {
+      Type enumType = item.GetType().GenericTypeArguments.First();
+      item.Cast<dynamic>().Value = Enum.Parse(enumType, CastValue<string>(data.Default));
+    }
+
+    public override ParameterData ToData(IItem value) {
+      ParameterData data = base.ToData(value);
+      object val = ((dynamic)value).Value;
+      Type enumType = val.GetType();
+      data.Default = Enum.GetName(enumType, val);
+      data.Range = Enum.GetNames(enumType);
+      return data;
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/StringValueTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/StringValueTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/StringValueTransformer.cs	(revision 17263)
@@ -0,0 +1,25 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace ParameterTest {
+  public class StringValueTransformer : BaseTransformer {
+    public override IItem FromData(ParameterData obj, Type targetType) =>
+      //item.Cast<StringValue>().Value = CastValue<string>(obj.Default);
+      new StringValue() { Value = CastValue<string>(obj.Default) };
+
+    public override void SetValue(IItem item, ParameterData data) =>
+      item.Cast<StringValue>().Value = CastValue<string>(data.Default);
+
+    public override ParameterData ToData(IItem value) {
+      ParameterData data = base.ToData(value);
+      data.Default = value.Cast<StringValue>().Value;
+      return data;
+    }
+
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/ValueTypeArrayTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/ValueTypeArrayTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/ValueTypeArrayTransformer.cs	(revision 17263)
@@ -0,0 +1,33 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using Newtonsoft.Json.Linq;
+
+namespace ParameterTest {
+  public class ValueTypeArrayTransformer<ArrayType, T> : BaseTransformer
+    where ArrayType : ValueTypeArray<T>
+    where T : struct 
+  {
+    public override IItem FromData(ParameterData obj, Type targetType) =>
+      Instantiate<ArrayType>(CastValue<T[]>(obj.Default));
+
+    public override void SetValue(IItem item, ParameterData data) {
+      T[] arr = CastValue<T[]>(data.Default);
+      ArrayType valueArray = item.Cast<ArrayType>();
+      for (int i = 0; i < arr.Length; ++i) {
+        valueArray[i] = arr[i];
+      }
+    }
+      //item.Cast<StringValue>().Value = CastValue<string>(data.Default);
+
+    public override ParameterData ToData(IItem value) {
+      ParameterData data = base.ToData(value);
+      data.Default = value.Cast<ArrayType>().CloneAsArray();
+      return data;
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/ValueTypeMatrixTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/ValueTypeMatrixTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/ValueTypeMatrixTransformer.cs	(revision 17263)
@@ -0,0 +1,42 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json.Linq;
+using HeuristicLab.Data;
+using HeuristicLab.Core;
+
+namespace ParameterTest {
+  public class ValueTypeMatrixTransformer<MatrixType, T> : BaseTransformer
+    where MatrixType : ValueTypeMatrix<T> 
+    where T : struct 
+  {
+    public override IItem FromData(ParameterData obj, Type targetType) {
+      /*T[,] arr = CastValue<T[,]>(obj.Default);
+      MatrixType matrix = item.Cast<MatrixType>();
+      for (int x = 0; x < arr.GetLength(0); ++x){
+        for (int y = 0; y < arr.GetLength(1); ++y) {
+          matrix[x, y] = arr[x, y];
+        }
+      }*/
+      return Instantiate<MatrixType>(CastValue<T[,]>(obj.Default));
+    }
+
+    public override void SetValue(IItem item, ParameterData data) {
+      T[,] arr = CastValue<T[,]>(data.Default);
+      MatrixType matrix = item.Cast<MatrixType>();
+      for (int x = 0; x < arr.GetLength(0); ++x) {
+        for (int y = 0; y < arr.GetLength(1); ++y) {
+          matrix[x, y] = arr[x, y];
+        }
+      }
+    }
+
+    public override ParameterData ToData(IItem value) {
+      ParameterData data = base.ToData(value);
+      data.Default = value.Cast<MatrixType>().CloneAsMatrix();
+      return data;
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/ValueTypeValueTransformer.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/ValueTypeValueTransformer.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/TypeTransformer/ValueTypeValueTransformer.cs	(revision 17263)
@@ -0,0 +1,44 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace ParameterTest {
+  public class ValueTypeValueTransformer<ValueType, T> : BaseTransformer
+    where ValueType : ValueTypeValue<T>
+    where T : struct {
+    public override IItem FromData(ParameterData obj, Type targetType) =>
+      //item.Cast<ValueType>().Value = CastValue<T>(obj.Default);
+      Instantiate<ValueType>(CastValue<T>(obj.Default));
+    public override void SetValue(IItem item, ParameterData data) =>
+      item.Cast<ValueType>().Value = CastValue<T>(data.Default);
+
+    public override ParameterData ToData(IItem value) {
+      ParameterData data = base.ToData(value);
+      data.Default = value.Cast<ValueType>().Value;
+      data.Range = new object[] { default(T), GetMaxValue() };
+      return data;
+    }
+
+    private object GetMaxValue() {
+      TypeCode typeCode = Type.GetTypeCode(typeof(T));
+      switch (typeCode) {
+        case TypeCode.Int16: return Int16.MaxValue;
+        case TypeCode.Int32: return Int32.MaxValue;
+        case TypeCode.Int64: return Int64.MaxValue;
+        case TypeCode.UInt16: return UInt16.MaxValue;
+        case TypeCode.UInt32: return UInt32.MaxValue;
+        case TypeCode.UInt64: return UInt64.MaxValue;
+        case TypeCode.Single: return Single.MaxValue;
+        case TypeCode.Double: return Double.MaxValue;
+        case TypeCode.Decimal: return Decimal.MaxValue;
+        case TypeCode.Byte: return Byte.MaxValue;
+        case TypeCode.Boolean: return true;
+        default: return default(T);
+      }
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Util.cs
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Util.cs	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/Util.cs	(revision 17263)
@@ -0,0 +1,25 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+
+namespace ParameterTest {
+  public class Util {
+    public static bool IsTypeOf(object obj, Type t) {
+      if (obj == null || t == null) return false;
+      Type objType = obj.GetType();
+      if (t.IsInterface && t.IsGenericType)
+        return (objType == t || objType.IsAssignableFrom(t) || objType.GetInterfaces().Where(i => i.IsGenericType).Any(i => i.GetGenericTypeDefinition() == t));
+      if (t.IsGenericType) {
+        Type baseType = objType;
+        while (baseType != typeof(object)) {
+          if (baseType.IsGenericType && baseType.GetGenericTypeDefinition() == t) return true;
+          baseType = baseType.BaseType;
+        }
+      }
+      return objType == t;
+    }
+  }
+}
Index: branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/packages.config
===================================================================
--- branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/packages.config	(revision 17263)
+++ branches/3026_IntegrationIntoSymSpace/HeuristicLab.Manufacture/packages.config	(revision 17263)
@@ -0,0 +1,4 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net462" />
+</packages>
