diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
index 551faa4fe7efbd5f526783283063a1299f5bcf63..4b5eb1a8618484a142264da52d13b04a3bc75467 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
@@ -55,56 +55,78 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 		protected IDeclarationInputDataProvider InputDataProvider;
 
 		protected IDeclarationReport Report;
+		private DeclarationDataAdapter _dao;
+		private Segment _segment;
+		private DriverData _driverdata;
+		private AirdragData _airdragData;
+		private CombustionEngineData _engineData;
+		private AxleGearData _axlegearData;
+		private AngledriveData _angledriveData;
+		private GearboxData _gearboxData;
+		private RetarderData _retarderData;
+		private PTOData _ptoTransmissionData;
+		private PTOData _municipalPtoTransmissionData;
 
 		internal DeclarationModeVectoRunDataFactory(IDeclarationInputDataProvider dataProvider, IDeclarationReport report)
 		{
 			InputDataProvider = dataProvider;
 			Report = report;
-		}
 
-		public IEnumerable<VectoRunData> NextRun()
+			Initialize();
+			if (Report != null) {
+				InitializeReport();
+			}
+		}
+		
+		private void Initialize()
 		{
-			var dao = new DeclarationDataAdapter();
-			var segment = GetVehicleClassification(InputDataProvider.VehicleInputData.VehicleCategory,
+			_dao = new DeclarationDataAdapter();
+			_segment = GetVehicleClassification(InputDataProvider.VehicleInputData.VehicleCategory,
 				InputDataProvider.VehicleInputData.AxleConfiguration,
 				InputDataProvider.VehicleInputData.GrossVehicleMassRating, InputDataProvider.VehicleInputData.CurbMassChassis);
-			var driverdata = dao.CreateDriverData(InputDataProvider.DriverInputData);
-			driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile);
+			_driverdata = _dao.CreateDriverData(InputDataProvider.DriverInputData);
+			_driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(_segment.AccelerationFile);
 
-			var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData, segment.Missions.First(),
-				segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight);
-			var airdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, segment.Missions.First(),segment);
-			var engineData = dao.CreateEngineData(InputDataProvider.EngineInputData, InputDataProvider.VehicleInputData.EngineIdleSpeed,
+			var tempVehicle = _dao.CreateVehicleData(InputDataProvider.VehicleInputData, _segment.Missions.First(),
+				_segment.Missions.First().Loadings.First().Value, _segment.MunicipalBodyWeight);
+			_airdragData = _dao.CreateAirdragData(InputDataProvider.AirdragInputData, _segment.Missions.First(), _segment);
+			_engineData = _dao.CreateEngineData(InputDataProvider.EngineInputData,
+				InputDataProvider.VehicleInputData.EngineIdleSpeed,
 				InputDataProvider.GearboxInputData, InputDataProvider.VehicleInputData.TorqueLimits);
-			var axlegearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData, false);
-			var angledriveData = dao.CreateAngledriveData(InputDataProvider.AngledriveInputData, false);
-			var gearboxData = dao.CreateGearboxData(InputDataProvider.GearboxInputData, engineData, axlegearData.AxleGear.Ratio,
+			_axlegearData = _dao.CreateAxleGearData(InputDataProvider.AxleGearInputData, false);
+			_angledriveData = _dao.CreateAngledriveData(InputDataProvider.AngledriveInputData, false);
+			_gearboxData = _dao.CreateGearboxData(InputDataProvider.GearboxInputData, _engineData, _axlegearData.AxleGear.Ratio,
 				tempVehicle.DynamicTyreRadius, false);
-			var retarderData = dao.CreateRetarderData(InputDataProvider.RetarderInputData);
+			_retarderData = _dao.CreateRetarderData(InputDataProvider.RetarderInputData);
 
-			var ptoTransmissionData = dao.CreatePTOTransmissionData(InputDataProvider.PTOTransmissionInputData);
+			_ptoTransmissionData = _dao.CreatePTOTransmissionData(InputDataProvider.PTOTransmissionInputData);
 
-			var municipalPtoTransmissionData = CreateDefaultPTOData();
-			if (Report != null) {
-				var powertrainConfig = new VectoRunData() {
-					VehicleData =
-						dao.CreateVehicleData(InputDataProvider.VehicleInputData, segment.Missions.First(),
-							segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight),
-					AirdragData = airdragData,
-					EngineData = engineData,
-					GearboxData = gearboxData,
-					AxleGearData = axlegearData,
-					Retarder = retarderData,
-					Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), segment.Missions.First().MissionType,
-						segment.VehicleClass),
-					InputDataHash = InputDataProvider.XMLHash
-				};
-				Report.InitializeReport(powertrainConfig, segment);
-			}
+			_municipalPtoTransmissionData = CreateDefaultPTOData();
+		}
 
-			foreach (var mission in segment.Missions) {
+		private void InitializeReport()
+		{
+			var powertrainConfig = new VectoRunData() {
+				VehicleData =
+					_dao.CreateVehicleData(InputDataProvider.VehicleInputData, _segment.Missions.First(),
+						_segment.Missions.First().Loadings.First().Value, _segment.MunicipalBodyWeight),
+				AirdragData = _airdragData,
+				EngineData = _engineData,
+				GearboxData = _gearboxData,
+				AxleGearData = _axlegearData,
+				Retarder = _retarderData,
+				Aux = _dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), _segment.Missions.First().MissionType,
+					_segment.VehicleClass),
+				InputDataHash = InputDataProvider.XMLHash
+			};
+			Report.InitializeReport(powertrainConfig, _segment);
+		}
+
+		public IEnumerable<VectoRunData> NextRun()
+		{
+			foreach (var mission in _segment.Missions) {
 				if (mission.MissionType.IsEMS() &&
-					engineData.RatedPowerDeclared.IsSmaller(DeclarationData.MinEnginePowerForEMS)) {
+					_engineData.RatedPowerDeclared.IsSmaller(DeclarationData.MinEnginePowerForEMS)) {
 					continue;
 				}
 				DrivingCycleData cycle;
@@ -120,32 +142,31 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 					var simulationRunData = new VectoRunData {
 						Loading = loading.Key,
 						VehicleData =
-							dao.CreateVehicleData(InputDataProvider.VehicleInputData, mission, loading.Value, segment.MunicipalBodyWeight),
-						AirdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, mission, segment),
-						EngineData = engineData.Copy(),
-						GearboxData = gearboxData,
-						AxleGearData = axlegearData,
-						AngledriveData = angledriveData,
-						Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), mission.MissionType,
-							segment.VehicleClass),
+							_dao.CreateVehicleData(InputDataProvider.VehicleInputData, mission, loading.Value, _segment.MunicipalBodyWeight),
+						AirdragData = _dao.CreateAirdragData(InputDataProvider.AirdragInputData, mission, _segment),
+						EngineData = _engineData.Copy(),
+						GearboxData = _gearboxData,
+						AxleGearData = _axlegearData,
+						AngledriveData = _angledriveData,
+						Aux = _dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), mission.MissionType,
+							_segment.VehicleClass),
 						Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
-						Retarder = retarderData,
-						DriverData = driverdata,
+						Retarder = _retarderData,
+						DriverData = _driverdata,
 						ExecutionMode = ExecutionMode.Declaration,
 						JobName = InputDataProvider.JobInputData().JobName,
 						ModFileSuffix = loading.Key.ToString(),
 						Report = Report,
 						Mission = mission,
 						PTO = mission.MissionType == MissionType.MunicipalUtility
-							? municipalPtoTransmissionData
-							: ptoTransmissionData,
+							? _municipalPtoTransmissionData
+							: _ptoTransmissionData,
 						InputDataHash = InputDataProvider.XMLHash
 					};
 					simulationRunData.EngineData.FuelConsumptionCorrectionFactor = DeclarationData.WHTCCorrection.Lookup(
-						mission.MissionType.GetNonEMSMissionType(), engineData.WHTCRural, engineData.WHTCUrban, engineData.WHTCMotorway) *
-																					engineData.ColdHotCorrectionFactor;
-					//simulationRunData.Cycle.Name = mission.MissionType.ToString();
-					simulationRunData.VehicleData.VehicleClass = segment.VehicleClass;
+						mission.MissionType.GetNonEMSMissionType(), _engineData.WHTCRural, _engineData.WHTCUrban, _engineData.WHTCMotorway) *
+																					_engineData.ColdHotCorrectionFactor;
+					simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
 					yield return simulationRunData;
 				}
 			}