diff --git a/powermode.hpp b/powermode.hpp
index f0aca51..4cbbf15 100644
--- a/powermode.hpp
+++ b/powermode.hpp
@@ -74,6 +74,7 @@
     uint16_t ipsEnterTime = 0;
     uint8_t ipsExitUtil = 0;
     uint16_t ipsExitTime = 0;
+    bool modeLocked = false;
 
     /** @brief Function specifying data to archive for cereal.
      */
@@ -81,7 +82,8 @@
     void serialize(Archive& archive)
     {
         archive(modeInitialized, mode, oemModeData, ipsInitialized, ipsEnabled,
-                ipsEnterUtil, ipsEnterTime, ipsExitUtil, ipsExitTime);
+                ipsEnterUtil, ipsEnterTime, ipsExitUtil, ipsExitTime,
+                modeLocked);
     }
 };
 
@@ -118,6 +120,15 @@
         save();
     }
 
+    /** @brief Save Power Mode Lock value to persistent file
+     *
+     *  @param[in] modeLock - desired System Power Mode Lock
+     */
+    void updateModeLock(const bool modeLock)
+    {
+        modeData.modeLocked = modeLock;
+        save();
+    }
     /** @brief Write Idle Power Saver parameters to persistent file
      *
      *  @param[in] enabled - Idle Power Save status (true = enabled)
@@ -184,6 +195,12 @@
         return true;
     }
 
+    /** @brief Return persisted mode lock */
+    bool getModeLock()
+    {
+        return modeData.modeLocked;
+    }
+
     /** @brief Return true if the power mode is available */
     bool modeAvailable()
     {
@@ -285,6 +302,18 @@
      */
     bool initPersistentData();
 
+    /** @brief Set the power mode lock (dbus method)
+     *
+     * @return true if successful
+     */
+    bool powerModeLock();
+
+    /** @brief Get the power mode lock status (dbus method)
+     *
+     * @return true if locked
+     */
+    bool powerModeLockStatus();
+
     /** @brief Set the current power mode property
      *
      * @param[in] newMode     - desired system power mode
@@ -335,6 +364,14 @@
     /** @brief Set dbus property to SAFE Mode(true) or clear SAFE Mode(false)*/
     void updateDbusSafeMode(const bool safeMode);
 
+    /** @brief override the set/get MODE function
+     *
+     *  @param[in] value - Intended value
+     *
+     *  @return          - the value or Updated value of the property
+     */
+    Base::Mode::PowerMode powerMode(Base::Mode::PowerMode value) override;
+
   private:
     /** @brief OCC manager object */
     const Manager& manager;
