diff --git a/VectoCommon/VectoCommon/Utils/SI.cs b/VectoCommon/VectoCommon/Utils/SI.cs
index 7a3cddf04fbb7a0a272b7a5dd6b150158a0e1535..e3874d08a39f351f360e91a87e3e521018201760 100644
--- a/VectoCommon/VectoCommon/Utils/SI.cs
+++ b/VectoCommon/VectoCommon/Utils/SI.cs
@@ -1354,7 +1354,21 @@ namespace TUGraz.VectoCommon.Utils
 		public double AsMilliOhm => Val * 1000;
 	}
 
-	public class Farad : SIBase<Farad>
+	public class SpecificResistance : SIBase<SpecificResistance>
+	{
+		private static readonly int[] Units = { 1, 2, -3 + 1, -2 + 1, 0, 0, 0 };
+
+        private SpecificResistance(double val) : base(val, Units) { }
+
+		public override string UnitString => "ΩAs";
+
+		public static Ohm operator /(SpecificResistance spr, AmpereSecond amps)
+		{
+			return SIBase<Ohm>.Create(spr.Val / amps.Value());
+		}
+	}
+
+    public class Farad : SIBase<Farad>
 	{
 		private static readonly int[] Units = { -1, -2, 4, 2, 0, 0, 0 };
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs
index 67b16af98c64f92b6e687f625c7e2cdbd718a276..204c5d7233433cb54ada72a8a242bb39022d576c 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs
@@ -324,38 +324,39 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			const int SoC = 50;
 			
 			var mapSoC = BatterySOCReader.Create(VoltageCurve);
-			if (!mapSoC.ContainsSoC(SoC / 100))
+			if (!mapSoC.ContainsSoC(SoC / 100.0))
 			{
 				throw new VectoException($"Battery SoC map does not contain entry with SoC: {SoC}");
 			}
 
-            var vNom = mapSoC.Lookup(SoC / 100);
+            var vNom = mapSoC.Lookup(SoC / 100.0);
 			var minCells = vNom / 4.0.SI<Volt>();
 			var maxCells = vNom / 3.0.SI<Volt>();
 
             var resistances = base.GetInternalResistanceCurve();
             var specificResistanceData = _specificResistances.Lookup(BatteryType);
 
-            DataRow rowSoC = resistances.AsEnumerable().First(x => x.ParseDouble(0) == SoC);
+            //var rowSoC = resistances.AsEnumerable().First();
+			foreach (DataRow rowSoC in resistances.AsEnumerable()) {
+				var soc = rowSoC.ParseDouble(0);
+				for (var i = 1; i < resistances.Columns.Count; i++) {
+					var resistance = rowSoC.ParseDouble(i).SI(Unit.SI.Milli.Ohm).Cast<Ohm>();
+					var resistanceName = resistances.Columns[i].ColumnName;
 
-            for (var i = 1; i < resistances.Columns.Count; i++)
-            {
-				var resistance = rowSoC.ParseDouble(i);
-				var resistanceName = resistances.Columns[i].ColumnName;
+					var specificResistance = specificResistanceData.GetValue(resistanceName);
+					var cellResistance = specificResistance / Capacity;
 
-                var specificResistance = specificResistanceData.GetValue(resistanceName);
-				var cellResistance = specificResistance / Capacity.AsAmpHour;
+					var minResistance = cellResistance * minCells.Value();
+					var maxResistance = cellResistance * maxCells.Value();
 
-                var minResistance = cellResistance * minCells.Value();
-				var maxResistance = cellResistance * maxCells.Value();
-
-				if ((resistance < minResistance) || (resistance > maxResistance))
-				{
-					Log.Warn($@"Battery {resistanceName}: {resistance}, for SoC: {SoC}, out of range [{minResistance.ToString("N2")}, {maxResistance.ToString("N2")}]");
+					if ((resistance < minResistance) || (resistance > maxResistance)) {
+						Log.Warn(
+							$@"Battery {resistanceName}: {resistance.AsMilliOhm}, for SoC: {soc}, out of range [{minResistance.AsMilliOhm.ToString("N2")}, {maxResistance.AsMilliOhm.ToString("N2")}]");
+					}
 				}
-            }
+			}
 
-            return resistances;
+			return resistances;
         }
     }
 
diff --git a/VectoCore/VectoCore/Models/Declaration/SpecificResistances.cs b/VectoCore/VectoCore/Models/Declaration/SpecificResistances.cs
index 6e48970da8d7b5fe4c447d54737d595a0181284a..a8d1a85331d1e072da6af6343d6c2c0a3765a411 100644
--- a/VectoCore/VectoCore/Models/Declaration/SpecificResistances.cs
+++ b/VectoCore/VectoCore/Models/Declaration/SpecificResistances.cs
@@ -18,12 +18,12 @@ namespace TUGraz.VectoCore.Models.Declaration
 
         public struct SpecificResistancesData 
         {
-            public double Ri_2;
-            public double Ri_10;
-            public double Ri_20;
-            public double Ri_120;
+            public SpecificResistance Ri_2;  // mOhm x Ah
+            public SpecificResistance Ri_10;
+            public SpecificResistance Ri_20;
+            public SpecificResistance Ri_120;
 
-            public double GetValue(string variable)
+            public SpecificResistance GetValue(string variable)
             {
                 var modifiedVariable = variable.Replace('-', '_');
 
@@ -51,10 +51,10 @@ namespace TUGraz.VectoCore.Models.Declaration
             {    
                 var val = new SpecificResistancesData()
                 {
-                    Ri_2 = row.ParseDouble(nameof(SpecificResistancesData.Ri_2).ToLower()),
-                    Ri_10 = row.ParseDouble(nameof(SpecificResistancesData.Ri_10).ToLower()),
-                    Ri_20 = row.ParseDouble(nameof(SpecificResistancesData.Ri_20).ToLower()),
-                    Ri_120 = !row.IsNull(ri120) && !String.IsNullOrWhiteSpace(row[ri120].ToString()) ? row.ParseDouble(ri120) : double.NaN
+                    Ri_2 = row.ParseDouble(nameof(SpecificResistancesData.Ri_2).ToLower()).SI(Unit.SI.Milli.Ohm.Ampere.Hour).Cast<SpecificResistance>(),
+                    Ri_10 = row.ParseDouble(nameof(SpecificResistancesData.Ri_10).ToLower()).SI(Unit.SI.Milli.Ohm.Ampere.Hour).Cast<SpecificResistance>(),
+                    Ri_20 = row.ParseDouble(nameof(SpecificResistancesData.Ri_20).ToLower()).SI(Unit.SI.Milli.Ohm.Ampere.Hour).Cast<SpecificResistance>(),
+                    Ri_120 = !row.IsNull(ri120) && !String.IsNullOrWhiteSpace(row[ri120].ToString()) ? row.ParseDouble(ri120).SI(Unit.SI.Milli.Ohm.Ampere.Hour).Cast<SpecificResistance>() : null
                 };
 
                 var type = (BatteryType)Enum.Parse(typeof(BatteryType), row["type"].ToString());