diff --git a/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs b/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs
index 9d01541e3a768124825432a29ae3d904560d5e66..7776f65385695791817291001d96432eb6140a5f 100644
--- a/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs
+++ b/VectoCore/Models/SimulationComponent/Data/CombustionEngineData.cs
@@ -68,17 +68,17 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		/// </summary>
 		public SI Displacement
 		{
-            get { return _data.Body.Displacement.SI().Cubic.Centi.Meter.ConvertTo().Cubic.Meter.Value(); }
-            protected set { _data.Body.Displacement = (double) value.ConvertTo().Cubic.Centi.Meter; }
+			get { return _data.Body.Displacement.SI().Cubic.Centi.Meter.ConvertTo().Cubic.Meter.Value(); }
+			protected set { _data.Body.Displacement = (double) value.ConvertTo().Cubic.Centi.Meter; }
 		}
 
 		/// <summary>
 		///     [rad/s]
 		/// </summary>
-        public PerSecond IdleSpeed
+		public PerSecond IdleSpeed
 		{
-            get { return _data.Body.IdleSpeed.RPMtoRad(); }
-            protected set { _data.Body.IdleSpeed = (double) value.ConvertTo().Rounds.Per.Minute; }
+			get { return _data.Body.IdleSpeed.RPMtoRad(); }
+			protected set { _data.Body.IdleSpeed = (double) value.ConvertTo().Rounds.Per.Minute; }
 		}
 
 		/// <summary>
@@ -87,7 +87,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		public SI Inertia
 		{
 			get { return _data.Body.Inertia.SI().Kilo.Gramm.Square.Meter; }
-            protected set { _data.Body.Inertia = (double) value.ConvertTo().Kilo.Gramm.Square.Meter; }
+			protected set { _data.Body.Inertia = (double) value.ConvertTo().Kilo.Gramm.Square.Meter; }
 		}
 
 		/// <summary>
@@ -95,8 +95,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		/// </summary>
 		public SI WHTCUrban
 		{
-            get { return _data.Body.WHTCUrban.SI().Gramm.Per.Kilo.Watt.Hour.ConvertTo().Kilo.Gramm.Per.Watt.Second.Value(); }
-            protected set { _data.Body.WHTCUrban = (double) value.ConvertTo().Gramm.Per.Kilo.Watt.Hour; }
+			get { return _data.Body.WHTCUrban.SI().Gramm.Per.Kilo.Watt.Hour.ConvertTo().Kilo.Gramm.Per.Watt.Second.Value(); }
+			protected set { _data.Body.WHTCUrban = (double) value.ConvertTo().Gramm.Per.Kilo.Watt.Hour; }
 		}
 
 		/// <summary>
@@ -104,8 +104,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		/// </summary>
 		public SI WHTCRural
 		{
-            get { return _data.Body.WHTCRural.SI().Gramm.Per.Kilo.Watt.Hour.ConvertTo().Kilo.Gramm.Per.Watt.Second.Value(); }
-            protected set { _data.Body.WHTCRural = (double) value.ConvertTo().Gramm.Per.Kilo.Watt.Hour; }
+			get { return _data.Body.WHTCRural.SI().Gramm.Per.Kilo.Watt.Hour.ConvertTo().Kilo.Gramm.Per.Watt.Second.Value(); }
+			protected set { _data.Body.WHTCRural = (double) value.ConvertTo().Gramm.Per.Kilo.Watt.Hour; }
 		}
 
 		/// <summary>
@@ -113,10 +113,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		/// </summary>
 		public SI WHTCMotorway
 		{
-			get { return _data.Body.WHTCMotorway.SI().Gramm.Per.Kilo.Watt.Hour.To().Kilo.Gramm.Per.Watt.Second.Value(); }
-                return
-                    _data.Body.WHTCMotorway.SI().Gramm.Per.Kilo.Watt.Hour.ConvertTo().Kilo.Gramm.Per.Watt.Second.Value();
-            protected set { _data.Body.WHTCMotorway = (double) value.ConvertTo().Gramm.Per.Kilo.Watt.Hour; }
+			get { return _data.Body.WHTCMotorway.SI().Gramm.Per.Kilo.Watt.Hour.ConvertTo().Kilo.Gramm.Per.Watt.Second.Value(); }
+			protected set { _data.Body.WHTCMotorway = (double) value.ConvertTo().Gramm.Per.Kilo.Watt.Hour; }
 		}
 
 		[DataMember]
diff --git a/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs b/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs
index f27ff9bb425571e519bda435e38f7e250bef9977..acbcdf1f4e762ed500a13644d4e45cb9e8ffc928 100644
--- a/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs
+++ b/VectoCore/Models/SimulationComponent/Data/Engine/FullLoadCurve.cs
@@ -275,10 +275,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
 
 		#endregion
 
-		private Tuple<RadianPerSecond, Watt> FindMaxPower(FullLoadCurveEntry p1, FullLoadCurveEntry p2)
+		private Tuple<PerSecond, Watt> FindMaxPower(FullLoadCurveEntry p1, FullLoadCurveEntry p2)
 		{
 			if (p1.EngineSpeed == p2.EngineSpeed) {
-				return new Tuple<RadianPerSecond, Watt>(p1.EngineSpeed, Formulas.TorqueToPower(p1.TorqueFullLoad, p1.EngineSpeed));
+				return new Tuple<PerSecond, Watt>(p1.EngineSpeed, Formulas.TorqueToPower(p1.TorqueFullLoad, p1.EngineSpeed));
 			}
 			if (p2.EngineSpeed < p1.EngineSpeed) {
 				var tmp = p1;
@@ -289,24 +289,24 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
 			var k = (p2.TorqueFullLoad - p1.TorqueFullLoad) / (p2.EngineSpeed - p1.EngineSpeed);
 			var d = p2.TorqueFullLoad - k * p2.EngineSpeed;
 			if (k == 0.0.SI()) {
-				return new Tuple<RadianPerSecond, Watt>(p2.EngineSpeed, Formulas.TorqueToPower(p2.TorqueFullLoad, p2.EngineSpeed));
+				return new Tuple<PerSecond, Watt>(p2.EngineSpeed, Formulas.TorqueToPower(p2.TorqueFullLoad, p2.EngineSpeed));
 			}
-			var engineSpeedMaxPower = (-1 * d / (2 * k)).Radian.To<RadianPerSecond>();
+			var engineSpeedMaxPower = (-1 * d / (2 * k)).Cast<PerSecond>();
 			if (engineSpeedMaxPower < p1.EngineSpeed || engineSpeedMaxPower > p2.EngineSpeed) {
 				if (k > 0) {
-					return new Tuple<RadianPerSecond, Watt>(p2.EngineSpeed, Formulas.TorqueToPower(p2.TorqueFullLoad, p2.EngineSpeed));
+					return new Tuple<PerSecond, Watt>(p2.EngineSpeed, Formulas.TorqueToPower(p2.TorqueFullLoad, p2.EngineSpeed));
 				}
-				return new Tuple<RadianPerSecond, Watt>(p1.EngineSpeed, Formulas.TorqueToPower(p1.TorqueFullLoad, p1.EngineSpeed));
+				return new Tuple<PerSecond, Watt>(p1.EngineSpeed, Formulas.TorqueToPower(p1.TorqueFullLoad, p1.EngineSpeed));
 			}
 			//return null;
 			var engineTorqueMaxPower = FullLoadStationaryTorque(engineSpeedMaxPower);
-			return new Tuple<RadianPerSecond, Watt>(engineSpeedMaxPower,
+			return new Tuple<PerSecond, Watt>(engineSpeedMaxPower,
 				Formulas.TorqueToPower(engineTorqueMaxPower, engineSpeedMaxPower));
 		}
 
-		public RadianPerSecond RatedSpeed()
+		public PerSecond RatedSpeed()
 		{
-			var max = new Tuple<RadianPerSecond, Watt>(new RadianPerSecond(), new Watt());
+			var max = new Tuple<PerSecond, Watt>(new PerSecond(), new Watt());
 			for (var idx = 1; idx < _entries.Count; idx++) {
 				var currentMax = FindMaxPower(_entries[idx - 1], _entries[idx]);
 				if (currentMax.Item2 > max.Item2) {
diff --git a/VectoCore/Models/SimulationComponent/Impl/Clutch.cs b/VectoCore/Models/SimulationComponent/Impl/Clutch.cs
index b53dccb76436b512c42e00e23bc9a09e8b92832a..0d28e8892a52ecc8bac7663765bce0e21e509180 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Clutch.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Clutch.cs
@@ -9,8 +9,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 {
 	public class Clutch : VectoSimulationComponent, IClutch, ITnOutPort, ITnInPort
 	{
-		private readonly RadianPerSecond _idleSpeed;
-		private readonly RadianPerSecond _ratedSpeed;
+		private readonly PerSecond _idleSpeed;
+		private readonly PerSecond _ratedSpeed;
 		private ITnOutPort _nextComponent;
 		private const double ClutchEff = 1;
 		private const double CluchNormSpeed = 0.03;
@@ -51,7 +51,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			return this;
 		}
 
-		public IResponse Request(TimeSpan absTime, TimeSpan dt, NewtonMeter torque, RadianPerSecond angularVelocity)
+		public IResponse Request(TimeSpan absTime, TimeSpan dt, NewtonMeter torque, PerSecond angularVelocity)
 		{
 			var torqueIn = torque;
 			var engineSpeedIn = angularVelocity;
@@ -66,12 +66,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				if (engineSpeedNorm < CluchNormSpeed) {
 					_clutchState = ClutchState.ClutchSlipping;
 
-					var engineSpeed0 = new RadianPerSecond(Math.Max((double) _idleSpeed, (double) angularVelocity));
+					var engineSpeed0 = VectoMath.Max(_idleSpeed, angularVelocity);
 					var clutchSpeedNorm = CluchNormSpeed /
 										((_idleSpeed + CluchNormSpeed * (_ratedSpeed - _idleSpeed)) / _ratedSpeed);
 					engineSpeedIn =
 						((clutchSpeedNorm * engineSpeed0 / _ratedSpeed) * (_ratedSpeed - _idleSpeed) + _idleSpeed).Radian
-							.To<RadianPerSecond>();
+							.Cast<PerSecond>();
 
 					torqueIn = Formulas.PowerToTorque(Formulas.TorqueToPower(torque, angularVelocity) / ClutchEff, engineSpeedIn);
 				} else {
diff --git a/VectoCoreTest/Models/SimulationComponent/ClutchTest.cs b/VectoCoreTest/Models/SimulationComponent/ClutchTest.cs
index 20c9d845432a6dd180e3c77eee6e5d8608ded0d8..948f42e378784a6f39477f2690410d2e328aab5f 100644
--- a/VectoCoreTest/Models/SimulationComponent/ClutchTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/ClutchTest.cs
@@ -9,49 +9,47 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 {
-  [TestClass]
-  public class ClutchTest
-  {
-    private const string CoachEngine = @"TestData\Components\24t Coach.veng";
-
-    [TestMethod]
-    public void TestClutch()
-    {
-      var vehicle = new VehicleContainer();
-      var engineData = CombustionEngineData.ReadFromFile(CoachEngine);
+	[TestClass]
+	public class ClutchTest
+	{
+		private const string CoachEngine = @"TestData\Components\24t Coach.veng";
+
+		[TestMethod]
+		public void TestClutch()
+		{
+			var vehicle = new VehicleContainer();
+			var engineData = CombustionEngineData.ReadFromFile(CoachEngine);
 			var gearbox = new DummyGearbox(vehicle);
 
-      var clutch = new Clutch(vehicle, engineData);
+			var clutch = new Clutch(vehicle, engineData);
 
-      ITnInPort inPort = clutch.InShaft();
-      var outPort = new MockTnOutPort();
+			var inPort = clutch.InShaft();
+			var outPort = new MockTnOutPort();
 
-      inPort.Connect(outPort);
+			inPort.Connect(outPort);
 
-      ITnOutPort clutchOutPort = clutch.OutShaft();
+			var clutchOutPort = clutch.OutShaft();
 
 			//Test - Clutch slipping
-	    gearbox.CurrentGear = 1;
-      clutchOutPort.Request(new TimeSpan(), new TimeSpan(), 100.SI<NewtonMeter>(), new RadianPerSecond(30.0));
+			gearbox.CurrentGear = 1;
+			clutchOutPort.Request(new TimeSpan(), new TimeSpan(), 100.SI<NewtonMeter>(), 30.SI<PerSecond>());
 
-			Assert.AreEqual(48.293649, (double)outPort.Torque, 0.001);
-			Assert.AreEqual(62.119969, (double)outPort.AngularFrequency, 0.001);
+			Assert.AreEqual(48.293649, (double) outPort.Torque, 0.001);
+			Assert.AreEqual(62.119969, (double) outPort.AngularVelocity, 0.001);
 
 			//Test - Clutch opened
 			gearbox.CurrentGear = 0;
-			clutchOutPort.Request(new TimeSpan(), new TimeSpan(), 100.SI<NewtonMeter>(), new RadianPerSecond(30.0));
+			clutchOutPort.Request(new TimeSpan(), new TimeSpan(), 100.SI<NewtonMeter>(), 30.SI<PerSecond>());
 
-			Assert.AreEqual(0, (double)outPort.Torque, 0.001);
-			Assert.AreEqual((double)engineData.IdleSpeed, (double)outPort.AngularFrequency, 0.001);
+			Assert.AreEqual(0, (double) outPort.Torque, 0.001);
+			Assert.AreEqual((double) engineData.IdleSpeed, (double) outPort.AngularVelocity, 0.001);
 
 			//Test - Clutch closed
 			gearbox.CurrentGear = 1;
-			clutchOutPort.Request(new TimeSpan(), new TimeSpan(), 100.SI<NewtonMeter>(), new RadianPerSecond(80.0));
-
-			Assert.AreEqual(100.0, (double)outPort.Torque, 0.001);
-			Assert.AreEqual(80.0, (double)outPort.AngularFrequency, 0.001);
-
+			clutchOutPort.Request(new TimeSpan(), new TimeSpan(), 100.SI<NewtonMeter>(), 80.SI<PerSecond>());
 
-    }
-  }
-}
+			Assert.AreEqual(100.0, (double) outPort.Torque, 0.001);
+			Assert.AreEqual(80.0, (double) outPort.AngularVelocity, 0.001);
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCoreTest/Utils/DummyGearbox.cs b/VectoCoreTest/Utils/DummyGearbox.cs
index c40b8f055c8744ebda41b7aab05aee057a788fc1..fd22e802a5d16901885b302aa53e7a6fbb0ff039 100644
--- a/VectoCoreTest/Utils/DummyGearbox.cs
+++ b/VectoCoreTest/Utils/DummyGearbox.cs
@@ -36,7 +36,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 			_outPort = other;
 		}
 
-		public IResponse Request(TimeSpan absTime, TimeSpan dt, NewtonMeter torque, RadianPerSecond engineSpeed)
+		public IResponse Request(TimeSpan absTime, TimeSpan dt, NewtonMeter torque, PerSecond engineSpeed)
 		{
 			throw new NotImplementedException();
 		}