diff --git a/settings.cpp b/settings.cpp
index e76694f..93eb094 100644
--- a/settings.cpp
+++ b/settings.cpp
@@ -19,30 +19,19 @@
 Objects::Objects(sdbusplus::bus_t& bus, const std::vector<Interface>& filter) :
     bus(bus)
 {
-    auto depth = 0;
-
-    auto mapperCall = bus.new_method_call(mapperService, mapperPath, mapperIntf,
-                                          "GetSubTree");
-    mapperCall.append(root);
-    mapperCall.append(depth);
-    mapperCall.append(filter);
-
-    using Interfaces = std::vector<Interface>;
-    using MapperResponse = std::map<Path, std::map<Service, Interfaces>>;
-    MapperResponse result;
+    ipmi::ObjectTree objectTree;
     try
     {
-        auto response = bus.call(mapperCall);
-        response.read(result);
+        objectTree = ipmi::getSubTree(bus, filter);
     }
     catch (const std::exception& e)
     {
-        log<level::ERR>("Error in mapper GetSubTree",
+        log<level::ERR>("Failed to call the getSubTree method.",
                         entry("ERROR=%s", e.what()));
         elog<InternalFailure>();
     }
 
-    for (auto& iter : result)
+    for (auto& iter : objectTree)
     {
         const auto& path = iter.first;
         for (auto& interface : iter.second.begin()->second)
