diff --git a/VECTO3GUI2020/Properties/Version.cs b/VECTO3GUI2020/Properties/Version.cs
index 5ade37d6792c11e1fe10c19042588155249b7bde..b22bfb599ce17cc49cd4efb7c928cc7f0d60331c 100644
--- a/VECTO3GUI2020/Properties/Version.cs
+++ b/VECTO3GUI2020/Properties/Version.cs
@@ -30,5 +30,5 @@
 */
 
 using System.Reflection;
-[assembly: AssemblyVersion("0.1.0.1954")]
-[assembly: AssemblyFileVersion("0.1.0.1954")]
+[assembly: AssemblyVersion("0.1.0.2430")]
+[assembly: AssemblyFileVersion("0.1.0.2430")]
diff --git a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs
index 05d91d6aa7886a103f4557d62b1210b7087a93c2..4d3e806d6e5333a9d26a9561500b2504347ad814 100644
--- a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs
+++ b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs
@@ -110,6 +110,8 @@ namespace TUGraz.VectoCommon.InputData {
 				case "Components_HEV-S3_LorryType":
 				case "Components_HEV-S4_LorryType":
 				case "Components_HEV-S2_PrimaryBusType":
+				case "Components_HEV-S3_PrimaryBusType":
+				case "Components_HEV-S4_PrimaryBusType":
 				case "Components_PEV-E2_LorryType":
 				case "Components_PEV-E3_LorryType":
 				case "Components_PEV-E4_LorryType":
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
index b33fa35cdead6421bf6680446dc3c6dc6cedaeb6..0e24e0e762f8bf0107083571791cb6de4ecb8f9c 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
@@ -366,4 +366,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		public XMLDeclarationPrimaryBusHEVS2ComponentDataProviderV210(IXMLDeclarationVehicleData vehicle,
 			XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { }
 	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationPrimaryBusHEVS3ComponentDataProviderV210 : XMLDeclarationPrimaryBusHEVS2ComponentDataProviderV210
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS;
+		public new const string XSD_TYPE = "Components_HEV-S3_PrimaryBusType";
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationPrimaryBusHEVS3ComponentDataProviderV210(IXMLDeclarationVehicleData vehicle,
+			XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { }
+	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index d6db6eaf01e70a51be36d1050eb4366a45381565..b4b6f12d432e774e7929f55633a45aa6e35f815e 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -1248,6 +1248,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		
 		public XMLDeclarationHEVSxPrimaryBusDataProviderV210(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) 
 			: base(jobData, xmlNode, sourceFile) { }
+
+		#region Overrides of XMLDeclarationVehicleDataProviderV10
+
+		public override IList<ITorqueLimitInputData> TorqueLimits =>
+			Components is XMLDeclarationPrimaryBusHEVS3ComponentDataProviderV210
+				? null : base.TorqueLimits;
+
+		#endregion
 	}
 
 	// ---------------------------------------------------------------------------------------
@@ -1297,7 +1305,4 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		#endregion
 
 	}
-
-	// ---------------------------------------------------------------------------------------
-
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs
index f229a8b3395af4029ba06f798f9513c630b7922f..357e49ba34a9011094bb24b52a28cc479e0f7668 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs
@@ -64,6 +64,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules
 			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusHEVS2ComponentDataProviderV210>()
 				.Named(XMLDeclarationPrimaryBusHEVS2ComponentDataProviderV210.QUALIFIED_XSD_TYPE);
 
+			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusHEVS3ComponentDataProviderV210>()
+				.Named(XMLDeclarationPrimaryBusHEVS3ComponentDataProviderV210.QUALIFIED_XSD_TYPE);
+
 			Bind<IXMLComponentReader>().To<XMLComponentReaderV210_CompletedBus>().Named(XMLComponentReaderV210_CompletedBus.QUALIFIED_XSD_TYPE);
 
 			Bind<IXMLComponentReader>().To<XMLComponentReaderV210_HEV_PxHeavyLorry>().Named(XMLComponentReaderV210_HEV_PxHeavyLorry.QUALIFIED_XSD_TYPE);
@@ -74,6 +77,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules
 			Bind<IXMLComponentReader>().To<XMLPrimaryBusHEVS2DeclarationComponentReaderV201>()
 				.Named(XMLPrimaryBusHEVS2DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE);
 
+			Bind<IXMLComponentReader>().To<XMLPrimaryBusHEVS3DeclarationComponentReaderV201>()
+				.Named(XMLPrimaryBusHEVS3DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE);
+
 			Bind<IXMLComponentReader>().To<XMLHeavyLorryHEVS2DeclartionComponentReaderV201>().Named(XMLHeavyLorryHEVS2DeclartionComponentReaderV201.QUALIFIED_XSD_TYPE);
 			
 			Bind<IXMLComponentReader>().To<XMLHeavyLorryHEVS3DeclarationComponentReaderV201>().Named(XMLHeavyLorryHEVS3DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE);
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
index b5b22b9f9c02db8d69ffb441c21f372a14803825..69830e79b7ef1406fe1716966ccebef484fc1181 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
@@ -305,8 +305,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 			var electricMachine = Factory.CreateElectricMachinesData(version, Vehicle, componentNode, sourcefile);
 			electricMachine.ElectricMachineSystemReader = Factory.CreateElectricMotorReader(version, Vehicle, componentNode, sourcefile);
-			
-			//electricMachine.ADCReader = Factory.CreateADCReader(version, Vehicle, componentNode, sourcefile);
 			return electricMachine;
 		}
 
@@ -660,9 +658,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		protected IBusAuxiliariesDeclarationData _busAuxInputData;
 
 		public XMLPrimaryBusHEVPxDeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode)
-			: base(vehicle, componentsNode)
-		{
-		}
+			: base(vehicle, componentsNode) { }
 
 		public override IAuxiliariesDeclarationInputData AuxiliaryData => null;
 		
@@ -687,9 +683,30 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		public XMLPrimaryBusHEVS2DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) 
 			: base(vehicle, componentsNode) { }
 	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLPrimaryBusHEVS3DeclarationComponentReaderV201 : XMLPrimaryBusHEVPxDeclarationComponentReaderV201
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS;
+		public new const string XSD_TYPE = "Components_HEV-S3_PrimaryBusType";
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+		
+		public XMLPrimaryBusHEVS3DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) 
+			: base(vehicle, componentsNode) { }
+
+		#region Overrides of XMLComponentReaderV10
+
+		public override IGearboxDeclarationInputData GearboxInputData => null;
+		public override ITorqueConverterDeclarationInputData TorqueConverterInputData => null;
+		public override IAngledriveInputData AngledriveInputData => null;
 	
+		#endregion
+	}
+
 	// ---------------------------------------------------------------------------------------
 
+
 	public class XMLHeavyLorryHEVS2DeclartionComponentReaderV201 : XMLComponentReaderV10
 	{
 		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS;
diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs
index 1b04b2fc564a89962e4587e2be95b67196b093cd..975563d1ece52965f8eb99183371d029ae147876 100644
--- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs
@@ -667,7 +667,7 @@ namespace TUGraz.VectoCore.Tests.XML
 
 
 		[TestCase(@"HeavyLorry\HEV-S_heavyLorry_S3.xml")]
-		public void TestHeavyLorryS3(string jobfile)
+		public void TestHEVHeavyLorryS3(string jobfile)
 		{
 			var filename = Path.Combine(BASE_DIR, jobfile);
 			var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename));
@@ -700,7 +700,7 @@ namespace TUGraz.VectoCore.Tests.XML
 
 
 		[TestCase(@"HeavyLorry\HEV-S_heavyLorry_S4.xml")]
-		public void TestHeavyLorryS4(string jobfile)
+		public void TestHEVHeavyLorryS4(string jobfile)
 		{
 			var filename = Path.Combine(BASE_DIR, jobfile);
 			var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename));
@@ -732,7 +732,7 @@ namespace TUGraz.VectoCore.Tests.XML
 		}
 
 		[TestCase(@"MediumLorry\HEV-S_mediumLorry_AMT_S2.xml")]
-		public void TestMediumLorryS2(string jobfile)
+		public void TestHEVMediumLorryS2(string jobfile)
 		{
 			var filename = Path.Combine(BASE_DIR, jobfile);
 			var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename));
@@ -764,7 +764,7 @@ namespace TUGraz.VectoCore.Tests.XML
 		}
 
 		[TestCase(@"MediumLorry\HEV-S_mediumLorry_S3.xml")]
-		public void TestMediumLorryS3(string jobfile)
+		public void TestHEVMediumLorryS3(string jobfile)
 		{
 			var filename = Path.Combine(BASE_DIR, jobfile);
 			var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename));
@@ -797,7 +797,7 @@ namespace TUGraz.VectoCore.Tests.XML
 
 
 		[TestCase(@"MediumLorry\HEV-S_mediumLorry_S4.xml")]
-		public void TestMediumLorryS4(string jobfile)
+		public void TestHEVMediumLorryS4(string jobfile)
 		{
 			var filename = Path.Combine(BASE_DIR, jobfile);
 			var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename));
@@ -829,7 +829,7 @@ namespace TUGraz.VectoCore.Tests.XML
 		}
 
 		[TestCase(@"PrimaryBus\HEV-S_primaryBus_AMT_S2.xml")]
-		public void TestPrimaryBusS2(string jobfile)
+		public void TestHEVPrimaryBusS2(string jobfile)
 		{
 			var filename = Path.Combine(BASE_DIR, jobfile);
 			var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename));
@@ -860,6 +860,39 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.IsNull(vehicle.MaxPropulsionTorque);
 		}
 
+		[TestCase(@"PrimaryBus\HEV-S_primaryBus_S3.xml")]
+		public void TestHEVPrimaryBusS3(string jobfile)
+		{
+			var filename = Path.Combine(BASE_DIR, jobfile);
+			var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename));
+
+			Assert.NotNull(dataProvider.JobInputData);
+			var vehicle = dataProvider.JobInputData.Vehicle;
+			Assert.NotNull(vehicle);
+			Assert.IsNotNull(vehicle.Components);
+			Assert.IsNotNull(vehicle.Components.EngineInputData);
+			Assert.IsNotNull(vehicle.Components.ElectricMachines);
+			Assert.AreEqual(2, vehicle.Components.ElectricMachines.Entries.Count);
+			Assert.AreEqual(PowertrainPosition.BatteryElectricE2, vehicle.Components.ElectricMachines.Entries[0].Position);
+			Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[1].Position);
+			Assert.IsNull(vehicle.Components.GearboxInputData);
+			Assert.IsNull(vehicle.Components.TorqueConverterInputData);
+			Assert.IsNull(vehicle.Components.AngledriveInputData);
+			Assert.IsNotNull(vehicle.Components.RetarderInputData);
+			Assert.IsNotNull(vehicle.Components.AxleGearInputData);
+			Assert.IsNotNull(vehicle.Components.AxleWheels);
+			Assert.IsNull(vehicle.Components.AuxiliaryInputData);
+			Assert.IsNotNull(vehicle.Components.BusAuxiliaries);
+			Assert.IsNull(vehicle.Components.AirdragInputData);
+			Assert.IsNotNull(vehicle.Components.ElectricStorage);
+			Assert.IsNull(vehicle.Components.PTOTransmissionInputData);
+			Assert.IsNull(vehicle.CargoVolume);
+			Assert.IsNull(vehicle.TorqueLimits);
+			Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits);
+			Assert.IsNull(vehicle.MaxPropulsionTorque);
+		}
+		
+
 		#region Test existence of torque converter
 
 		private void TestTorqueConverter(IVehicleDeclarationInputData vehicle)