diff --git a/callout.cpp b/callout.cpp
index 3d893bd..6c96455 100644
--- a/callout.cpp
+++ b/callout.cpp
@@ -99,34 +99,31 @@
     auto it = properties.find("BuildDate");
     if (it != properties.end())
     {
-        buildDate(sdbusplus::message::variant_ns::get<std::string>(it->second));
+        buildDate(std::get<std::string>(it->second));
     }
 
     it = properties.find("Manufacturer");
     if (it != properties.end())
     {
-        manufacturer(
-            sdbusplus::message::variant_ns::get<std::string>(it->second));
+        manufacturer(std::get<std::string>(it->second));
     }
 
     it = properties.find("Model");
     if (it != properties.end())
     {
-        model(sdbusplus::message::variant_ns::get<std::string>(it->second));
+        model(std::get<std::string>(it->second));
     }
 
     it = properties.find("PartNumber");
     if (it != properties.end())
     {
-        partNumber(
-            sdbusplus::message::variant_ns::get<std::string>(it->second));
+        partNumber(std::get<std::string>(it->second));
     }
 
     it = properties.find("SerialNumber");
     if (it != properties.end())
     {
-        serialNumber(
-            sdbusplus::message::variant_ns::get<std::string>(it->second));
+        serialNumber(std::get<std::string>(it->second));
     }
 
     emit_object_added();
diff --git a/manager.cpp b/manager.cpp
index 7055e43..7d3fd7a 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -194,9 +194,7 @@
 
     const auto& properties = associations->second;
     auto assocProperty = properties.find("Associations");
-    auto assocValue =
-        sdbusplus::message::variant_ns::get<AssociationsPropertyType>(
-            assocProperty->second);
+    auto assocValue = std::get<AssociationsPropertyType>(assocProperty->second);
 
     auto id = getEntryID(objectPath);
     auto calloutNum = 0;
@@ -319,8 +317,7 @@
         auto property = interface->second.find("Timestamp");
         if (property != interface->second.end())
         {
-            return sdbusplus::message::variant_ns::get<uint64_t>(
-                property->second);
+            return std::get<uint64_t>(property->second);
         }
     }
 
diff --git a/policy_find.cpp b/policy_find.cpp
index 51576eb..191240e 100644
--- a/policy_find.cpp
+++ b/policy_find.cpp
@@ -44,7 +44,7 @@
 
     if (prop != properties.end())
     {
-        return sdbusplus::message::variant_ns::get<T>(prop->second);
+        return std::get<T>(prop->second);
     }
 
     return {};
diff --git a/test/test_callout.cpp b/test/test_callout.cpp
index d5fec71..10b55fb 100644
--- a/test/test_callout.cpp
+++ b/test/test_callout.cpp
@@ -74,20 +74,14 @@
         ASSERT_EQ(callout->ts(), ts);
         ASSERT_EQ(callout->path(), calloutPath);
         ASSERT_EQ(callout->buildDate(),
-                  sdbusplus::message::variant_ns::get<std::string>(
-                      assetProps["BuildDate"]));
+                  std::get<std::string>(assetProps["BuildDate"]));
         ASSERT_EQ(callout->manufacturer(),
-                  sdbusplus::message::variant_ns::get<std::string>(
-                      assetProps["Manufacturer"]));
-        ASSERT_EQ(callout->model(),
-                  sdbusplus::message::variant_ns::get<std::string>(
-                      assetProps["Model"]));
+                  std::get<std::string>(assetProps["Manufacturer"]));
+        ASSERT_EQ(callout->model(), std::get<std::string>(assetProps["Model"]));
         ASSERT_EQ(callout->partNumber(),
-                  sdbusplus::message::variant_ns::get<std::string>(
-                      assetProps["PartNumber"]));
+                  std::get<std::string>(assetProps["PartNumber"]));
         ASSERT_EQ(callout->serialNumber(),
-                  sdbusplus::message::variant_ns::get<std::string>(
-                      assetProps["SerialNumber"]));
+                  std::get<std::string>(assetProps["SerialNumber"]));
     }
 
     // Test a serialization failure due to a bad timestamp
