diff --git a/sensordatahandler.cpp b/sensordatahandler.cpp
index f5c1e53..c973f2e 100644
--- a/sensordatahandler.cpp
+++ b/sensordatahandler.cpp
@@ -260,7 +260,7 @@
 
     for (const auto& property : interface->second)
     {
-        Value tmp{mapbox::util::no_init()};
+        Value tmp{sdbusplus::message::variant_ns::no_init()};
         for (const auto& value : std::get<OffsetValueMap>(property.second))
         {
             if (bothSet.size() <= value.first || !bothSet.test(value.first))
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index 770f6dc..08a6325 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -31,6 +31,8 @@
 using InternalFailure =
     sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
 
+namespace variant_ns = sdbusplus::message::variant_ns;
+
 void register_netfn_sen_functions() __attribute__((constructor));
 
 struct sensorTypemap_t
@@ -451,10 +453,10 @@
     auto warnThresholds = ipmi::getAllDbusProperties(
         bus, service, info.sensorPath, warningThreshIntf);
 
-    double warnLow = mapbox::util::apply_visitor(ipmi::VariantToDoubleVisitor(),
-                                                 warnThresholds["WarningLow"]);
-    double warnHigh = mapbox::util::apply_visitor(
-        ipmi::VariantToDoubleVisitor(), warnThresholds["WarningHigh"]);
+    double warnLow = variant_ns::apply_visitor(ipmi::VariantToDoubleVisitor(),
+                                               warnThresholds["WarningLow"]);
+    double warnHigh = variant_ns::apply_visitor(ipmi::VariantToDoubleVisitor(),
+                                                warnThresholds["WarningHigh"]);
 
     if (warnLow != 0)
     {
@@ -476,10 +478,10 @@
 
     auto critThresholds = ipmi::getAllDbusProperties(
         bus, service, info.sensorPath, criticalThreshIntf);
-    double critLow = mapbox::util::apply_visitor(ipmi::VariantToDoubleVisitor(),
-                                                 critThresholds["CriticalLow"]);
-    double critHigh = mapbox::util::apply_visitor(
-        ipmi::VariantToDoubleVisitor(), critThresholds["CriticalHigh"]);
+    double critLow = variant_ns::apply_visitor(ipmi::VariantToDoubleVisitor(),
+                                               critThresholds["CriticalLow"]);
+    double critHigh = variant_ns::apply_visitor(ipmi::VariantToDoubleVisitor(),
+                                                critThresholds["CriticalHigh"]);
 
     if (critLow != 0)
     {
