diff --git a/control/actions.hpp b/control/actions.hpp
index 96da323..21d9365 100644
--- a/control/actions.hpp
+++ b/control/actions.hpp
@@ -35,6 +35,7 @@
             {
                 return zone.getPropertyValue(
                         entry.first,
+                        std::get<intfPos>(entry.second),
                         std::get<propPos>(entry.second)) == state;
             });
         // Update group's fan control active allowed based on action results
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 694477b..20c1534 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -95,6 +95,7 @@
                                     "${s['property']}",
                                     handler::setProperty<${s['type']}>(
                                         "${s['member']}",
+                                        "${s['interface']}",
                                         "${s['property']}"
                                     )
                                 ))
diff --git a/control/handlers.hpp b/control/handlers.hpp
index 0503c53..79c299b 100644
--- a/control/handlers.hpp
+++ b/control/handlers.hpp
@@ -15,17 +15,18 @@
  * an object's path and property names
  *
  * @param[in] path - Object's path name
+ * @param[in] interface - Object's interface name
  * @param[in] property - Object's property name
  *
  * @return Lambda function
  *     A lambda function to set/update the property value
  */
 template <typename T>
-auto setProperty(const char* path, const char* property)
+auto setProperty(const char* path, const char* interface, const char* property)
 {
     return [=](auto& zone, T&& arg)
     {
-        zone.setPropertyValue(path, property, std::forward<T>(arg));
+        zone.setPropertyValue(path, interface, property, std::forward<T>(arg));
     };
 }
 
diff --git a/control/zone.cpp b/control/zone.cpp
index 849cd91..7a61c77 100644
--- a/control/zone.cpp
+++ b/control/zone.cpp
@@ -58,6 +58,7 @@
                                 std::get<propPos>(entry.second),
                                 value);
                     setPropertyValue(entry.first.c_str(),
+                                     std::get<intfPos>(entry.second).c_str(),
                                      std::get<propPos>(entry.second).c_str(),
                                      value);
                 }
diff --git a/control/zone.hpp b/control/zone.hpp
index 5825b52..bd6e080 100644
--- a/control/zone.hpp
+++ b/control/zone.hpp
@@ -82,28 +82,32 @@
          * @brief Sets a given object's property value
          *
          * @param[in] object - Name of the object containing the property
+         * @param[in] interface - Interface name containing the property
          * @param[in] property - Property name
          * @param[in] value - Property value
          */
         void setPropertyValue(const char* object,
+                              const char* interface,
                               const char* property,
                               bool value)
         {
-            _properties[object][property] = value;
+            _properties[object][interface][property] = value;
         };
 
         /**
          * @brief Get the value of an object's property
          *
          * @param[in] object - Name of the object containing the property
+         * @param[in] interface - Interface name containing the property
          * @param[in] property - Property name
          *
          * @return - The property value
          */
         inline auto getPropertyValue(const std::string& object,
+                                     const std::string& interface,
                                      const std::string& property)
         {
-            return _properties[object][property];
+            return _properties[object][interface][property];
         };
 
     private:
@@ -136,7 +140,10 @@
         /**
          * @brief Map of object property values
          */
-        std::map<std::string, std::map<std::string, bool>> _properties;
+        std::map<std::string,
+                 std::map<std::string,
+                          std::map<std::string,
+                                   bool>>> _properties;
 
         /**
          * @brief Map of active fan control allowed by groups
