diff --git a/src/HwmonTempMain.cpp b/src/HwmonTempMain.cpp
index b44eb9d..8531776 100644
--- a/src/HwmonTempMain.cpp
+++ b/src/HwmonTempMain.cpp
@@ -302,8 +302,8 @@
                 deviceName = fs::canonical(device).stem();
             }
 
-            size_t bus = 0;
-            size_t addr = 0;
+            uint64_t bus = 0;
+            uint64_t addr = 0;
             if (!getDeviceBusAddr(deviceName, bus, addr))
             {
                 continue;
diff --git a/src/Utils.cpp b/src/Utils.cpp
index 94bf614..357d143 100644
--- a/src/Utils.cpp
+++ b/src/Utils.cpp
@@ -850,31 +850,3 @@
     }
     return setupPropertiesChangedMatches(bus, {types}, handler);
 }
-
-bool getDeviceBusAddr(const std::string& deviceName, size_t& bus, size_t& addr)
-{
-    auto findHyphen = deviceName.find('-');
-    if (findHyphen == std::string::npos)
-    {
-        std::cerr << "found bad device " << deviceName << "\n";
-        return false;
-    }
-    std::string busStr = deviceName.substr(0, findHyphen);
-    std::string addrStr = deviceName.substr(findHyphen + 1);
-
-    std::from_chars_result res{};
-    res = std::from_chars(&*busStr.begin(), &*busStr.end(), bus);
-    if (res.ec != std::errc{} || res.ptr != &*busStr.end())
-    {
-        std::cerr << "Error finding bus for " << deviceName << "\n";
-        return false;
-    }
-    res = std::from_chars(&*addrStr.begin(), &*addrStr.end(), addr, 16);
-    if (res.ec != std::errc{} || res.ptr != &*addrStr.end())
-    {
-        std::cerr << "Error finding addr for " << deviceName << "\n";
-        return false;
-    }
-
-    return true;
-}
diff --git a/src/Utils.hpp b/src/Utils.hpp
index 2438e4f..4562b6f 100644
--- a/src/Utils.hpp
+++ b/src/Utils.hpp
@@ -387,4 +387,32 @@
     setupPropertiesChangedMatches(
         sdbusplus::asio::connection& bus, std::span<const char* const> types,
         const std::function<void(sdbusplus::message_t&)>& handler);
-bool getDeviceBusAddr(const std::string& deviceName, size_t& bus, size_t& addr);
+
+template <typename T>
+bool getDeviceBusAddr(const std::string& deviceName, T& bus, T& addr)
+{
+    auto findHyphen = deviceName.find('-');
+    if (findHyphen == std::string::npos)
+    {
+        std::cerr << "found bad device " << deviceName << "\n";
+        return false;
+    }
+    std::string busStr = deviceName.substr(0, findHyphen);
+    std::string addrStr = deviceName.substr(findHyphen + 1);
+
+    std::from_chars_result res{};
+    res = std::from_chars(&*busStr.begin(), &*busStr.end(), bus);
+    if (res.ec != std::errc{} || res.ptr != &*busStr.end())
+    {
+        std::cerr << "Error finding bus for " << deviceName << "\n";
+        return false;
+    }
+    res = std::from_chars(&*addrStr.begin(), &*addrStr.end(), addr, 16);
+    if (res.ec != std::errc{} || res.ptr != &*addrStr.end())
+    {
+        std::cerr << "Error finding addr for " << deviceName << "\n";
+        return false;
+    }
+
+    return true;
+}
