diff --git a/src/EntityManager.cpp b/src/EntityManager.cpp
index 493dbfb..adbf134 100644
--- a/src/EntityManager.cpp
+++ b/src/EntityManager.cpp
@@ -70,7 +70,7 @@
     sdbusplus::message::object_path,
     boost::container::flat_map<
         std::string,
-        boost::container::flat_map<std::string, BasicVariantType>>>;
+        boost::container::flat_map<std::string, DBusValueVariant>>>;
 
 // store reference to all interfaces so we can destroy them later
 boost::container::flat_map<
diff --git a/src/PerformProbe.cpp b/src/PerformProbe.cpp
index adf45d6..690ce15 100644
--- a/src/PerformProbe.cpp
+++ b/src/PerformProbe.cpp
@@ -43,7 +43,7 @@
         foundProbe = true;
 
         bool deviceMatches = true;
-        const boost::container::flat_map<std::string, BasicVariantType>&
+        const boost::container::flat_map<std::string, DBusValueVariant>&
             properties = it->second;
 
         for (const auto& [matchProp, matchJSON] : matches)
@@ -197,7 +197,7 @@
     if (ret && foundDevs.size() == 0)
     {
         foundDevs.emplace_back(
-            boost::container::flat_map<std::string, BasicVariantType>{},
+            boost::container::flat_map<std::string, DBusValueVariant>{},
             std::string{});
     }
     if (matchOne && ret)
diff --git a/src/PerformScan.cpp b/src/PerformScan.cpp
index dd3e3d4..5d05403 100644
--- a/src/PerformScan.cpp
+++ b/src/PerformScan.cpp
@@ -53,7 +53,7 @@
     systemBus->async_method_call(
         [call, scan, probeVector, retries](
             boost::system::error_code& errc,
-            const boost::container::flat_map<std::string, BasicVariantType>&
+            const boost::container::flat_map<std::string, DBusValueVariant>&
                 resp) {
             if (errc)
             {
@@ -211,7 +211,7 @@
 }
 
 std::string getRecordName(
-    const boost::container::flat_map<std::string, BasicVariantType>& probe,
+    const boost::container::flat_map<std::string, DBusValueVariant>& probe,
     const std::string& probeName)
 {
     if (probe.empty())
@@ -379,14 +379,14 @@
                 std::optional<std::string> replaceStr;
 
                 MapperGetSubTreeResponse::mapped_type emptyInterfaces;
-                boost::container::flat_map<std::string, BasicVariantType>
+                boost::container::flat_map<std::string, DBusValueVariant>
                     emptyProps;
                 emptyInterfaces.emplace(std::string{}, emptyProps);
 
                 for (auto& foundDeviceAndPath : foundDevices)
                 {
                     const boost::container::flat_map<
-                        std::string, BasicVariantType>& foundDevice =
+                        std::string, DBusValueVariant>& foundDevice =
                         std::get<0>(foundDeviceAndPath);
                     const std::string& path = std::get<1>(foundDeviceAndPath);
 
diff --git a/src/Utils.cpp b/src/Utils.cpp
index 31a10bc..48c04fa 100644
--- a/src/Utils.cpp
+++ b/src/Utils.cpp
@@ -190,7 +190,7 @@
 std::optional<std::string> templateCharReplace(
     nlohmann::json::iterator& keyPair,
     const boost::container::flat_map<
-        std::string, boost::container::flat_map<std::string, BasicVariantType>>&
+        std::string, boost::container::flat_map<std::string, DBusValueVariant>>&
         allInterfaces,
     const size_t foundDeviceIdx, const std::optional<std::string>& replaceStr)
 {
@@ -211,7 +211,7 @@
 // ADDRESS field from a object on dbus
 std::optional<std::string> templateCharReplace(
     nlohmann::json::iterator& keyPair,
-    const boost::container::flat_map<std::string, BasicVariantType>&
+    const boost::container::flat_map<std::string, DBusValueVariant>&
         foundDevice,
     const size_t foundDeviceIdx, const std::optional<std::string>& replaceStr)
 {
@@ -456,7 +456,7 @@
 /// \brief JSON/DBus matching Callable for std::variant (visitor)
 ///
 /// Default match JSON/DBus match implementation
-/// \tparam T The concrete DBus value type from BasicVariantType
+/// \tparam T The concrete DBus value type from DBusValueVariant
 template <typename T>
 struct MatchProbe
 {
@@ -517,7 +517,7 @@
     }
 };
 
-bool matchProbe(const nlohmann::json& probe, const BasicVariantType& dbusValue)
+bool matchProbe(const nlohmann::json& probe, const DBusValueVariant& dbusValue)
 {
     return std::visit(MatchProbeForwarder(probe), dbusValue);
 }
