diff --git a/monitor/tach_sensor.cpp b/monitor/tach_sensor.cpp
index ed00a9b..dc02ade 100644
--- a/monitor/tach_sensor.cpp
+++ b/monitor/tach_sensor.cpp
@@ -176,36 +176,6 @@
     }
 }
 
-/**
- * @brief Reads a property from the input message and stores it in value.
- *        T is the value type.
- *
- *        Note: This can only be called once per message.
- *
- * @param[in] msg - the dbus message that contains the data
- * @param[in] interface - the interface the property is on
- * @param[in] propertName - the name of the property
- * @param[out] value - the value to store the property value in
- */
-template <typename T>
-static void readPropertyFromMessage(sdbusplus::message::message& msg,
-                                    const std::string& interface,
-                                    const std::string& propertyName, T& value)
-{
-    std::string sensor;
-    std::map<std::string, std::variant<T>> data;
-    msg.read(sensor, data);
-
-    if (sensor.compare(interface) == 0)
-    {
-        auto propertyMap = data.find(propertyName);
-        if (propertyMap != data.end())
-        {
-            value = std::get<T>(propertyMap->second);
-        }
-    }
-}
-
 void TachSensor::handleTargetChange(sdbusplus::message::message& msg)
 {
     readPropertyFromMessage(msg, _interface, FAN_TARGET_PROPERTY, _tachTarget);
diff --git a/monitor/tach_sensor.hpp b/monitor/tach_sensor.hpp
index 76a800d..88c8547 100644
--- a/monitor/tach_sensor.hpp
+++ b/monitor/tach_sensor.hpp
@@ -105,6 +105,37 @@
                const sdeventplus::Event& event);
 
     /**
+     * @brief Reads a property from the input message and stores it in value.
+     *        T is the value type.
+     *
+     *        Note: This can only be called once per message.
+     *
+     * @param[in] msg - the dbus message that contains the data
+     * @param[in] interface - the interface the property is on
+     * @param[in] propertName - the name of the property
+     * @param[out] value - the value to store the property value in
+     */
+    template <typename T>
+    static void readPropertyFromMessage(sdbusplus::message::message& msg,
+                                        const std::string& interface,
+                                        const std::string& propertyName,
+                                        T& value)
+    {
+        std::string sensor;
+        std::map<std::string, std::variant<T>> data;
+        msg.read(sensor, data);
+
+        if (sensor.compare(interface) == 0)
+        {
+            auto propertyMap = data.find(propertyName);
+            if (propertyMap != data.end())
+            {
+                value = std::get<T>(propertyMap->second);
+            }
+        }
+    }
+
+    /**
      * @brief Returns the target speed value
      */
     uint64_t getTarget() const;
