diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs
new file mode 100644
index 0000000000000000000000000000000000000000..c50126ef3cfd2b843450372b38ede0a9591196ef
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs
@@ -0,0 +1,193 @@
+using System.Collections.Generic;
+using System.Data;
+using System.Xml;
+using System.Xml.Linq;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.Components
+{
+	public class VIFIepcType : AbstractVIFXmlType, IXmlTypeWriter
+	{
+		public VIFIepcType(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		#region Implementation of IXmlTypeWriter
+
+		public XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			var iepc = inputData.JobInputData.Vehicle.Components.IEPC;
+
+			return new XElement(_vif + XMLNames.Component_IEPC,
+					new XElement(_vif + XMLNames.ComponentDataWrapper,
+						new XAttribute(_xsi + "type", "vif:IEPCMeasuredDataDeclarationType"),
+						new XElement(_vif + XMLNames.Component_Manufacturer, iepc.Manufacturer),
+						new XElement(_vif + XMLNames.Component_Model, iepc.Model),
+						new XElement(_vif + XMLNames.Component_CertificationNumber, iepc.CertificationNumber),
+						new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(iepc.Date, XmlDateTimeSerializationMode.Utc)),
+						new XElement(_vif + XMLNames.Component_AppVersion, iepc.AppVersion),
+						new XElement(_vif + XMLNames.ElectricMachine_ElectricMachineType, iepc.ElectricMachineType.ToString()),
+						new XElement(_vif + XMLNames.Component_CertificationMethod, iepc.CertificationMethod.ToXMLFormat()),
+						new XElement(_vif + XMLNames.ElectricMachine_R85RatedPower, iepc.R85RatedPower.ToXMLFormat()),
+						new XElement(_vif + XMLNames.ElectricMachine_RotationalInertia, iepc.Inertia.ToXMLFormat(2)),
+						new XElement(_vif + XMLNames.IEPC_DifferentialIncluded, iepc.DifferentialIncluded),
+						new XElement(_vif + XMLNames.IEPC_DesignTypeWheelMotor, iepc.DesignTypeWheelMotor),
+						iepc.NrOfDesignTypeWheelMotorMeasured == null
+							? null
+							: new XElement(_vif + XMLNames.IEPC_NrOfDesignTypeWheelMotorMeasured, iepc.NrOfDesignTypeWheelMotorMeasured.Value),
+						GetGears(iepc.Gears),
+						GetDragCurves(iepc.DragCurves),
+						GetConditioning(iepc.Conditioning)
+					)
+			);
+		}
+		
+		#endregion
+
+
+		private XElement GetGears(IList<IGearEntry> gearsData)
+		{
+			var gears = new List<XElement>();
+			
+			foreach (var gearEntry in gearsData) {
+
+				var currentGear = new XElement(_vif + XMLNames.Gear_EntryName,
+					new XAttribute("number", gearEntry.GearNumber.ToString()),
+					new XElement(_vif + XMLNames.GearRatio_Ratio, gearEntry.Ratio.ToXMLFormat(3),
+					gearEntry.MaxOutputShaftTorque == null 
+						? null
+						: new XElement(_vif + XMLNames.Gear_MaxOutputShaftTorque, gearEntry.MaxOutputShaftTorque.ToXMLFormat()),
+
+					gearEntry.MaxOutputShaftSpeed == null 
+						? null 
+						: new XElement(_vif + XMLNames.Gear_MaxOutputShaftSpeed, gearEntry.MaxOutputShaftSpeed.ToXMLFormat()))
+					);
+				gears.Add(currentGear);
+			}
+			
+			return new XElement(_vif + XMLNames.Gearbox_Gears, gears);
+		}
+
+
+		private IList<XElement> GetVoltageLevels(IList<IElectricMotorVoltageLevel> voltageData)
+		{
+			var voltageLevels = new List<XElement>();
+
+			foreach (var voltageEntry in voltageData) {
+
+				var voltage = new XElement(_vif + XMLNames.ElectricMachine_VoltageLevel,
+					new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageEntry.VoltageLevel.ToXMLFormat()),
+					new XElement(_vif + XMLNames.ElectricMachine_ContinuousTorque, voltageEntry.ContinuousTorque.ToXMLFormat(2)),
+					new XElement(_vif + XMLNames.ElectricMachine_TestSpeedContinuousTorque, voltageEntry.ContinuousTorqueSpeed.ToXMLFormat(2)),
+					new XElement(_vif + XMLNames.ElectricMachine_OverloadTorque, voltageEntry.OverloadTorque.ToXMLFormat(2)),
+					new XElement(_vif + XMLNames.ElectricMachine_TestSpeedOverloadTorque, voltageEntry.OverloadTestSpeed.ToXMLFormat(2)),
+					new XElement(_vif + XMLNames.ElectricMachine_OverloadDuration, voltageEntry.OverloadTime.ToXMLFormat(2)),
+					GetMaxTorqueCurve(voltageEntry.FullLoadCurve),
+					GetPowerMap(voltageEntry.PowerMap)
+				);
+
+				voltageLevels.Add(voltage);
+			}
+
+			return voltageLevels;
+		}
+
+
+		private XElement GetMaxTorqueCurve(DataTable maxTorqueData)
+		{
+			var maxTorqueCurveEntries = new List<XElement>();
+
+			for (int r = 0; r < maxTorqueData.Rows.Count; r++) {
+				var row = maxTorqueData.Rows[r];
+				var outShaftSpeed = row[XMLNames.MaxTorqueCurve_OutShaftSpeed];
+				var maxTorque = row[XMLNames.MaxTorqueCurve_MaxTorque];
+				var minTorque = row[XMLNames.MaxTorqueCurve_MinTorque];
+				
+				var element = new XElement(_v23 + XMLNames.MaxTorqueCurve_Entry,
+					new XAttribute(XMLNames.MaxTorqueCurve_OutShaftSpeed, outShaftSpeed),
+					new XAttribute(XMLNames.MaxTorqueCurve_MaxTorque, maxTorque),
+					new XAttribute(XMLNames.MaxTorqueCurve_MinTorque, minTorque)
+				);
+
+				maxTorqueCurveEntries.Add(element);
+			}
+
+			return new XElement(XMLNames.MaxTorqueCurve, maxTorqueCurveEntries);
+		}
+		
+		private List<XElement> GetPowerMap(IList<IElectricMotorPowerMap> powerMapData)
+		{
+			var powerMaps = new List<XElement>();
+
+			foreach (var powerMapEntry in powerMapData) {
+				
+				var entries = new List<XElement>();
+				for (int r = 0; r < powerMapEntry.PowerMap.Rows.Count; r++) {
+					var outShaftSpeed = powerMapEntry.PowerMap.Rows[r][XMLNames.PowerMap_OutShaftSpeed].ToString().ToDouble();
+					var torque = powerMapEntry.PowerMap.Rows[r][XMLNames.PowerMap_Torque].ToString().ToDouble();
+					var electricPower = powerMapEntry.PowerMap.Rows[r][XMLNames.PowerMap_ElectricPower].ToString().ToDouble();
+
+					var entry = new XElement(_vif + XMLNames.PowerMap_Entry,
+						new XAttribute(XMLNames.PowerMap_OutShaftSpeed, outShaftSpeed.ToXMLFormat(2)),
+						new XAttribute(XMLNames.PowerMap_Torque, torque.ToXMLFormat(2)),
+						new XAttribute(XMLNames.PowerMap_ElectricPower, electricPower.ToXMLFormat(2)));
+					entries.Add(entry);
+				}
+
+				var powerEntry = new XElement(_vif + XMLNames.PowerMap,
+					new XAttribute(XMLNames.Gear_GearNumber_Attr, powerMapEntry.Gear),
+					entries);
+
+				powerMaps.Add(powerEntry);
+			}
+
+			return powerMaps;
+		}
+
+		private IList<XElement> GetDragCurves(IList<IDragCurve> dragCurves)
+		{
+			var result = new List<XElement>();
+			
+			foreach (var dragCurve in dragCurves) {
+				var entries = new List<XElement>();
+				for (int r = 0; r < dragCurve.DragCurve.Rows.Count; r++) {
+					var outShaftSpeed = dragCurve.DragCurve.Rows[r][XMLNames.DragCurve_OutShaftSpeed].ToString().ToDouble();
+					var dragTorque = dragCurve.DragCurve.Rows[r][XMLNames.DragCurve_DragTorque].ToString().ToDouble();
+
+					var entry = new XElement(_vif + XMLNames.DragCurve_Entry,
+						new XAttribute(XMLNames.DragCurve_OutShaftSpeed, outShaftSpeed.ToXMLFormat(2)),
+						new XAttribute(XMLNames.DragCurve_DragTorque, dragTorque));
+
+					entries.Add(entry);
+				}
+
+				result.Add(new  XElement(_vif + XMLNames.DragCurve, 
+					new XAttribute(XMLNames.DragCurve_Gear, dragCurve.Gear.Value),
+					entries));
+			}
+
+			return result;
+		}
+
+		private XElement GetConditioning(DataTable iepcData)
+		{
+			if (iepcData == null)
+				return null;
+
+			var entries = new List<XElement>();
+			for (int r = 0; r < iepcData.Rows.Count; r++) {
+
+				var coolantTempInLet = iepcData.Rows[r][XMLNames.Conditioning_CoolantTempInlet];
+				var coolingPower = iepcData.Rows[r][XMLNames.Conditioning_CoolingPower];
+
+				entries.Add(new XElement(_vif + XMLNames.Conditioning_Entry, 
+					new XAttribute(XMLNames.Conditioning_CoolantTempInlet, coolantTempInLet),
+					new XAttribute(XMLNames.Conditioning_CoolingPower, coolingPower)));
+			}
+			
+			return new XElement(_vif + XMLNames.Conditioning, entries);
+		}
+	}
+}
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
index 3288d87e7d9f7dfd6f8973123b51cdae992b3624..43345823404638dc4be5cf17ca47be3db7472da3 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
@@ -39,6 +39,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		IXmlTypeWriter GetElectricMotorTorqueLimitsType();
 		IXmlTypeWriter GetEngineType();
 		IXmlTypeWriter GetTorqueConvertType();
+		IXmlTypeWriter GetIepcType();
 		IXmlTypeWriter GetTorqueLimitsType();
 		IXmlTypeWriter GetTransmissionType();
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs
index 5f94a2bbf1f4c84223c38a57410e4b12beb38e85..029bf58455f73292e0cbfa192914511a7aff395e 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs
@@ -83,6 +83,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetEngineType());
 			Bind<IXmlTypeWriter>().To<VIFTorqueConverterType>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetTorqueConvertType());
+			Bind<IXmlTypeWriter>().To<VIFIepcType>().When(AccessedViaVIFFactory)
+				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetIepcType());
 			Bind<IXmlTypeWriter>().To<VIFTorqueLimitsType>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetTorqueLimitsType());
 			Bind<IXmlTypeWriter>().To<VIFTransmissionType>().When(AccessedViaVIFFactory)