diff --git a/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs b/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs
index 604c64ba009dfd6312f80a8caf3f0bdae9e7b957..f21d1ac3babbb615da9a140c38a83b281c568a02 100644
--- a/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs
+++ b/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs
@@ -1,15 +1,76 @@
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using TUGraz.VectoCore.Models.Connector.Ports.Impl;
+using Newtonsoft.Json;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 {
+    /// <summary>
+    /// Represents the CombustionEngineData. Fileformat: .veng
+    /// </summary>
+    /// <code>
+    /// {
+    ///  "Header": {
+    ///    "CreatedBy": " ()",
+    ///    "Date": "3/4/2015 12:26:24 PM",
+    ///    "AppVersion": "2.0.4-beta3",
+    ///    "FileVersion": 2
+    ///  },
+    ///  "Body": {
+    ///    "SavedInDeclMode": false,
+    ///    "ModelName": "Generic 24t Coach",
+    ///    "Displacement": 12730.0,
+    ///    "IdlingSpeed": 560.0,
+    ///    "Inertia": 3.8,
+    ///    "FullLoadCurves": [
+    ///      {
+    ///        "Path": "24t Coach.vfld",
+    ///        "Gears": "0 - 99"
+    ///      }
+    ///    ],
+    ///    "FuelMap": "24t Coach.vmap",
+    ///    "WHTC-Urban": 0.0,
+    ///    "WHTC-Rural": 0.0,
+    ///    "WHTC-Motorway": 0.0
+    ///  }
+    /// }
+    /// </code>
 	public class CombustionEngineData : SimulationComponentData
 	{
+        private readonly Dictionary<uint, FullLoadCurve> _fullLoadCurves = new Dictionary<uint, FullLoadCurve>(); 
+
+	    public CombustionEngineData(string fileName)
+	    {
+            //todo: file exception handling: file not readable, wrong file format
+            using (StreamReader r = new StreamReader(fileName))
+            {
+                var json = r.ReadToEnd();
+                var results = JsonConvert.DeserializeObject<dynamic>(json);
+                var body = results.Body;
+
+                ModelName = body.ModelName;
+                Displacement = body.Displacement;
+                IdleSpeed = body.IdlingSpeed;
+                Inertia = body.Inertia;
+
+                foreach (dynamic loadCurve in body.FullLoadCurves)
+                {
+                    string[] gears = loadCurve.Gears.ToString().Split('-');
+                    var firstGear = uint.Parse(gears.First().Trim());
+                    var lastGear = uint.Parse(gears.Last().Trim());
+
+                    for (var i = firstGear; i <= lastGear; i++)
+                    {
+                        _fullLoadCurves[i] = new FullLoadCurve(loadCurve.Path.ToString());
+                    }
+                }
+
+                ConsumptionMap = new FuelConsumptionMap(body.FuelMap.ToString());
+            }
+	    }
+
 		/// <summary>
 		/// Engine description (e.g., mode, type, etc.
 		/// </summary>
@@ -32,7 +93,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 		public FullLoadCurve FullLoadCurve(uint gear)
 		{
-			throw new NotImplementedException("get FullLoadCurve for gear");
+		    return _fullLoadCurves[gear];
 		}
 	}
 }
diff --git a/VectoCore/Models/SimulationComponent/Data/Engine/FuelConsumptionMap.cs b/VectoCore/Models/SimulationComponent/Data/Engine/FuelConsumptionMap.cs
index f74e8ce777e4bf507582a9447ddc5fac7f0e3480..fff72f98fb49021f4077827ea15d7d8d762371d9 100644
--- a/VectoCore/Models/SimulationComponent/Data/Engine/FuelConsumptionMap.cs
+++ b/VectoCore/Models/SimulationComponent/Data/Engine/FuelConsumptionMap.cs
@@ -8,5 +8,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
 {
 	public class FuelConsumptionMap
 	{
+	    public FuelConsumptionMap(string fileName)
+	    {
+	        
+	    }
 	}
 }
diff --git a/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs b/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs
index 42e96b8bc04e17088b27c0a0deefe56b33789773..69a2aca09a3637a620399c1df4adea845ca6b296 100644
--- a/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs
+++ b/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Data;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -8,5 +9,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
 {
 	public class FullLoadCurve
 	{
+        private DataTable data;
+
+	    public FullLoadCurve(string fileName)
+	    {
+	        
+	    }
+
+
+
 	}
 }
diff --git a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
index 1683738636a040aca32ee8b4b3efb1e46c86a909..f76e93315846030ad867907ad0dc4f27a0c0b9a6 100644
--- a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
@@ -7,22 +7,22 @@ using TUGraz.VectoCore.Tests.Utils;
 
 namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 {
-	[TestClass]
-	public class CombustionEngineTest
-	{
-		[TestMethod]
-		public void EngineHasOutPort()
-		{
-			var engineData = new CombustionEngineData();
-			var engine = new CombustionEngine(engineData);
-
-			var port = engine.OutPort();
-			Assert.IsNotNull(port);
-		}
-
-	    [TestMethod]
-	    public void OutPortRequestNotFailing()
-	    {
+    [TestClass]
+    public class CombustionEngineTest
+    {
+        [TestMethod]
+        public void EngineHasOutPort()
+        {
+            var engineData = new CombustionEngineData();
+            var engine = new CombustionEngine(engineData);
+
+            var port = engine.OutPort();
+            Assert.IsNotNull(port);
+        }
+
+        [TestMethod]
+        public void OutPortRequestNotFailing()
+        {
             var engineData = new CombustionEngineData();
             var engine = new CombustionEngine(engineData);
 
@@ -30,21 +30,58 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
             TimeSpan absTime = new TimeSpan(seconds: 0, minutes: 0, hours: 0);
             TimeSpan dt = new TimeSpan(seconds: 1, minutes: 0, hours: 0);
-	        const int torque = 400;
-	        const int engineSpeed = 1500;
+            const int torque = 400;
+            const int engineSpeed = 1500;
 
             port.Request(absTime, dt, torque, engineSpeed);
-	    }
+        }
 
         [TestMethod]
         public void SimpleModalData()
         {
+            //todo: choose correct combustion engine data
             var engineData = new CombustionEngineData();
             var engine = new CombustionEngine(engineData);
             var port = (ITnOutPort)engine.OutPort();
 
             TimeSpan absTime = new TimeSpan(seconds: 0, minutes: 0, hours: 0);
-            TimeSpan dt = new TimeSpan(seconds:1, minutes:0, hours:0);
+            TimeSpan dt = new TimeSpan(seconds: 1, minutes: 0, hours: 0);
+
+            //todo: set correct input values to test
+            const int torque = 400;
+            const int engineSpeed = 1500;
+            port.Request(absTime, dt, torque, engineSpeed);
+
+
+            TestDataWriter dataWriter = new TestDataWriter();
+            engine.CommitSimulationStep(dataWriter);
+
+            //todo: test with correct output values, add other fields to test
+            Assert.Equals(dataWriter[ModalResultFields.FC], 13000);
+            Assert.Equals(dataWriter[ModalResultFields.FC_AUXc], 14000);
+            Assert.Equals(dataWriter[ModalResultFields.FC_WHTCc], 15000);
+        }
+
+        [TestMethod]
+        public void EngineOnlyDrivingCycle()
+        {
+            //todo: choose correct combustion engine data
+            var engineData = new CombustionEngineData("24t Coach.veng");
+
+
+
+
+
+            var engine = new CombustionEngine(engineData);
+            var port = (ITnOutPort)engine.OutPort();
+
+            //todo: read engine only input file
+
+
+            //todo: loop over all cycles
+
+            TimeSpan absTime = new TimeSpan(seconds: 0, minutes: 0, hours: 0);
+            TimeSpan dt = new TimeSpan(seconds: 1, minutes: 0, hours: 0);
             const int torque = 400;
             const int engineSpeed = 1500;
             port.Request(absTime, dt, torque, engineSpeed);
@@ -53,9 +90,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
             TestDataWriter dataWriter = new TestDataWriter();
             engine.CommitSimulationStep(dataWriter);
 
+            //todo: test with correct output values, add other fields to test
             Assert.Equals(dataWriter[ModalResultFields.FC], 13000);
             Assert.Equals(dataWriter[ModalResultFields.FC_AUXc], 14000);
             Assert.Equals(dataWriter[ModalResultFields.FC_WHTCc], 15000);
         }
-	}
+    }
 }