diff --git a/presence/error_reporter.cpp b/presence/error_reporter.cpp
index 72c7dae..6210f7d 100644
--- a/presence/error_reporter.cpp
+++ b/presence/error_reporter.cpp
@@ -43,7 +43,7 @@
 const auto loggingCreateIface = "xyz.openbmc_project.Logging.Create";
 
 ErrorReporter::ErrorReporter(
-    sdbusplus::bus::bus& bus,
+    sdbusplus::bus_t& bus,
     const std::vector<
         std::tuple<Fan, std::vector<std::unique_ptr<PresenceSensor>>>>& fans) :
     _bus(bus),
@@ -93,7 +93,7 @@
     }
 }
 
-void ErrorReporter::presenceChanged(sdbusplus::message::message& msg)
+void ErrorReporter::presenceChanged(sdbusplus::message_t& msg)
 {
     bool present;
     auto fanPath = msg.get_path();
diff --git a/presence/error_reporter.hpp b/presence/error_reporter.hpp
index a8c9d6f..d6bc109 100644
--- a/presence/error_reporter.hpp
+++ b/presence/error_reporter.hpp
@@ -42,7 +42,7 @@
      * @param[in] fans - The fans for this configuration
      */
     ErrorReporter(
-        sdbusplus::bus::bus& bus,
+        sdbusplus::bus_t& bus,
         const std::vector<
             std::tuple<Fan, std::vector<std::unique_ptr<PresenceSensor>>>>&
             fans);
@@ -56,7 +56,7 @@
      *
      * @param[in] msg - The payload of the propertiesChanged signal
      */
-    void presenceChanged(sdbusplus::message::message& msg);
+    void presenceChanged(sdbusplus::message_t& msg);
 
     /**
      * @brief The callback function called by the PowerState class
@@ -89,7 +89,7 @@
     /**
      * @brief Reference to the D-Bus connection object.
      */
-    sdbusplus::bus::bus& _bus;
+    sdbusplus::bus_t& _bus;
 
     /**
      * @brief The connection to the event loop for the timer.
@@ -99,7 +99,7 @@
     /**
      * @brief The propertiesChanged match objects.
      */
-    std::vector<sdbusplus::bus::match::match> _matches;
+    std::vector<sdbusplus::bus::match_t> _matches;
 
     /**
      * @brief Base class pointer to the power state implementation.
diff --git a/presence/json_parser.cpp b/presence/json_parser.cpp
index 7858c4f..02c9a11 100644
--- a/presence/json_parser.cpp
+++ b/presence/json_parser.cpp
@@ -52,7 +52,7 @@
 const auto loggingPath = "/xyz/openbmc_project/logging";
 const auto loggingCreateIface = "xyz.openbmc_project.Logging.Create";
 
-JsonConfig::JsonConfig(sdbusplus::bus::bus& bus) : _bus(bus)
+JsonConfig::JsonConfig(sdbusplus::bus_t& bus) : _bus(bus)
 {}
 
 void JsonConfig::start()
diff --git a/presence/json_parser.hpp b/presence/json_parser.hpp
index 216c235..7dbe115 100644
--- a/presence/json_parser.hpp
+++ b/presence/json_parser.hpp
@@ -55,7 +55,7 @@
      *
      * @param[in] bus - sdbusplus bus object
      */
-    explicit JsonConfig(sdbusplus::bus::bus& bus);
+    explicit JsonConfig(sdbusplus::bus_t& bus);
 
     /**
      * @brief Get the json config based fan presence policies
@@ -86,7 +86,7 @@
     static policies _policies;
 
     /* The sdbusplus bus object */
-    sdbusplus::bus::bus& _bus;
+    sdbusplus::bus_t& _bus;
 
     /* List of Fan objects to have presence policies */
     std::vector<fanPolicy> _fans;
diff --git a/presence/tach.cpp b/presence/tach.cpp
index 4c2dc14..9fa8256 100644
--- a/presence/tach.cpp
+++ b/presence/tach.cpp
@@ -57,7 +57,7 @@
         auto tachPath = tachNamespace + std::get<std::string>(s);
 
         // Register for signal callbacks.
-        std::get<1>(s) = std::make_unique<sdbusplus::bus::match::match>(
+        std::get<1>(s) = std::make_unique<sdbusplus::bus::match_t>(
             util::SDBusPlus::getBus(),
             sdbusplus::bus::match::rules::propertiesChanged(tachPath,
                                                             tachIface),
@@ -111,7 +111,7 @@
                        [](const auto& v) { return v != 0; });
 }
 
-void Tach::propertiesChanged(size_t sensor, sdbusplus::message::message& msg)
+void Tach::propertiesChanged(size_t sensor, sdbusplus::message_t& msg)
 {
     std::string iface;
     util::Properties<double> properties;
diff --git a/presence/tach.hpp b/presence/tach.hpp
index 8fd9a08..db8efa2 100644
--- a/presence/tach.hpp
+++ b/presence/tach.hpp
@@ -100,11 +100,11 @@
      * @param[in] sensor - The sensor that changed.
      * @param[in] msg - The sdbusplus signal message.
      */
-    void propertiesChanged(size_t sensor, sdbusplus::message::message& msg);
+    void propertiesChanged(size_t sensor, sdbusplus::message_t& msg);
 
     /** @brief array of tach sensors dbus matches, and tach values. */
-    std::vector<std::tuple<
-        std::string, std::unique_ptr<sdbusplus::bus::match::match>, double>>
+    std::vector<std::tuple<std::string,
+                           std::unique_ptr<sdbusplus::bus::match_t>, double>>
         state;
 
     /** The current state of the sensor. */
