diff --git a/bmc_state_manager.hpp b/bmc_state_manager.hpp
index 1ddef53..bbace38 100644
--- a/bmc_state_manager.hpp
+++ b/bmc_state_manager.hpp
@@ -21,10 +21,6 @@
     public:
         /** @brief Constructs BMC State Manager
          *
-         *  @note This constructor passes 'true' to the base class in order to
-         *  defer dbus object registration until we can run
-         *  subscribeToSystemdSignals() and set our properties
-         *
          * @param[in] bus       - The Dbus bus object
          * @param[in] busName   - The Dbus name to own
          * @param[in] objPath   - The Dbus object path
@@ -34,7 +30,17 @@
                 sdbusplus::server::object::object<
                     sdbusplus::xyz::openbmc_project::State::server::BMC>(
                         bus, objPath),
-                        bus(bus)
+                            bus(bus),
+                            stateSignal(
+                                std::make_unique<
+                                decltype(stateSignal)::element_type>(
+                                bus,
+                                "type='signal',"
+                                "member='JobRemoved',"
+                                "path='/org/freedesktop/systemd1',"
+                                "interface='org.freedesktop.systemd1.Manager'",
+                                bmcStateChangeSignal,
+                                this))
         {
             subscribeToSystemdSignals();
         };
@@ -42,6 +48,8 @@
         /** @brief Set value of BMCTransition **/
         Transition requestedBMCTransition(Transition value) override;
 
+        /** @brief Set value of CurrentBMCState **/
+        BMCState currentBMCState(BMCState value) override;
 
     private:
         /**
@@ -55,9 +63,34 @@
          */
         void executeTransition(Transition tranReq);
 
+        /** @brief Callback used to direct you into the class
+         *
+         * @param[in]  msg       - Data associated with subscribed signal
+         * @param[in]  userData  - Pointer to this object instance
+         * @param[out] retError  - return error data if any
+         *
+         */
+        static int bmcStateChangeSignal(sd_bus_message* msg,
+                                        void* userData,
+                                        sd_bus_error* retError);
+
+        /** @brief Callback function on bmc state change
+         *
+         * Check if the state is relevant to the BMC and if so, update
+         * corresponding BMC object's state
+         *
+         * @param[in]  msg       - Data associated with subscribed signal
+         * @param[out] retError  - return error data if any
+         *
+         */
+        int bmcStateChange(sd_bus_message* msg,
+                           sd_bus_error* retError);
+
         /** @brief Persistent sdbusplus DBus bus connection. **/
         sdbusplus::bus::bus& bus;
 
+        /** @brief Used to subscribe to dbus system state changes **/
+        std::unique_ptr<sdbusplus::server::match::match> stateSignal;
 };
 
 } // namespace manager
