diff --git a/dbus/dbusconfiguration.cpp b/dbus/dbusconfiguration.cpp
index 09f0d88..161f14a 100644
--- a/dbus/dbusconfiguration.cpp
+++ b/dbus/dbusconfiguration.cpp
@@ -37,10 +37,6 @@
 namespace pid_control
 {
 
-extern std::map<std::string, struct conf::SensorConfig> sensorConfig;
-extern std::map<int64_t, conf::PIDConf> zoneConfig;
-extern std::map<int64_t, struct conf::ZoneConfig> zoneDetailsConfig;
-
 constexpr const char* pidConfigurationInterface =
     "xyz.openbmc_project.Configuration.Pid";
 constexpr const char* objectManagerInterface =
@@ -264,7 +260,8 @@
 void populatePidInfo(
     sdbusplus::bus::bus& bus,
     const std::unordered_map<std::string, DbusVariantType>& base,
-    struct conf::ControllerInfo& info, const std::string* thresholdProperty)
+    struct conf::ControllerInfo& info, const std::string* thresholdProperty,
+    const std::map<std::string, conf::SensorConfig>& sensorConfig)
 {
     info.type = std::get<std::string>(getPIDAttribute(base, "Class"));
     if (info.type == "fan")
@@ -289,7 +286,7 @@
         {
             interface = thresholds::criticalInterface;
         }
-        const std::string& path = sensorConfig[info.inputs.front()].readPath;
+        const std::string& path = sensorConfig.at(info.inputs.front()).readPath;
 
         DbusHelper helper(sdbusplus::bus::new_system());
         std::string service = helper.getService(interface, path);
@@ -349,7 +346,10 @@
     info.pidInfo.positiveHysteresis = positiveHysteresis;
 }
 
-bool init(sdbusplus::bus::bus& bus, boost::asio::steady_timer& timer)
+bool init(sdbusplus::bus::bus& bus, boost::asio::steady_timer& timer,
+          std::map<std::string, conf::SensorConfig>& sensorConfig,
+          std::map<int64_t, conf::PIDConf>& zoneConfig,
+          std::map<int64_t, conf::ZoneConfig>& zoneDetailsConfig)
 {
 
     sensorConfig.clear();
@@ -755,7 +755,7 @@
                     struct conf::ControllerInfo& info =
                         conf[std::get<std::string>(base.at("Name"))];
                     info.inputs = std::move(inputSensorNames);
-                    populatePidInfo(bus, base, info, nullptr);
+                    populatePidInfo(bus, base, info, nullptr, sensorConfig);
                 }
                 else
                 {
@@ -765,7 +765,8 @@
                     {
                         struct conf::ControllerInfo& info = conf[input];
                         info.inputs.emplace_back(input);
-                        populatePidInfo(bus, base, info, &offsetType);
+                        populatePidInfo(bus, base, info, &offsetType,
+                                        sensorConfig);
                     }
                 }
             }
diff --git a/dbus/dbusconfiguration.hpp b/dbus/dbusconfiguration.hpp
index 29f8597..aef3622 100644
--- a/dbus/dbusconfiguration.hpp
+++ b/dbus/dbusconfiguration.hpp
@@ -21,6 +21,7 @@
 #include <sdbusplus/bus.hpp>
 
 #include <cstdint>
+#include <map>
 #include <string>
 #include <unordered_map>
 #include <variant>
@@ -39,6 +40,20 @@
 {
 namespace dbus_configuration
 {
-bool init(sdbusplus::bus::bus& bus, boost::asio::steady_timer& timer);
+
+/**
+ * Initialize a dbus-based configuration.
+ *
+ * @param bus - the sdbusplus connection to use
+ * @param timer - the timer to use
+ * @param sensorConfig - The configuration converted sensor list.
+ * @param zoneConfig - The configuration converted PID list.
+ * @param zoneDetailsConfig - The configuration converted Zone configuration.
+ */
+bool init(sdbusplus::bus::bus& bus, boost::asio::steady_timer& timer,
+          std::map<std::string, conf::SensorConfig>& sensorConfig,
+          std::map<int64_t, conf::PIDConf>& zoneConfig,
+          std::map<int64_t, conf::ZoneConfig>& zoneDetailsConfig);
+
 } // namespace dbus_configuration
 } // namespace pid_control
diff --git a/main.cpp b/main.cpp
index b55a111..f5d34e0 100644
--- a/main.cpp
+++ b/main.cpp
@@ -114,7 +114,8 @@
     else
     {
         static boost::asio::steady_timer reloadTimer(io);
-        if (!dbus_configuration::init(modeControlBus, reloadTimer))
+        if (!dbus_configuration::init(modeControlBus, reloadTimer, sensorConfig,
+                                      zoneConfig, zoneDetailsConfig))
         {
             return; // configuration not ready
         }
