diff --git a/powermode.hpp b/powermode.hpp
index 5342c77..0ec22a5 100644
--- a/powermode.hpp
+++ b/powermode.hpp
@@ -159,9 +159,8 @@
      * @param[in] managerRef -
      * @param[in] path -
      */
-    explicit PowerMode(Manager& managerRef, const char* path) :
-        manager(managerRef), path(path), occInstance(this->path.back() - '0'),
-        occCmd(occInstance, path),
+    explicit PowerMode(const Manager& managerRef) :
+        manager(managerRef), occInstance(0),
         pmodeMatch(utils::getBus(),
                    sdbusplus::bus::match::rules::propertiesChanged(
                        PMODE_PATH, PMODE_INTERFACE),
@@ -170,7 +169,7 @@
                  sdbusplus::bus::match::rules::propertiesChanged(
                      PIPS_PATH, PIPS_INTERFACE),
                  [this](auto& msg) { this->ipsChanged(msg); }),
-        masterActive(false){};
+        masterOccSet(false), masterActive(false){};
 
     bool setMode(const SysPwrMode newMode, const uint16_t modedata);
 
@@ -184,6 +183,12 @@
      */
     CmdStatus sendIpsData();
 
+    /** @brief Set the master OCC path
+     *
+     * @param[in]  occPath - hwmon path for master OCC
+     */
+    void setMasterOcc(const std::string& occPath);
+
     /** @brief Notify object of master OCC state.  If not acitve, no
      * commands will be sent to the master OCC
      *
@@ -205,7 +210,7 @@
     int occInstance;
 
     /** @brief Object to send commands to the OCC */
-    OccCommand occCmd;
+    std::unique_ptr<open_power::occ::OccCommand> occCmd;
 
     /** @brief Used to subscribe to dbus pmode property changes **/
     sdbusplus::bus::match_t pmodeMatch;
@@ -215,6 +220,10 @@
 
     OccPersistData persistedData;
 
+    /** @brief True when the master OCC has been established */
+    bool masterOccSet;
+
+    /** @brief True when the master OCC is active */
     bool masterActive;
 
     /** @brief Callback for pmode setting changes
