diff --git a/src/mdrv2_main.cpp b/src/mdrv2_main.cpp
index 42b874f..2699571 100644
--- a/src/mdrv2_main.cpp
+++ b/src/mdrv2_main.cpp
@@ -1,5 +1,5 @@
 /*
-// Copyright (c) 2019 Intel Corporation
+// Copyright (c) 2018 Intel Corporation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -16,33 +16,32 @@
 
 #include "mdrv2.hpp"
 
-#include <systemd/sd-event.h>
-
+#include <boost/asio/io_context.hpp>
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/elog.hpp>
+#include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
+boost::asio::io_context io;
+auto connection = std::make_shared<sdbusplus::asio::connection>(io);
+auto objServer = sdbusplus::asio::object_server(connection);
+
+sdbusplus::asio::object_server& getObjectServer(void)
+{
+    return objServer;
+}
 
 int main(void)
 {
-    sd_event* events = nullptr;
-    sd_event_default(&events);
-    sdbusplus::bus::bus bus = sdbusplus::bus::new_default();
+    sdbusplus::bus::bus& bus = static_cast<sdbusplus::bus::bus&>(*connection);
     sdbusplus::server::manager::manager objManager(
         bus, "/xyz/openbmc_project/inventory");
-    bus.attach_event(events, SD_EVENT_PRIORITY_NORMAL);
+
     bus.request_name("xyz.openbmc_project.Smbios.MDR_V2");
 
-    phosphor::smbios::MDR_V2 mdrV2(bus, mdrV2Path, events);
+    phosphor::smbios::MDR_V2 mdrV2(bus, phosphor::smbios::mdrV2Path, io);
 
-    while (true)
-    {
-        int r = sd_event_run(events, (uint64_t)-1);
-        if (r < 0)
-        {
-            phosphor::logging::log<phosphor::logging::level::ERR>(
-                "Failure processing request",
-                phosphor::logging::entry("errno=0x%X", -r));
-            return -1;
-        }
-    }
+    io.run();
+
     return 0;
 }
