diff --git a/interface_ops.hpp b/interface_ops.hpp
index 96a2422..b16fa57 100644
--- a/interface_ops.hpp
+++ b/interface_ops.hpp
@@ -48,7 +48,7 @@
 struct MakeInterface
 {
     static std::any op(sdbusplus::bus::bus& bus, const char* path,
-                       const Interface&)
+                       const Interface&, bool)
     {
         return std::any(std::make_shared<T>(bus, path));
     }
@@ -58,7 +58,7 @@
 struct MakeInterface<T, std::enable_if_t<HasProperties<T>::value>>
 {
     static std::any op(sdbusplus::bus::bus& bus, const char* path,
-                       const Interface& props)
+                       const Interface& props, bool deferSignal)
     {
         using InterfaceVariant =
             std::map<std::string, typename T::PropertiesVariant>;
@@ -70,28 +70,29 @@
                       convertVariant<typename T::PropertiesVariant>(p.second));
         }
 
-        return std::any(std::make_shared<T>(bus, path, v));
+        return std::any(std::make_shared<T>(bus, path, v, deferSignal));
     }
 };
 
 template <typename T, typename Enable = void>
 struct AssignInterface
 {
-    static void op(const Interface&, std::any&)
+    static void op(const Interface&, std::any&, bool)
     {}
 };
 
 template <typename T>
 struct AssignInterface<T, std::enable_if_t<HasProperties<T>::value>>
 {
-    static void op(const Interface& props, std::any& holder)
+    static void op(const Interface& props, std::any& holder, bool deferSignal)
     {
         auto& iface = *std::any_cast<std::shared_ptr<T>&>(holder);
         for (const auto& p : props)
         {
             iface.setPropertyByName(
                 p.first,
-                convertVariant<typename T::PropertiesVariant>(p.second));
+                convertVariant<typename T::PropertiesVariant>(p.second),
+                deferSignal);
         }
     }
 };
