diff --git a/network_manager_main.cpp b/network_manager_main.cpp
index 461ddd6..993efc7 100644
--- a/network_manager_main.cpp
+++ b/network_manager_main.cpp
@@ -1,26 +1,56 @@
+#include "network_manager.hpp"
+#include "rtnetlink_server.hpp"
+
+#include <memory>
+
+#include <phosphor-logging/log.hpp>
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/manager.hpp>
-#include "config.h"
-#include "network_manager.hpp"
+
+namespace phosphor
+{
+namespace network
+{
+
+std::unique_ptr<phosphor::network::Manager> manager = nullptr;
+
+} //namespace network
+} //namespace phosphor
 
 int main(int argc, char *argv[])
 {
+    using namespace phosphor::logging;
+
     auto bus = sdbusplus::bus::new_default();
 
+    // Need sd_event to watch for OCC device errors
+    sd_event* event = nullptr;
+    auto r = sd_event_default(&event);
+    if (r < 0)
+    {
+        log<level::ERR>("Error creating a default sd_event handler");
+        return r;
+    }
+
+    phosphor::network::EventPtr eventPtr{event};
+    event = nullptr;
+
+    // Attach the bus to sd_event to service user requests
+    bus.attach_event(eventPtr.get(), SD_EVENT_PRIORITY_NORMAL);
+
     // Add sdbusplus Object Manager for the 'root' path of the network manager.
     sdbusplus::server::manager::manager objManager(bus, OBJ_NETWORK);
     bus.request_name(BUSNAME_NETWORK);
 
-    phosphor::network::Manager manager(bus, OBJ_NETWORK, NETWORK_CONF_DIR);
+    phosphor::network::manager =
+            std::make_unique<phosphor::network::Manager>(bus,
+                                                         OBJ_NETWORK,
+                                                         NETWORK_CONF_DIR);
 
-    manager.createChildObjects();
+    phosphor::network::rtnetlink::Server svr(eventPtr);
+
+    phosphor::network::manager->createChildObjects();
 
 
-    while(true)
-    {
-        bus.process_discard();
-        bus.wait();
-    }
-
-    return 0;
+    return svr.run();
 }
