diff --git a/src/ADCSensor.cpp b/src/ADCSensor.cpp
index aaef76d..0638b7d 100644
--- a/src/ADCSensor.cpp
+++ b/src/ADCSensor.cpp
@@ -71,7 +71,7 @@
     }
     association = objectServer.add_interface(
         "/xyz/openbmc_project/sensors/voltage/" + name, association::interface);
-    setInitialProperties(conn, sensor_paths::unitVolts);
+    setInitialProperties(sensor_paths::unitVolts);
 }
 
 ADCSensor::~ADCSensor()
diff --git a/src/CPUSensor.cpp b/src/CPUSensor.cpp
index 078d790..6154b6f 100644
--- a/src/CPUSensor.cpp
+++ b/src/CPUSensor.cpp
@@ -84,7 +84,7 @@
             association = objectServer.add_interface(interfacePath,
                                                      association::interface);
 
-            setInitialProperties(conn, units);
+            setInitialProperties(units);
         }
     }
 
diff --git a/src/ExitAirTempSensor.cpp b/src/ExitAirTempSensor.cpp
index fd31473..58f7468 100644
--- a/src/ExitAirTempSensor.cpp
+++ b/src/ExitAirTempSensor.cpp
@@ -183,7 +183,7 @@
     association = objectServer.add_interface(
         "/xyz/openbmc_project/sensors/airflow/" + name, association::interface);
 
-    setInitialProperties(conn, sensor_paths::unitCFM);
+    setInitialProperties(sensor_paths::unitCFM);
 
     pwmLimitIface =
         objectServer.add_interface("/xyz/openbmc_project/control/pwm_limit",
@@ -526,7 +526,7 @@
     association = objectServer.add_interface(
         "/xyz/openbmc_project/sensors/temperature/" + name,
         association::interface);
-    setInitialProperties(conn, sensor_paths::unitDegreesC);
+    setInitialProperties(sensor_paths::unitDegreesC);
 }
 
 ExitAirTempSensor::~ExitAirTempSensor()
diff --git a/src/ExternalSensor.cpp b/src/ExternalSensor.cpp
index 3401ac4..5fba9b4 100644
--- a/src/ExternalSensor.cpp
+++ b/src/ExternalSensor.cpp
@@ -60,7 +60,7 @@
 
     association =
         objectServer.add_interface(objectPath, association::interface);
-    setInitialProperties(conn, sensorUnits);
+    setInitialProperties(sensorUnits);
 
     if constexpr (debug)
     {
diff --git a/src/HwmonTempSensor.cpp b/src/HwmonTempSensor.cpp
index 9871a5b..09fb33f 100644
--- a/src/HwmonTempSensor.cpp
+++ b/src/HwmonTempSensor.cpp
@@ -75,7 +75,7 @@
                                                  thisSensorParameters.typeName +
                                                  "/" + name,
                                              association::interface);
-    setInitialProperties(conn, thisSensorParameters.units);
+    setInitialProperties(thisSensorParameters.units);
 }
 
 HwmonTempSensor::~HwmonTempSensor()
diff --git a/src/IpmbSensor.cpp b/src/IpmbSensor.cpp
index 7c76d3b..0615c86 100644
--- a/src/IpmbSensor.cpp
+++ b/src/IpmbSensor.cpp
@@ -118,7 +118,7 @@
 void IpmbSensor::init(void)
 {
     loadDefaults();
-    setInitialProperties(dbusConnection, getSubTypeUnits());
+    setInitialProperties(getSubTypeUnits());
     if (initCommand)
     {
         runInitCmd();
diff --git a/src/MCUTempSensor.cpp b/src/MCUTempSensor.cpp
index e9a84fa..ede2a5e 100644
--- a/src/MCUTempSensor.cpp
+++ b/src/MCUTempSensor.cpp
@@ -90,7 +90,7 @@
 
 void MCUTempSensor::init(void)
 {
-    setInitialProperties(dbusConnection, sensor_paths::unitDegreesC);
+    setInitialProperties(sensor_paths::unitDegreesC);
     read();
 }
 
diff --git a/src/NVMeSensor.cpp b/src/NVMeSensor.cpp
index 254ba24..89b21b0 100644
--- a/src/NVMeSensor.cpp
+++ b/src/NVMeSensor.cpp
@@ -48,7 +48,7 @@
         "/xyz/openbmc_project/sensors/temperature/" + name,
         association::interface);
 
-    setInitialProperties(conn, sensor_paths::unitDegreesC);
+    setInitialProperties(sensor_paths::unitDegreesC);
 }
 
 NVMeSensor::~NVMeSensor()
diff --git a/src/PSUSensor.cpp b/src/PSUSensor.cpp
index c405ef5..99845b5 100644
--- a/src/PSUSensor.cpp
+++ b/src/PSUSensor.cpp
@@ -90,11 +90,11 @@
     // register and initialize "Associations" property.
     if (label.empty() || tSize == thresholds.size())
     {
-        setInitialProperties(conn, sensorUnits);
+        setInitialProperties(sensorUnits);
     }
     else
     {
-        setInitialProperties(conn, sensorUnits, label, tSize);
+        setInitialProperties(sensorUnits, label, tSize);
     }
 
     association = objectServer.add_interface(dbusPath, association::interface);
diff --git a/src/TachSensor.cpp b/src/TachSensor.cpp
index 09194f2..d0051a0 100644
--- a/src/TachSensor.cpp
+++ b/src/TachSensor.cpp
@@ -90,7 +90,7 @@
                  "/xyz/openbmc_project/sensors/fan_tach/" + name}});
         itemAssoc->initialize();
     }
-    setInitialProperties(conn, sensor_paths::unitRPMs);
+    setInitialProperties(sensor_paths::unitRPMs);
     setupRead();
 }
 
