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;
