diff --git a/dbus/dbusactiveread.cpp b/dbus/dbusactiveread.cpp
index c444ad2..406b391 100644
--- a/dbus/dbusactiveread.cpp
+++ b/dbus/dbusactiveread.cpp
@@ -16,7 +16,7 @@
 
 #include "dbusactiveread.hpp"
 
-#include "dbus/util.hpp"
+#include "util.hpp"
 
 #include <chrono>
 #include <cmath>
diff --git a/dbus/dbusactiveread.hpp b/dbus/dbusactiveread.hpp
index b703006..235f038 100644
--- a/dbus/dbusactiveread.hpp
+++ b/dbus/dbusactiveread.hpp
@@ -1,7 +1,7 @@
 #pragma once
 
-#include "dbus/util.hpp"
 #include "interfaces.hpp"
+#include "util.hpp"
 
 #include <memory>
 #include <sdbusplus/bus.hpp>
diff --git a/dbus/dbusconfiguration.cpp b/dbus/dbusconfiguration.cpp
index e0c9f3d..2c9bbc2 100644
--- a/dbus/dbusconfiguration.cpp
+++ b/dbus/dbusconfiguration.cpp
@@ -15,7 +15,7 @@
 */
 
 #include "conf.hpp"
-#include "dbus/util.hpp"
+#include "util.hpp"
 
 #include <algorithm>
 #include <chrono>
diff --git a/dbus/dbuspassive.cpp b/dbus/dbuspassive.cpp
index ee165b9..a154b02 100644
--- a/dbus/dbuspassive.cpp
+++ b/dbus/dbuspassive.cpp
@@ -15,7 +15,7 @@
  */
 #include "dbuspassive.hpp"
 
-#include "dbus/util.hpp"
+#include "util.hpp"
 
 #include <chrono>
 #include <cmath>
diff --git a/dbus/dbuspassive.hpp b/dbus/dbuspassive.hpp
index 8cff245..ebc831d 100644
--- a/dbus/dbuspassive.hpp
+++ b/dbus/dbuspassive.hpp
@@ -1,8 +1,8 @@
 #pragma once
 
 #include "conf.hpp"
-#include "dbus/util.hpp"
 #include "interfaces.hpp"
+#include "util.hpp"
 
 #include <chrono>
 #include <cmath>
diff --git a/dbus/dbuswrite.hpp b/dbus/dbuswrite.hpp
index 6f5b85b..757ea9b 100644
--- a/dbus/dbuswrite.hpp
+++ b/dbus/dbuswrite.hpp
@@ -16,8 +16,8 @@
 
 #pragma once
 
-#include "dbus/util.hpp"
 #include "interfaces.hpp"
+#include "util.hpp"
 
 #include <memory>
 #include <sdbusplus/bus.hpp>
diff --git a/dbus/util.cpp b/dbus/util.cpp
index b5b22f4..6d5d2c0 100644
--- a/dbus/util.cpp
+++ b/dbus/util.cpp
@@ -1,4 +1,4 @@
-#include "dbus/util.hpp"
+#include "util.hpp"
 
 #include <cmath>
 #include <iostream>
@@ -192,4 +192,4 @@
         return;
     }
     value /= (max - min);
-}
\ No newline at end of file
+}
diff --git a/dbus/util.hpp b/dbus/util.hpp
deleted file mode 100644
index 69a8112..0000000
--- a/dbus/util.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-#pragma once
-
-#include <limits>
-#include <sdbusplus/bus.hpp>
-
-struct SensorProperties
-{
-    int64_t scale;
-    double value;
-    double min;
-    double max;
-    std::string unit;
-};
-
-struct SensorThresholds
-{
-    double lowerThreshold = std::numeric_limits<double>::quiet_NaN();
-    double upperThreshold = std::numeric_limits<double>::quiet_NaN();
-};
-
-const std::string sensorintf = "xyz.openbmc_project.Sensor.Value";
-const std::string criticalThreshInf =
-    "xyz.openbmc_project.Sensor.Threshold.Critical";
-const std::string propertiesintf = "org.freedesktop.DBus.Properties";
-
-class DbusHelperInterface
-{
-  public:
-    virtual ~DbusHelperInterface() = default;
-
-    /** @brief Get the service providing the interface for the path.
-     *
-     * @warning Throws exception on dbus failure.
-     */
-    virtual std::string getService(sdbusplus::bus::bus& bus,
-                                   const std::string& intf,
-                                   const std::string& path) = 0;
-
-    /** @brief Get all Sensor.Value properties for a service and path.
-     *
-     * @param[in] bus - A bus to use for the call.
-     * @param[in] service - The service providing the interface.
-     * @param[in] path - The dbus path.
-     * @param[out] prop - A pointer to a properties struct to fill out.
-     *
-     * @warning Throws exception on dbus failure.
-     */
-    virtual void getProperties(sdbusplus::bus::bus& bus,
-                               const std::string& service,
-                               const std::string& path,
-                               struct SensorProperties* prop) = 0;
-
-    /** @brief Get Critical Threshold current assert status
-     *
-     * @param[in] bus - A bus to use for the call.
-     * @param[in] service - The service providing the interface.
-     * @param[in] path - The dbus path.
-     */
-    virtual bool thresholdsAsserted(sdbusplus::bus::bus& bus,
-                                    const std::string& service,
-                                    const std::string& path) = 0;
-};
-
-class DbusHelper : public DbusHelperInterface
-{
-  public:
-    DbusHelper() = default;
-    ~DbusHelper() = default;
-    DbusHelper(const DbusHelper&) = default;
-    DbusHelper& operator=(const DbusHelper&) = default;
-    DbusHelper(DbusHelper&&) = default;
-    DbusHelper& operator=(DbusHelper&&) = default;
-
-    std::string getService(sdbusplus::bus::bus& bus, const std::string& intf,
-                           const std::string& path) override;
-
-    void getProperties(sdbusplus::bus::bus& bus, const std::string& service,
-                       const std::string& path,
-                       struct SensorProperties* prop) override;
-
-    bool thresholdsAsserted(sdbusplus::bus::bus& bus,
-                            const std::string& service,
-                            const std::string& path) override;
-};
-
-std::string getSensorPath(const std::string& type, const std::string& id);
-std::string getMatch(const std::string& type, const std::string& id);
-void scaleSensorReading(const double min, const double max, double& value);
-bool validType(const std::string& type);
-
-struct VariantToDoubleVisitor
-{
-    template <typename T>
-    std::enable_if_t<std::is_arithmetic<T>::value, double>
-        operator()(const T& t) const
-    {
-        return static_cast<double>(t);
-    }
-
-    template <typename T>
-    std::enable_if_t<!std::is_arithmetic<T>::value, double>
-        operator()(const T& t) const
-    {
-        throw std::invalid_argument("Cannot translate type to double");
-    }
-};
