diff --git a/manager.cpp b/manager.cpp
index 4f56e7a..264037f 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -148,8 +148,11 @@
         // a container.
         InterfaceComposite ref;
 
+        auto i = object.size();
         for (auto& x : object)
         {
+            // Defer sending any signals until the last interface.
+            auto deferSignals = --i != 0;
             auto maker = _makers.find(x.first.c_str());
 
             if (maker == _makers.end())
@@ -157,7 +160,7 @@
                     "Unimplemented interface: " + x.first);
 
             ref.emplace(x.first,
-                        (maker->second)(_bus, path.str.c_str()));
+                        (maker->second)(_bus, path.str.c_str(), deferSignals));
         }
 
         if (!ref.empty())
diff --git a/manager.hpp b/manager.hpp
index 0c89017..2ffa47b 100644
--- a/manager.hpp
+++ b/manager.hpp
@@ -35,7 +35,7 @@
 template <typename T>
 struct MakeInterface
 {
-    static auto make(sdbusplus::bus::bus& bus, const char* path)
+    static auto make(sdbusplus::bus::bus& bus, const char* path, bool deferSignals)
     {
         using HolderType = holder::Holder<std::unique_ptr<T>>;
         return static_cast<std::unique_ptr<holder::Base>>(
@@ -43,7 +43,8 @@
                        std::forward<std::unique_ptr<T>>(
                            std::make_unique<T>(
                                std::forward<decltype(bus)>(bus),
-                               std::forward<decltype(path)>(path)))));
+                               std::forward<decltype(path)>(path),
+                               std::forward<decltype(deferSignals)>(deferSignals)))));
     }
 };
 } // namespace details
@@ -140,7 +141,7 @@
         using ObjectReferences = std::map<std::string, InterfaceComposite>;
         using Events = std::vector<EventInfo>;
         using MakerType = HolderPtr(*)(
-                              sdbusplus::bus::bus&, const char*);
+                              sdbusplus::bus::bus&, const char*, bool);
         using Makers = std::map<std::string, MakerType>;
 
         /** @brief Provides weak references to interface holders.
