diff --git a/softoff/mainapp.cpp b/softoff/mainapp.cpp
index 38b6984..f5fbf18 100644
--- a/softoff/mainapp.cpp
+++ b/softoff/mainapp.cpp
@@ -13,32 +13,60 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#include <systemd/sd-event.h>
 #include <phosphor-logging/log.hpp>
 #include "softoff.hpp"
 #include "config.h"
+#include "timer.hpp"
 
 using namespace phosphor::logging;
 
 int main(int argc, char** argv)
 {
+    // systemd event handler
+    sd_event* events = nullptr;
+
     // Get a handle to system dbus.
     auto bus = sdbusplus::bus::new_default();
 
     // Add systemd object manager.
     sdbusplus::server::manager::manager(bus, SOFTOFF_OBJPATH);
 
+    // sd_event object
+    auto r = sd_event_default(&events);
+    if (r < 0)
+    {
+        log<level::ERR>("Failure to create sd_event handler",
+                entry("ERROR=%s", strerror(-r)));
+        return -1;
+    }
+
+    // Attach the bus to sd_event to service user requests
+    bus.attach_event(events, SD_EVENT_PRIORITY_NORMAL);
+
     // Create the SoftPowerOff object.
-    phosphor::ipmi::SoftPowerOff object(bus, SOFTOFF_OBJPATH);
+    phosphor::ipmi::SoftPowerOff powerObj(bus, events, SOFTOFF_OBJPATH);
 
     /** @brief Claim the bus */
     bus.request_name(SOFTOFF_BUSNAME);
 
-    /** @brief Wait for client requests */
-    while(true)
+    /** @brief Wait for client requests until this application has processed
+     *         at least one successful SoftPowerOff
+     */
+    while(!powerObj.isCompleted() && !powerObj.isTimerExpired())
     {
-        // Handle dbus message / signals discarding unhandled
-        bus.process_discard();
-        bus.wait();
+        // -1 denotes wait for ever
+        r = sd_event_run(events, (uint64_t)-1);
+        if (r < 0)
+        {
+            log<level::ERR>("Failure in processing request",
+                    entry("ERROR=%s", strerror(-r)));
+            break;
+        }
     }
+
+    // Cleanup the event handler
+    events = sd_event_unref(events);
+
     return 0;
 }
