diff --git a/VectoCore/FileIO/Reader/Impl/DeclarationModeSimulationDataReader.cs b/VectoCore/FileIO/Reader/Impl/DeclarationModeSimulationDataReader.cs
index 10708fe00f3d40a1a041b84b9b106c00254af891..24d48ca996762709dd25da74241555489e699a9f 100644
--- a/VectoCore/FileIO/Reader/Impl/DeclarationModeSimulationDataReader.cs
+++ b/VectoCore/FileIO/Reader/Impl/DeclarationModeSimulationDataReader.cs
@@ -37,9 +37,16 @@ namespace TUGraz.VectoCore.FileIO.Reader.Impl
 			var resultCount = segment.Missions.Sum(m => m.Loadings.Count);
 
 			var engineData = dao.CreateEngineData(Engine);
+			var engineTypeString = string.Format("{0} l, {1} kW",
+				engineData.Displacement.ConvertTo().Cubic.Dezi.Meter.ToOutputFormat(1),
+				engineData.FullLoadCurve.MaxPower.ConvertTo().Kilo.Watt.ToOutputFormat(0));
+
 			var gearboxData = dao.CreateGearboxData(Gearbox, engineData);
-			var report = new DeclarationReport(engineData.FullLoadCurve, segment, "CREATOR", engineData.ModelName, "engineStr",
-				gearboxData.ModelName, "gearboxStr", Job.BasePath, Job.JobFile, resultCount);
+			var gearboxTypeString = string.Format("{0}-Speed {1}", gearboxData.Gears.Count, gearboxData.Type);
+
+			// todo: set correct <USERNAME> in Report
+			var report = new DeclarationReport(engineData.FullLoadCurve, segment, "<USERNAME>", engineData.ModelName,
+				engineTypeString, gearboxData.ModelName, gearboxTypeString, Job.BasePath, Job.JobFile, resultCount);
 
 			foreach (var mission in segment.Missions) {
 				var cycle = DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased);
diff --git a/VectoCore/Models/Declaration/DeclarationReport.cs b/VectoCore/Models/Declaration/DeclarationReport.cs
index 82495c5d619cceb552c4cf7a96199822adaa97dc..b29f91e024aec9a22bd7a2a290d1bf5d407deb97 100644
--- a/VectoCore/Models/Declaration/DeclarationReport.cs
+++ b/VectoCore/Models/Declaration/DeclarationReport.cs
@@ -75,7 +75,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 		private void WriteReport()
 		{
 			var titlePage = CreateTitlePage(_missions);
-			var cyclePages = _missions.Select((m, i) => CreateCyclePage(m.Value, i + 2, _missions.Count + 1));
+			var cyclePages = _missions.OrderBy(m => m.Key).Select((m, i) => CreateCyclePage(m.Value, i + 2, _missions.Count + 1));
 
 			MergeDocuments(titlePage, cyclePages, Path.Combine(_basePath, _jobFile + ".pdf"));
 		}
@@ -97,10 +97,9 @@ namespace TUGraz.VectoCore.Models.Declaration
 			pdfFields.SetField("Date", DateTime.Now.ToString(CultureInfo.InvariantCulture));
 			pdfFields.SetField("Created", _creator);
 			pdfFields.SetField("Config",
-				string.Format(CultureInfo.InvariantCulture, "{0:0.0}t {1} {2}",
-					_segment.GrossVehicleMassRating.ConvertTo().Ton.Value(),
-					_segment.AxleConfiguration.GetName(),
-					_segment.VehicleCategory));
+				string.Format(CultureInfo.InvariantCulture, "{0}t {1} {2}",
+					_segment.GrossVehicleMassRating.ConvertTo().Ton.ToOutputFormat(1),
+					_segment.AxleConfiguration.GetName(), _segment.VehicleCategory));
 			pdfFields.SetField("HDVclass", "HDV Class " + _segment.VehicleClass.GetClassNumber());
 			pdfFields.SetField("Engine", _engineStr);
 			pdfFields.SetField("EngM", _engineModel);
@@ -108,6 +107,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 			pdfFields.SetField("GbxM", _gearboxModel);
 			pdfFields.SetField("PageNr", string.Format("Page {0} of {1}", 1, missions.Count + 1));
 
+
 			var i = 1;
 			foreach (var results in missions.Values.OrderBy(m => m.Mission.MissionType)) {
 				pdfFields.SetField("Mission" + i, results.Mission.MissionType.ToString());
@@ -119,28 +119,28 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 				var avgSpeed = maxDistance / maxTime;
 
-				pdfFields.SetField("Loading" + i, results.Mission.RefLoad.Value().ToString("0.0") + " t");
-				pdfFields.SetField("Speed" + i,
-					string.Format(CultureInfo.InvariantCulture, "{0:0.0} km/h", avgSpeed.ConvertTo().Kilo.Meter.Per.Hour));
-
-				var loading = results.Mission.RefLoad.Value();
+				pdfFields.SetField("Loading" + i, results.Mission.RefLoad.ConvertTo().Ton.ToOutputFormat(1) + " t");
+				pdfFields.SetField("Speed" + i, avgSpeed.ConvertTo().Kilo.Meter.Per.Hour.ToOutputFormat(1) + " km/h");
 
 				var fc = m.GetValues<KilogramPerSecond>(ModalResultField.FCMap);
-				var fcSum = fc.Zip(dt, (fcVal, dtVal) => fcVal * dtVal).Sum();
-
-				var fcPerM = fcSum / maxDistance;
+				var fcWeight = fc.Zip(dt, (fcVal, dtVal) => fcVal * dtVal).Sum();
+				var fcVolume = (fcWeight / Physics.FuelDensity).Cast<CubicMeter>();
+				var co2Weight = fcWeight * Physics.CO2PerFuelWeight;
 
+				var fcAvgVolume = fcVolume / maxDistance;
+				var co2AvgWeight = co2Weight / maxDistance;
 
-				//var co2 = fcPerM.ConvertTo().Gramm * Physics.CO2PerFuelGram;
+				var loadingTon = results.Mission.RefLoad.ConvertTo().Ton;
 
+				var fc_LiterPer100km = fcAvgVolume.ConvertTo().Cubic.Dezi.Meter * 100.SI().Kilo.Meter;
+				var fc_LiterPer100Tonkm = fc_LiterPer100km / loadingTon;
+				var co2_GrammPerKm = co2AvgWeight.ConvertTo().Gramm.Per.Kilo.Meter;
+				var co2_GrammPerTonKm = co2_GrammPerKm / loadingTon;
 
-				// todo: calc co2
-				var co2 = fc;
-
-				pdfFields.SetField("FC" + i, fc.ToString("0.0"));
-				pdfFields.SetField("FCt" + i, (fc / loading).ToString("0.0"));
-				pdfFields.SetField("CO2" + i, co2.ToString("0.0"));
-				pdfFields.SetField("CO2t" + i, (co2 / loading).ToString("0.0"));
+				pdfFields.SetField("FC" + i, fc_LiterPer100km.ToOutputFormat(1));
+				pdfFields.SetField("FCt" + i, fc_LiterPer100Tonkm.ToOutputFormat(1));
+				pdfFields.SetField("CO2" + i, co2_GrammPerKm.ToOutputFormat(1));
+				pdfFields.SetField("CO2t" + i, co2_GrammPerTonKm.ToOutputFormat(1));
 				i++;
 			}
 
@@ -156,10 +156,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 			img.SetAbsolutePosition(360, 75);
 			content.AddImage(img);
 
-			img =
-				Image.GetInstance(
-					RessourceHelper.ReadStream(RessourceHelper.Namespace + "Report." +
-												GetHDVClassImageName(_segment, MissionType.LongHaul)));
+			img = GetHDVClassImage(_segment, MissionType.LongHaul);
 			img.ScaleAbsolute(180, 50);
 			img.SetAbsolutePosition(30, 475);
 			content.AddImage(img);
@@ -185,9 +182,9 @@ namespace TUGraz.VectoCore.Models.Declaration
 			pdfFields.SetField("Date", DateTime.Now.ToString(CultureInfo.InvariantCulture));
 			pdfFields.SetField("Created", _creator);
 			pdfFields.SetField("Config",
-				string.Format("{0:0.0}t {1} {2}", _segment.GrossVehicleMassRating / 1000, _segment.AxleConfiguration.GetName(),
-					_segment.VehicleCategory));
-			pdfFields.SetField("HDVclass", "HDV Class " + _segment.VehicleClass);
+				string.Format("{0}t {1} {2}", _segment.GrossVehicleMassRating.ConvertTo().Ton.ToOutputFormat(1),
+					_segment.AxleConfiguration.GetName(), _segment.VehicleCategory));
+			pdfFields.SetField("HDVclass", "HDV Class " + _segment.VehicleClass.GetClassNumber());
 			pdfFields.SetField("PageNr", string.Format("Page {0} of {1}", currentPageNr, pageCount));
 			pdfFields.SetField("Mission", results.Mission.MissionType.ToString());
 
@@ -196,42 +193,38 @@ namespace TUGraz.VectoCore.Models.Declaration
 				var loadingType = pair.Key;
 				var m = pair.Value;
 
-				var loadString = loadingType.GetShortName();
-				pdfFields.SetField("Load" + loadString, results.Mission.Loadings[loadingType].Value().ToString("0.0") + " t");
-
-				var dt = m.GetValues<SI>(ModalResultField.simulationInterval);
-				var distance = m.GetValues<SI>(ModalResultField.dist).Max().Value();
-
-				Func<ModalResultField, double> avgWeighted =
-					field => m.GetValues<SI>(field).Zip(dt, (v, t) => v / t).Average().Value();
-
-				pdfFields.SetField("Speed" + loadString, avgWeighted(ModalResultField.v_act).ToString("0.0"));
-
-				var fc = avgWeighted(ModalResultField.FCMap) / distance * 1000 * 100;
+				var dt = m.GetValues<Second>(ModalResultField.simulationInterval);
+				var maxDistance = m.GetValues<Meter>(ModalResultField.dist).Max();
+				var maxTime = m.GetValues<Second>(ModalResultField.time).Max();
+				var avgSpeed = maxDistance / maxTime;
 
-				// todo: calculate co2!!
-				var co2 = fc;
+				var fc = m.GetValues<KilogramPerSecond>(ModalResultField.FCMap);
+				var fcWeight = fc.Zip(dt, (fcVal, dtVal) => fcVal * dtVal).Sum();
+				var fcVolume = (fcWeight / Physics.FuelDensity).Cast<CubicMeter>();
+				var co2Weight = fcWeight * Physics.CO2PerFuelWeight;
+				var fcAvgVolume = fcVolume / maxDistance;
+				var co2AvgWeight = co2Weight / maxDistance;
+				var loadingTon = results.Mission.Loadings[loadingType].ConvertTo().Ton;
 
-				var loading = results.Mission.Loadings[loadingType].Value();
+				var fc_LiterPer100km = fcAvgVolume.ConvertTo().Cubic.Dezi.Meter * 100.SI().Kilo.Meter;
+				var co2_GrammPerKm = co2AvgWeight.ConvertTo().Gramm.Per.Kilo.Meter;
 
-				pdfFields.SetField("FCkm" + loadString, fc.ToString("0.0"));
-				pdfFields.SetField("CO2km" + loadString, co2.ToString("0.0"));
+				var loadString = loadingType.GetShortName();
 
-				if (loading.IsEqual(0)) {
-					pdfFields.SetField("FCtkm" + loadString, "-");
-					pdfFields.SetField("CO2tkm" + loadString, "-");
-				} else {
-					pdfFields.SetField("FCtkm" + loadString, (fc / loading).ToString("0.0"));
-					pdfFields.SetField("CO2tkm" + loadString, (fc / loading).ToString("0.0"));
-				}
+				pdfFields.SetField("Load" + loadString,
+					results.Mission.Loadings[loadingType].ConvertTo().Ton.ToOutputFormat(1) + " t");
+				pdfFields.SetField("Speed" + loadString, avgSpeed.ConvertTo().Kilo.Meter.Per.Hour.ToOutputFormat(1));
+				pdfFields.SetField("FCkm" + loadString, fc_LiterPer100km.ToOutputFormat(1));
+				pdfFields.SetField("FCtkm" + loadString,
+					loadingTon.IsEqual(0) ? "-" : (fc_LiterPer100km / loadingTon).ToOutputFormat(1));
+				pdfFields.SetField("CO2km" + loadString, co2_GrammPerKm.ToOutputFormat(1));
+				pdfFields.SetField("CO2tkm" + loadString,
+					loadingTon.IsEqual(0) ? "-" : (co2_GrammPerKm / loadingTon).ToOutputFormat(1));
 			}
 
 			var content = stamper.GetOverContent(1);
 
-			var img =
-				Image.GetInstance(
-					RessourceHelper.ReadStream(RessourceHelper.Namespace + "Report." +
-												GetHDVClassImageName(_segment, results.Mission.MissionType)));
+			var img = GetHDVClassImage(_segment, results.Mission.MissionType);
 			img.ScaleAbsolute(180, 50);
 			img.SetAbsolutePosition(600, 475);
 			content.AddImage(img);
@@ -306,7 +299,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 				var maxDistance = modData.GetValues<Meter>(ModalResultField.dist).Max();
 				var loading = missionResult.Value.Mission.Loadings[LoadingType.ReferenceLoad];
 
-				var co2gPerTKM = fcSum.ConvertTo().Gramm * Physics.CO2PerFuelGram /
+				var co2gPerTKM = fcSum.ConvertTo().Gramm * Physics.CO2PerFuelWeight /
 								(loading.ConvertTo().Ton * maxDistance.ConvertTo().Kilo.Meter);
 
 				var series = new Series(missionResult.Key + " (Ref. load.)");
@@ -373,7 +366,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 					var maxTime = modData.GetValues<Second>(ModalResultField.time).Max();
 
 					var avgKMH = maxDistance.ConvertTo().Kilo.Meter / maxTime.ConvertTo().Hour;
-					var co2gPerKM = fcSum.ConvertTo().Gramm * Physics.CO2PerFuelGram / maxDistance.ConvertTo().Kilo.Meter;
+					var co2gPerKM = fcSum.ConvertTo().Gramm * Physics.CO2PerFuelWeight / maxDistance.ConvertTo().Kilo.Meter;
 
 					var loading = missionResult.Value.Mission.Loadings[pair.Key].ConvertTo().Ton;
 
@@ -434,7 +427,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 					MinorGrid = { Enabled = false },
 					MajorGrid = { Enabled = false }
 				},
-				Position = { X = 0f, Y = 0f, Width = 90f, Height = 100f },
+				Position = { X = 0f, Y = 0f, Width = 90, Height = 100 },
 			});
 
 			var altitude = new Series {
@@ -495,8 +488,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 					TitleFont = new Font("Helvetica", 20),
 					LabelStyle = { Font = new Font("Helvetica", 20) },
 					LabelAutoFitStyle = LabelAutoFitStyles.None
-				},
-				Position = { X = 0, Y = 0, Width = 70, Height = 100 }
+				}
 			});
 
 			var n = flc.FullLoadEntries.Select(x => x.EngineSpeed.ConvertTo().Rounds.Per.Minute).ToDouble();
@@ -532,23 +524,32 @@ namespace TUGraz.VectoCore.Models.Declaration
 			return tqnBitmap;
 		}
 
-		private static string GetHDVClassImageName(Segment segment, MissionType missionType)
+		private static Image GetHDVClassImage(Segment segment, MissionType missionType)
 		{
+			var name = "Undef.png";
 			switch (segment.VehicleClass) {
 				case VehicleClass.Class1:
 				case VehicleClass.Class2:
 				case VehicleClass.Class3:
-					return "4x2r.png";
+					name = "4x2r.png";
+					break;
 				case VehicleClass.Class4:
-					return missionType == MissionType.LongHaul ? "4x2rt.png" : "4x2r.png";
+					name = missionType == MissionType.LongHaul ? "4x2rt.png" : "4x2r.png";
+					break;
 				case VehicleClass.Class5:
-					return "4x2tt.png";
+					name = "4x2tt.png";
+					break;
 				case VehicleClass.Class9:
-					return missionType == MissionType.LongHaul ? "6x2rt.png" : "6x2r.png";
+					name = missionType == MissionType.LongHaul ? "6x2rt.png" : "6x2r.png";
+					break;
 				case VehicleClass.Class10:
-					return "6x2tt.png";
+					name = "6x2tt.png";
+					break;
 			}
-			return "Undef.png";
+
+			var hdvClassImagePath = RessourceHelper.Namespace + "Report." + name;
+			var hdvClassImage = RessourceHelper.ReadStream(hdvClassImagePath);
+			return Image.GetInstance(hdvClassImage);
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Properties/AssemblyInfo.cs b/VectoCore/Properties/AssemblyInfo.cs
index df0c9973ba0b690d98d43b7ea5751b41a9141eb5..b8cf9458fc88b48c18c0fe9f6859c38a679a0867 100644
--- a/VectoCore/Properties/AssemblyInfo.cs
+++ b/VectoCore/Properties/AssemblyInfo.cs
@@ -6,7 +6,7 @@ using System.Runtime.InteropServices;
 // associated with an assembly.
 
 [assembly: AssemblyTitle("VectoCore")]
-[assembly: AssemblyDescription("")]
+[assembly: AssemblyDescription("Core Library for VECTO Simulations")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("VectoCore")]
@@ -35,6 +35,6 @@ using System.Runtime.InteropServices;
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
 
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("3.0.*")]
+[assembly: AssemblyFileVersion("3.0.0.0")]
 [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("VectoCoreTest")]
\ No newline at end of file
diff --git a/VectoCore/Utils/Physics.cs b/VectoCore/Utils/Physics.cs
index 494ece570d915d5a2f1a7fe354d5b7758f233ecb..c814e3c0e53e058a8901faf55f7e27045914bcf1 100644
--- a/VectoCore/Utils/Physics.cs
+++ b/VectoCore/Utils/Physics.cs
@@ -4,11 +4,24 @@
 	{
 		public static readonly MeterPerSquareSecond GravityAccelleration = 9.81.SI<MeterPerSquareSecond>();
 
+		/// <summary>
+		/// Density of air.
+		/// </summary>
 		public static readonly SI AirDensity = 1.188.SI().Kilo.Gramm.Per.Cubic.Meter;
 
+		/// <summary>
+		/// Density of fuel.
+		/// </summary>
+		public static readonly SI FuelDensity = 0.832.SI().Kilo.Gramm.Per.Cubic.Dezi.Meter;
+
 		public static readonly double RollResistanceExponent = 0.9;
 
 		public static readonly MeterPerSecond BaseWindSpeed = 3.SI<MeterPerSecond>();
-		public static readonly double CO2PerFuelGram = 3.16;
+
+
+		/// <summary>
+		/// Factor to convert from fuel weight to co2 weight.
+		/// </summary>
+		public static readonly double CO2PerFuelWeight = 3.16;
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Utils/SI.cs b/VectoCore/Utils/SI.cs
index 6b6d6ffdc7f2359851e3ce1ad01255e900555303..7fd5233607b16a0b36218e219c1a48b471b700be 100644
--- a/VectoCore/Utils/SI.cs
+++ b/VectoCore/Utils/SI.cs
@@ -219,9 +219,9 @@ namespace TUGraz.VectoCore.Utils
 		protected KilogramPerSecond(double val) : base(new SI(val).Kilo.Gramm.Per.Second) {}
 
 		[DebuggerHidden]
-		public static Kilogram operator *(KilogramPerSecond kilogramPerSecond, Second Second)
+		public static Kilogram operator *(KilogramPerSecond kilogramPerSecond, Second second)
 		{
-			return ((kilogramPerSecond as SI) * Second).Cast<Kilogram>();
+			return ((kilogramPerSecond as SI) * second).Cast<Kilogram>();
 		}
 	}
 
@@ -700,6 +700,7 @@ namespace TUGraz.VectoCore.Utils
 			Percent,
 			min,
 			c,
+			d,
 			h,
 			milli,
 			t
@@ -1037,7 +1038,6 @@ namespace TUGraz.VectoCore.Utils
 			[DebuggerHidden] get { return new SI(new SI(this, toUnit: Unit.k), 1000, Unit.t, Unit.g); }
 		}
 
-
 		/// <summary>
 		/// [N]
 		/// </summary>
@@ -1129,6 +1129,15 @@ namespace TUGraz.VectoCore.Utils
 			[DebuggerHidden] get { return new SI(this, 1000.0, Unit.k); }
 		}
 
+		/// <summary>
+		/// Quantifier for Dezi (1/10)
+		/// </summary>
+		[DebuggerHidden]
+		public SI Dezi
+		{
+			[DebuggerHidden] get { return new SI(this, 0.1, Unit.d); }
+		}
+
 		/// <summary>
 		/// Quantifier for Centi (1/100)
 		/// </summary>