diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index ac9c2e42eca64c3aaad5a68de8accfa88cdd8b66..c32b74e64f87ebf3f0dda956950ecda317d2f756 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -33,6 +33,7 @@ using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Net.NetworkInformation;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 
@@ -199,9 +200,7 @@ namespace TUGraz.VectoCommon.InputData
 	{
 		bool EngineStopStart { get; }
 
-		bool EcoRollWitoutEngineStop { get; }
-
-		bool EcoRollWithEngineStop { get; }
+		EcoRollType EcoRoll { get; }
 
 		PredictiveCruiseControlType PredictiveCruiseControl { get; }
 	}
@@ -231,8 +230,64 @@ namespace TUGraz.VectoCommon.InputData
 		{
 			return pcc.ToString().Replace(Prefix, "").Replace(SeparatorEnum, SeparatorXML);
 		}
+
+		public static string GetName(this PredictiveCruiseControlType pcc)
+		{
+			return pcc.ToString().Replace(Prefix, Prefix.Replace(SeparatorEnum, " ")).Replace(SeparatorEnum, "&");
+		}
+	}
+
+	public enum EcoRollType
+	{
+		None,
+		WithoutEngineStop,
+		WithEngineStop
 	}
 
+	public static class EcorollTypeHelper
+	{
+		public static EcoRollType Get(bool ecoRollWithoutEngineStop, bool ecoRollWithEngineStop)
+		{
+			if (ecoRollWithEngineStop && ecoRollWithoutEngineStop) {
+				throw new VectoException("invalid combination or EcoRoll");
+			}
+
+			if (ecoRollWithoutEngineStop) {
+				return EcoRollType.WithoutEngineStop;
+			}
+
+			if (ecoRollWithEngineStop) {
+				return EcoRollType.WithEngineStop;
+			}
+
+			return EcoRollType.None;
+		}
+
+		public static EcoRollType Parse(string ecoRoll)
+		{
+			return ecoRoll.ParseEnum<EcoRollType>();
+		}
+
+		public static bool WithoutEngineStop(this EcoRollType ecoRoll)
+		{
+			return ecoRoll == EcoRollType.WithoutEngineStop;
+		}
+
+		public static bool WithEngineStop(this EcoRollType ecoRoll)
+		{
+			return ecoRoll == EcoRollType.WithEngineStop;
+		}
+
+		public static string GetName(this EcoRollType ecoRoll)
+		{
+			switch (ecoRoll) {
+				case EcoRollType.None: return "None";
+				case EcoRollType.WithoutEngineStop: return "without engine stop";
+				case EcoRollType.WithEngineStop: return "with engine stop";
+				default: throw new ArgumentOutOfRangeException(nameof(ecoRoll), ecoRoll, null);
+			}
+		}
+	}
 
 	public enum TankSystem
 	{
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
index e2e4e9563f4faecfecbd5d7fbc7b4bfd4d186a49..4da2a5e537f85dc1fc3ca0a9ed98d0b1fbc232e5 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
@@ -404,14 +404,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get { return DeclarationData.Vehicle.ADAS.EngineStopStartDefault; }
 		}
 
-		public bool EcoRollWitoutEngineStop
+		public EcoRollType EcoRoll
 		{
-			get { return DeclarationData.Vehicle.ADAS.EcoRollWitoutEngineStop; }
-		}
-
-		public bool EcoRollWithEngineStop
-		{
-			get { return DeclarationData.Vehicle.ADAS.EcoRollWithEngineStop; }
+			get { return DeclarationData.Vehicle.ADAS.EcoRoll; }
 		}
 
 		public PredictiveCruiseControlType PredictiveCruiseControl
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationADASDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationADASDataProvider.cs
index e0fa06b48bd56f4a6d4d90695e471386b61cabfd..d3079bbbe9b8fe31255af8608c9237b7467a9c4f 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationADASDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationADASDataProvider.cs
@@ -41,14 +41,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_ADAS_EngineStopStart)); }
 		}
 
-		public virtual bool EcoRollWitoutEngineStop
+		public virtual EcoRollType EcoRoll
 		{
-			get { return XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop)); }
-		}
-
-		public virtual bool EcoRollWithEngineStop
-		{
-			get { return XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart)); }
+			get {
+				return EcorollTypeHelper.Get(
+					XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop)),
+					XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart)));
+			}
 		}
 
 		public virtual PredictiveCruiseControlType PredictiveCruiseControl
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index e1e7b469663f6b14f6b4fc271f3718f82d8470ce..6db977c721951a882b9e3bc74d7553f69f85a625 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -365,14 +365,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 				get { return false; }
 			}
 
-			public bool EcoRollWitoutEngineStop
+			public EcoRollType EcoRoll
 			{
-				get { return false; }
-			}
-
-			public bool EcoRollWithEngineStop
-			{
-				get { return false; }
+				get { return EcoRollType.None; }
 			}
 
 			public PredictiveCruiseControlType PredictiveCruiseControl
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
index 66a932a5ff1d9a8c9de7efcd39b061ce23a1260a..098b5d1e511a1c205ee0f9f451b71860c4147928 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
@@ -160,8 +160,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 		{
 			return new VehicleData.ADASData {
 				EngineStopStart = adas.EngineStopStart,
-				EcoRollWithoutEngineStop = adas.EcoRollWitoutEngineStop,
-				EcoRollWithEngineStop = adas.EcoRollWithEngineStop,
+				EcoRoll = adas.EcoRoll,
 				PredictiveCruiseControl = adas.PredictiveCruiseControl
 			};
 		}
diff --git a/VectoCore/VectoCore/Models/Declaration/ADASCombinations.cs b/VectoCore/VectoCore/Models/Declaration/ADASCombinations.cs
index 6e4d47051083a968cfd807a9cb7878983eef96d6..f76826c7cde3426b14dcb39febd95a0db92bb44c 100644
--- a/VectoCore/VectoCore/Models/Declaration/ADASCombinations.cs
+++ b/VectoCore/VectoCore/Models/Declaration/ADASCombinations.cs
@@ -45,21 +45,21 @@ namespace TUGraz.VectoCore.Models.Declaration
 	{
 		public string ID;
 	}
-	public sealed class ADASCombinations : LookupData<bool, bool, bool, PredictiveCruiseControlType, ADASCombination>
+	public sealed class ADASCombinations : LookupData<bool, EcoRollType, PredictiveCruiseControlType, ADASCombination>
 	{
 		private readonly List<Entry> _combinations = new List<Entry>();
 
 		#region Overrides of LookupData
 
-		public override ADASCombination Lookup(bool enginestopstart, bool ecorollwithoutenginestop, bool ecorollwithenginestop, PredictiveCruiseControlType pcc)
+		public override ADASCombination Lookup(bool enginestopstart, EcoRollType ecoRoll, PredictiveCruiseControlType pcc)
 		{
 			try {
 				var entry = _combinations.First(
-					x => x.EngineStopStart == enginestopstart && x.EcoRollWithoutEngineStop == ecorollwithoutenginestop &&
-						x.EcorollWithEngineStop == ecorollwithenginestop && x.PCCType == pcc);
+					x => x.EngineStopStart == enginestopstart && x.EcoRoll == ecoRoll &&
+						x.PCCType == pcc);
 				return new ADASCombination {ID = entry.ADASCombination};
 			} catch (Exception ) { 
-				throw new VectoException(string.Format(ErrorMessage, enginestopstart, ecorollwithoutenginestop, ecorollwithenginestop, pcc));
+				throw new VectoException(string.Format(ErrorMessage, enginestopstart, ecoRoll, pcc));
 			}
 		}
 
@@ -72,7 +72,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 		{
 			get {
 				return
-					"ADAS Combination Lookup Error: No entry found for engine stop/start: {0}, eco roll w/o engine stop: {1}, eco roll w engine stop: {2}, PCC: {3}";
+					"ADAS Combination Lookup Error: No entry found for engine stop/start: {0}, eco roll: {1}, PCC: {2}";
 			}
 		}
 
@@ -81,8 +81,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 			foreach (DataRow row in table.Rows) {
 				_combinations.Add(new Entry() {
 					EngineStopStart = row.ParseBoolean("enginestopstart"),
-					EcoRollWithoutEngineStop = row.ParseBoolean("ecorollwithoutenginestop"),
-					EcorollWithEngineStop = row.ParseBoolean("ecorollwithenginestop"),
+					EcoRoll = EcorollTypeHelper.Get(row.ParseBoolean("ecorollwithoutenginestop"), row.ParseBoolean("ecorollwithenginestop")),
 					PCCType = PredictiveCruiseControlTypeHelper.Parse(row.Field<string>("predictivecruisecontrol")),
 					ADASCombination = row.Field<string>("adascombination")
 				});
@@ -94,8 +93,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 		public struct Entry
 		{
 			public bool EngineStopStart;
-			public bool EcoRollWithoutEngineStop;
-			public bool EcorollWithEngineStop;
+			public EcoRollType EcoRoll;
 			public PredictiveCruiseControlType PCCType;
 			public string ADASCombination;
 
@@ -104,13 +102,13 @@ namespace TUGraz.VectoCore.Models.Declaration
 		public ADASCombination Lookup(IAdvancedDriverAssistantSystemDeclarationInputData adas)
 		{
 			return Lookup(
-				adas.EngineStopStart, adas.EcoRollWitoutEngineStop, adas.EcoRollWithEngineStop, adas.PredictiveCruiseControl);
+				adas.EngineStopStart, adas.EcoRoll, adas.PredictiveCruiseControl);
 		}
 
 		internal ADASCombination Lookup(VehicleData.ADASData adas)
 		{
 			return Lookup(
-				adas.EngineStopStart, adas.EcoRollWithoutEngineStop, adas.EcoRollWithEngineStop, adas.PredictiveCruiseControl);
+				adas.EngineStopStart, adas.EcoRoll, adas.PredictiveCruiseControl);
 		}
 	}
 }
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index d6780113b21702921046a34ff32318c4523e2044..31010b77dc19219c5b8d7ce36a54d3b0d442940b 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -543,8 +543,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 			public static class ADAS {
 				public const PredictiveCruiseControlType PredictiveCruiseControlDefault = PredictiveCruiseControlType.None;
-				public const bool EcoRollWithEngineStop = false;
-				public const bool EcoRollWitoutEngineStop = false;
+				public const EcoRollType EcoRoll = EcoRollType.None;
 				public const bool EngineStopStartDefault = false;
 			}
 		}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
index 4bdc942f181a239ed5327332cb84ea6e1d4873eb..65bcb06ab18aca87d9f66ddd7dab1ccefcfb83b0 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
@@ -219,8 +219,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		public class ADASData
 		{
 			public bool EngineStopStart { get; internal set; }
-			public bool EcoRollWithoutEngineStop { get; internal set; }
-			public bool EcoRollWithEngineStop { get; internal set; }
+			public EcoRollType EcoRoll { get; internal set; }
 			public PredictiveCruiseControlType PredictiveCruiseControl { get; internal set; }
 		}
 
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
index d3cc68d1c3783157c394e0e803b8b49ab2d37a29..b2b00935e63b03369da9ac2139a051fc2b2cf3b3 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
@@ -120,8 +120,8 @@ namespace TUGraz.VectoCore.OutputData.XML
 		{
 			return new XElement(tns + XMLNames.Vehicle_ADAS,
 								new XElement(tns + XMLNames.Vehicle_ADAS_EngineStopStart, adasData.EngineStopStart),
-								new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adasData.EcoRollWithoutEngineStop),
-								new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adasData.EcoRollWithEngineStop),
+								new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adasData.EcoRoll.WithoutEngineStop()),
+								new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adasData.EcoRoll.WithEngineStop()),
 								new XElement(tns + XMLNames.Vehicle_ADAS_PCC, adasData.PredictiveCruiseControl != PredictiveCruiseControlType.None)
 			);
 		}
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs
index 1f7f252fdb249bf90ccacd06f2e782154964dc69..59cad7f46a28d1e64b1270abceef73cd20a52e35 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs
@@ -112,8 +112,8 @@ namespace TUGraz.VectoCore.OutputData.XML
 		{
 			return new XElement(tns + XMLNames.Vehicle_ADAS,
 				new XElement(tns + XMLNames.Vehicle_ADAS_EngineStopStart, adasData.EngineStopStart),
-				new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adasData.EcoRollWithoutEngineStop),
-				new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adasData.EcoRollWithEngineStop),
+				new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adasData.EcoRoll.WithoutEngineStop()),
+				new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adasData.EcoRoll.WithEngineStop()),
 				new XElement(tns + XMLNames.Vehicle_ADAS_PCC, adasData.PredictiveCruiseControl != PredictiveCruiseControlType.None)
 			);
 		}
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
index 0d46021d6bacd47fdbfe781968f69fa1d40cea52..e9eb84f86ff0a413b8875a406b3b906d77af638c 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
@@ -1996,7 +1996,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 			bool engineStopStart, bool ecoRollWOEngineStop, bool ecoRollWEngineStop, PredictiveCruiseControlType pcc,
 			string expectedADASGroup)
 		{
-			var adas = DeclarationData.ADASCombinations.Lookup(engineStopStart, ecoRollWOEngineStop, ecoRollWEngineStop, pcc);
+			var adas = DeclarationData.ADASCombinations.Lookup(engineStopStart, EcorollTypeHelper.Get(ecoRollWOEngineStop, ecoRollWEngineStop), pcc);
 			Assert.AreEqual(adas.ID, expectedADASGroup);
 		}
 
@@ -2006,7 +2006,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 			bool engineStopStart, bool ecoRollWOEngineStop, bool ecoRollWEngineStop, PredictiveCruiseControlType pcc)
 		{
 			AssertHelper.Exception<VectoException>(() => {
-				DeclarationData.ADASCombinations.Lookup(engineStopStart, ecoRollWOEngineStop, ecoRollWEngineStop, pcc);
+				DeclarationData.ADASCombinations.Lookup(engineStopStart, EcorollTypeHelper.Get(ecoRollWOEngineStop, ecoRollWEngineStop), pcc);
 			});
 		}
 
diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
index 5e286578728b92e120dbf80ca50230219c300e27..1cf052de5679c0b9fdaf389b9a614a694cb40de6 100644
--- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
@@ -1008,8 +1008,8 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.IsFalse(vehicle.ExemptedVehicle);
 
 			Assert.AreEqual(engineStopStart, adas.EngineStopStart);
-			Assert.AreEqual(ecoRollWith, adas.EcoRollWithEngineStop);
-			Assert.AreEqual(ecoRollWithout, adas.EcoRollWitoutEngineStop);
+			Assert.AreEqual(ecoRollWith, adas.EcoRoll.WithEngineStop());
+			Assert.AreEqual(ecoRollWithout, adas.EcoRoll.WithoutEngineStop());
 			Assert.AreEqual(pcc, adas.PredictiveCruiseControl);
 		}