diff --git a/fail-monitor/monitor.cpp b/fail-monitor/monitor.cpp
index 2ca61ad..6c46558 100644
--- a/fail-monitor/monitor.cpp
+++ b/fail-monitor/monitor.cpp
@@ -46,7 +46,7 @@
 
 bool Monitor::inFailedState(const std::string&& path)
 {
-    sdbusplus::message::variant<std::string> property;
+    std::variant<std::string> property;
 
     auto method = bus.new_method_call(SYSTEMD_SERVICE, path.c_str(),
                                       SYSTEMD_PROPERTY_INTERFACE, "Get");
diff --git a/src/main.cpp b/src/main.cpp
index 5f75432..90c6340 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -134,8 +134,7 @@
     system_bus->async_method_call(
         [&objectServer, path, processName, &interfaceMap](
             const boost::system::error_code ec,
-            const sdbusplus::message::variant<std::vector<Association>>&
-                variantAssociations) {
+            const std::variant<std::vector<Association>>& variantAssociations) {
             if (ec)
             {
                 std::cerr << "Error getting associations from " << path << "\n";
@@ -603,9 +602,8 @@
         associationChangedHandler = [&server, &name_owners, &interface_map](
                                         sdbusplus::message::message& message) {
             std::string objectName;
-            boost::container::flat_map<
-                std::string,
-                sdbusplus::message::variant<std::vector<Association>>>
+            boost::container::flat_map<std::string,
+                                       std::variant<std::vector<Association>>>
                 values;
             message.read(objectName, values);
             auto prop = values.find(assocDefsProperty);
diff --git a/src/processing.cpp b/src/processing.cpp
index b0c73b3..229f417 100644
--- a/src/processing.cpp
+++ b/src/processing.cpp
@@ -111,8 +111,8 @@
 
         if (interfacePair.first == assocDefsInterface)
         {
-            const sdbusplus::message::variant<std::vector<Association>>*
-                variantAssociations = nullptr;
+            const std::variant<std::vector<Association>>* variantAssociations =
+                nullptr;
             for (const auto& interface : interfacePair.second)
             {
                 if (interface.first == assocDefsProperty)
diff --git a/src/processing.hpp b/src/processing.hpp
index 75a4350..114b502 100644
--- a/src/processing.hpp
+++ b/src/processing.hpp
@@ -25,9 +25,8 @@
  * pair2: D-bus Method,vector[Associations]
  */
 using InterfacesAdded = std::vector<std::pair<
-    std::string,
-    std::vector<std::pair<
-        std::string, sdbusplus::message::variant<std::vector<Association>>>>>>;
+    std::string, std::vector<std::pair<
+                     std::string, std::variant<std::vector<Association>>>>>>;
 
 /** @brief Get well known name of input unique name
  *
diff --git a/src/test/interfaces_added.cpp b/src/test/interfaces_added.cpp
index 5aa4212..ee0e438 100644
--- a/src/test/interfaces_added.cpp
+++ b/src/test/interfaces_added.cpp
@@ -22,10 +22,8 @@
     std::vector<Association> associations = {
         {"inventory", "error",
          "/xyz/openbmc_project/inventory/system/chassis"}};
-    sdbusplus::message::variant<std::vector<Association>> sdbVecAssoc = {
-        associations};
-    std::vector<std::pair<
-        std::string, sdbusplus::message::variant<std::vector<Association>>>>
+    std::variant<std::vector<Association>> sdbVecAssoc = {associations};
+    std::vector<std::pair<std::string, std::variant<std::vector<Association>>>>
         vecMethToAssoc = {{property, sdbVecAssoc}};
     InterfacesAdded intfAdded = {{interface, vecMethToAssoc}};
     return intfAdded;
