diff --git a/softoff/softoff.hpp b/softoff/softoff.hpp
index dcb4b18..06f3861 100644
--- a/softoff/softoff.hpp
+++ b/softoff/softoff.hpp
@@ -3,6 +3,7 @@
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
 #include <xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp>
+#include "timer.hpp"
 namespace phosphor
 {
 namespace ipmi
@@ -19,15 +20,22 @@
     public:
         /** @brief Constructs SoftPowerOff object.
          *
-         *  @param[in] bus      - system dbus handler
-         *  @param[in] objPath  - The Dbus path that hosts SoftPowerOff function
+         *  @param[in] bus       - system dbus handler
+         *  @param[in] event     - sd_event handler
+         *  @param[in] objPath   - The Dbus path hosting SoftPowerOff function
          */
         SoftPowerOff(sdbusplus::bus::bus& bus,
+                     sd_event* event,
                      const char* objPath) :
             sdbusplus::server::object::object<
-                Base::SoftPowerOff>(bus, objPath),
-                bus(bus)
+                Base::SoftPowerOff>(bus, objPath, false),
+                bus(bus),
+                timer(event)
         {
+            // Need to announce since we may get the response
+            // very quickly on SMS_ATN
+            emit_object_added();
+
             // The whole purpose of this application is to send SMS_ATTN
             // and watch for the soft power off to go through. We need the
             // interface added signal emitted before we send SMS_ATN just to
@@ -35,12 +43,43 @@
             sendSMSAttn();
         }
 
+        /** @brief Tells if the objective of this application is completed */
+        inline auto isCompleted()
+        {
+            return completed;
+        }
+
+        /** @brief Tells if the referenced timer is expired or not */
+        inline auto isTimerExpired()
+        {
+            return timer.isExpired();
+        }
+
     private:
+        // Need this to send SMS_ATTN
+        // TODO : Switch over to using mapper service in a different patch
+        static constexpr auto HOST_IPMI_BUS  = "org.openbmc.HostIpmi";
+        static constexpr auto HOST_IPMI_OBJ  = "/org/openbmc/HostIpmi/1";
+        static constexpr auto HOST_IPMI_INTF = "org.openbmc.HostIpmi";
+
+        /* @brief sdbusplus handle */
+        sdbusplus::bus::bus& bus;
+
+        /** @brief Reference to Timer object */
+        Timer timer;
+
+        /** @brief Marks the end of life of this application.
+         *
+         *  This is set to true if host gives appropriate responses
+         *  for the sequence of commands.
+         */
+        bool completed = false;
+
         /** @brief Sends SMS_ATN to host to initiate soft power off process.
          *
-         *  After sending the SMS_ATN, starts a watchdog timer for 30
+         *  After sending the SMS_ATN, starts a timer for 30
          *  seconds and expects a initial response from the host.
-         *  After receiving the initial response, starts another watchdog
+         *  After receiving the initial response, starts another
          *  timer for 30 minutes to let host do a clean shutdown of
          *  partitions. When the second response is received from the
          *  host, it indicates that BMC can do a power off.
@@ -51,9 +90,6 @@
          *            being thrown
          */
         void sendSMSAttn();
-
-        /* @brief sdbusplus handle */
-        sdbusplus::bus::bus& bus;
 };
 } // namespace ipmi
 } // namespace phosphor
