diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs
index 8a91493c767b504df40ed4a44273c8754fd6ab6a..36793d2013d15d07ea761c571fa1d1165d97731b 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs
@@ -10,6 +10,7 @@
 // See the LICENSE.txt for the specific language governing permissions and limitations.
 
 using System.Xml.Linq;
+using Newtonsoft.Json;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.BusAuxiliaries;
@@ -17,6 +18,7 @@ using TUGraz.VectoCore.Models.BusAuxiliaries;
 namespace TUGraz.VectoCommon.BusAuxiliaries {
 	public interface IAuxiliaryConfig
 	{
+		[JsonIgnore]
 		IBusAuxiliariesDeclarationData InputData { get; }
 
 		// Electrical
diff --git a/VectoCommon/VectoCommon/Utils/SI.cs b/VectoCommon/VectoCommon/Utils/SI.cs
index 00fa62139a141fd4446c42f557e3d77242b57db5..4abe64cdaf43b5043db4c40294ecd164d0c7948c 100644
--- a/VectoCommon/VectoCommon/Utils/SI.cs
+++ b/VectoCommon/VectoCommon/Utils/SI.cs
@@ -1671,6 +1671,11 @@ namespace TUGraz.VectoCommon.Utils
 			get { return GetUnitString(_units); }
 		}
 
+		public virtual double TheValue
+		{
+			get { return Val; }
+		}
+
 		private string ToString(string format)
 		{
 			if (string.IsNullOrEmpty(format)) {
diff --git a/VectoCommon/VectoCommon/VectoCommon.csproj b/VectoCommon/VectoCommon/VectoCommon.csproj
index 0ff417be3bba563d297d51b8649aff2f82bbed68..b562b4b24465b396ead7a24c05db7ef3c06a8245 100644
--- a/VectoCommon/VectoCommon/VectoCommon.csproj
+++ b/VectoCommon/VectoCommon/VectoCommon.csproj
@@ -31,6 +31,9 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+    </Reference>
     <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
       <HintPath>..\..\packages\NLog.4.5.11\lib\net45\NLog.dll</HintPath>
       <Private>True</Private>
diff --git a/VectoCommon/VectoCommon/packages.config b/VectoCommon/VectoCommon/packages.config
index eaf15479484d960da76fb16278bee6dbf7a59a76..ac0bdab457ecf49102b1429c718e0b8490fd0fdb 100644
--- a/VectoCommon/VectoCommon/packages.config
+++ b/VectoCommon/VectoCommon/packages.config
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
+  <package id="Newtonsoft.Json" version="8.0.3" targetFramework="net45" />
   <package id="NLog" version="4.5.11" targetFramework="net45" />
 </packages>
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs
index fbf2327de6ad0a2ef1df23d0e40b18d5aaba5118..f7a1efd5186b6f41aa2f36a118bfd42eb04a7991 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/SSMInputs.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Linq;
+using Newtonsoft.Json;
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
@@ -153,31 +154,37 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 
 		#region Implementation of ISSMInputs
 
+		[JsonIgnore]
 		public ISSMBusParameters BusParameters
 		{
 			get { return this; }
 		}
 
+		[JsonIgnore]
 		public ISSMBoundaryConditions BoundaryConditions
 		{
 			get { return this; }
 		}
 
+		[JsonIgnore]
 		public IEnvironmentalConditions EnvironmentalConditions
 		{
 			get { return this; }
 		}
 
+		[JsonIgnore]
 		public IACSystem ACSystem
 		{
 			get { return this; }
 		}
 
+		[JsonIgnore]
 		public IVentilation Ventilation
 		{
 			get { return this; }
 		}
 
+		[JsonIgnore]
 		public IAuxHeater AuxHeater
 		{
 			get { return this; }
diff --git a/VectoCore/VectoCore/Models/Declaration/LookupData.cs b/VectoCore/VectoCore/Models/Declaration/LookupData.cs
index b4fb8096dcb0fa0adee11e751a3c1c251fb3a7c9..8361802d1eab79cfda036cc57c79641f2d2819b0 100644
--- a/VectoCore/VectoCore/Models/Declaration/LookupData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/LookupData.cs
@@ -92,6 +92,11 @@ namespace TUGraz.VectoCore.Models.Declaration
 				throw new VectoException(string.Format(ErrorMessage, key));
 			}
 		}
+
+		public Dictionary<TKey, TValue> Entries
+		{
+			get { return Data; }
+		}
 	}
 
 	public abstract class LookupData<TKey1, TKey2, TValue> : LookupData where TValue : struct
diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
index 5d2690b2ec4f94817090e4b409cd04335314a3b0..c22feae85f7d5998e36199fc7b3c19cb206d0e3b 100644
--- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
@@ -33,6 +33,7 @@ using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.Linq;
 using System.Xml.Linq;
+using Newtonsoft.Json;
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
@@ -106,6 +107,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 		[ValidateObject]
 		public Mission Mission { get; internal set; }
 
+		[JsonIgnore]
 		public XElement InputDataHash { get; internal set; }
 
 		public int JobRunId { get; internal set; }
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/AngledriveData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/AngledriveData.cs
index b6f6142129f254f37b4c23fffc72ad9784f0797f..cb6ea8433298fc771b0ceb7866b164cf619fa7e9 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/AngledriveData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/AngledriveData.cs
@@ -29,6 +29,7 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using Newtonsoft.Json;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
@@ -42,6 +43,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 		public AngledriveType Type;
 
+		[JsonIgnore]
 		public IAngledriveInputData InputData { get; internal set; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs
index f8dbec7ed455cbb34f13b3a1f33631a5c6c39b26..b3e30a6331a82c7dda1014c1dd25d51dc1c51696 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs
@@ -29,6 +29,7 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using Newtonsoft.Json;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
@@ -42,6 +43,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 		public AxleLineType LineType;
 
+		[JsonIgnore]
 		public IAxleGearInputData InputData { get; internal set; }
 	}
 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs
index 86d6ee681daaa7baa6f13e2d4678f90b6613f0c8..048e530e1f4733fe11dca2f32875dff75295e65d 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs
@@ -34,6 +34,7 @@ using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.Diagnostics;
 using System.Linq;
+using Newtonsoft.Json;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
@@ -70,7 +71,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
 
 		private SortedList<PerSecond, int> _quickLookup;
 
-		[Required] internal readonly LookupData<PerSecond, PT1.PT1Result> PT1Data;
+		[Required] public readonly LookupData<PerSecond, PT1.PT1Result> PT1Data;
 
 		internal EngineFullLoadCurve(List<FullLoadCurveEntry> entries, LookupData<PerSecond, PT1.PT1Result> pt1Data)
 		{
@@ -88,6 +89,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
 			return Formulas.TorqueToPower(DragLoadStationaryTorque(angularVelocity), angularVelocity);
 		}
 
+		[JsonIgnore]
 		public CombustionEngineData EngineData { get; internal set; }
 
 		public PT1.PT1Result PT1(PerSecond angularVelocity)
@@ -95,6 +97,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
 			return PT1Data.Lookup(angularVelocity);
 		}
 
+		public List<FullLoadCurveEntry> FullLoadCurve
+		{
+			get { return FullLoadEntries; }
+		}
+		
 		/// <summary>
 		/// Get the rated speed from the given full-load curve (i.e. speed with max. power)
 		/// </summary>
@@ -497,7 +504,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
 		#endregion
 
 		[DebuggerDisplay("n: {EngineSpeed}, fullTorque: {TorqueFullLoad}, dragTorque: {TorqueDrag}")]
-		internal class FullLoadCurveEntry
+		public class FullLoadCurveEntry
 		{
 			[Required, SIRange(0, 5000 * Constants.RPMToRad)]
 			public PerSecond EngineSpeed { get; set; }
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/GearboxData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/GearboxData.cs
index 39bf4aa8f2bb2fd6c4903cdd11cf8a344b0aa4b1..59cb31fe33c5e8250edd12afac322c6cd4c7a920 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/GearboxData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/GearboxData.cs
@@ -35,6 +35,7 @@ using System.ComponentModel.DataAnnotations;
 using System.Diagnostics;
 using System.Linq;
 using System.Runtime.Serialization;
+using Newtonsoft.Json;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
@@ -101,6 +102,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		public Second PowershiftShiftTime { get; internal set; }
 
 		public bool ATEcoRollReleaseLockupClutch { get; internal set; }
+
+		[JsonIgnore]
 		public IGearboxDeclarationInputData InputData { get; internal set; }
 
 
diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
index 48465ec2c7e41eb485c0869430ce81d0a0975d2a..a90638c677ec1a3af4c3ca35139f8b736969b72e 100644
--- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
@@ -2,7 +2,10 @@
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
+using System.Reflection;
 using System.Runtime.InteropServices.WindowsRuntime;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using Ninject;
 using Ninject.Planning.Bindings.Resolvers;
 using NUnit.Framework;
@@ -30,6 +33,8 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 	[TestFixture()]
 	public class CompletedBusFactorMethodTest
 	{
+		const string JobFile = @"TestData\Integration\Buses\FactorMethod\CompletedBus.vecto";
+
 		class RelatedRun
 		{
 			public VectoRunData VectoRunDataSpezificBody { get; set; }
@@ -85,10 +90,8 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 		[TestCase()]
 		public void TestCompletedBus()
 		{
-			var relativeJobPath = @"TestData\Integration\Buses\FactorMethod\CompletedBus.vecto";
-
-			var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(relativeJobPath), Path.GetFileName(relativeJobPath)));
-			var inputData = JSONInputDataFactory.ReadJsonJob(relativeJobPath);
+			var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(JobFile), Path.GetFileName(JobFile)));
+			var inputData = JSONInputDataFactory.ReadJsonJob(JobFile);
 
 			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer)
 			{
@@ -904,5 +907,51 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 				i++;
 			}
 		}
+
+
+		[TestCase()]
+		public void PrintModelParameters()
+		{
+			var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(JobFile), Path.GetFileName(JobFile)));
+			var inputData = JSONInputDataFactory.ReadJsonJob(JobFile);
+
+			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) {
+				WriteModalResults = true,
+				//ActualModalData = true,
+				Validate = false
+			};
+			//var sumContainer = new SummaryDataContainer(writer);
+			//var jobContainer = new JobContainer(sumContainer);
+
+
+			var runs = factory.DataReader.NextRun().ToList();
+			Assert.IsTrue(runs.Count == 8 || runs.Count == 12);
+			
+			SetRelatedVehicleParts(runs);
+			var pair = relatedRuns.First();
+
+			var json = JToken.FromObject(pair.VectoRunDataGenericBody);
+			File.WriteAllText($"{pair.VectoRunDataGenericBody.JobName}_{pair.VectoRunDataGenericBody.ModFileSuffix}_Generic.json", JsonConvert.SerializeObject(json, Formatting.Indented));
+
+			//Console.WriteLine("Generic Body");
+			//PrintVectoRunData(pair.VectoRunDataGenericBody);
+			//Console.WriteLine("========================");
+			//Console.WriteLine("Specific Body");
+			//PrintVectoRunData(pair.VectoRunDataSpezificBody);
+		}
+
+		private void PrintVectoRunData(VectoRunData runData)
+		{
+			const BindingFlags flags =
+				BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public |
+				BindingFlags.FlattenHierarchy;
+			var properties = runData.GetType().GetProperties(flags);
+			foreach (var p in properties)
+			{
+
+				var val = p.GetValue(runData);
+					
+			}
+		}
 	}
 }