diff --git a/src/templates/callbackpathgroup.mako.cpp b/src/templates/callbackpathgroup.mako.cpp
new file mode 100644
index 0000000..33418d5
--- /dev/null
+++ b/src/templates/callbackpathgroup.mako.cpp
@@ -0,0 +1,2 @@
+std::make_unique<GroupOfPathCallbacks<ConfigPathCallbacks>>(
+${indent(1)}ConfigPathCallbackGroups::get()[${c.graph}])\
\ No newline at end of file
diff --git a/src/templates/eventpath.mako.cpp b/src/templates/eventpath.mako.cpp
new file mode 100644
index 0000000..3fa9fb9
--- /dev/null
+++ b/src/templates/eventpath.mako.cpp
@@ -0,0 +1 @@
+std::make_unique<SNMPTrap<${c.eventType}>>()
diff --git a/src/templates/generated.mako.hpp b/src/templates/generated.mako.hpp
index 1b73198..8dbaa20 100644
--- a/src/templates/generated.mako.hpp
+++ b/src/templates/generated.mako.hpp
@@ -12,9 +12,11 @@
 #include "errors.hpp"
 #include "method.hpp"
 #include "propertywatchimpl.hpp"
+#include "pathwatchimpl.hpp"
 #include "resolve_errors.hpp"
 #include "sdbusplus.hpp"
 #include "event.hpp"
+#include "snmp_trap.hpp"
 #include "sdevent.hpp"
 
 using namespace std::string_literals;
@@ -75,6 +77,22 @@
     }
 };
 
+struct ConfigIntfAddPaths
+{
+    using Paths = std::array<std::string, ${len(pathinstances)}>;
+
+    static auto& get()
+    {
+        static const Paths paths =
+        {
+% for p in pathinstances:
+            "${p.path}"s,
+% endfor
+        };
+        return paths;
+    }
+};
+
 struct ConfigProperties
 {
     using Properties = std::array<std::string, ${len(propertynames)}>;
@@ -186,6 +204,22 @@
     }
 };
 
+struct ConfigPathCallbacks
+{
+    using Callbacks = std::array<std::unique_ptr<Callback>, ${len(pathcallbacks)}>;
+
+    static auto& get()
+    {
+        static const Callbacks pathCallbacks =
+        {
+% for c in pathcallbacks:
+            ${c.construct(loader, indent=indent +3)},
+% endfor
+        };
+        return pathCallbacks;
+    }
+};
+
 struct ConfigPropertyWatches
 {
     using PropertyWatches = std::array<std::unique_ptr<Watch>, ${len(watches)}>;
@@ -207,6 +241,28 @@
         return propertyWatches;
     }
 };
+
+struct ConfigPathWatches
+{
+    using PathWatches = std::array<std::unique_ptr<Watch>, ${len(pathwatches)}>;
+
+    static auto& get()
+    {
+        static const PathWatches pathWatches =
+        {
+% for w in pathwatches:
+            std::make_unique<PathWatch<SDBusPlus>>(
+    % if w.pathcallback is None:
+                ConfigIntfAddPaths::get()[${w.pathinstances}]),
+    % else:
+                ConfigIntfAddPaths::get()[${w.pathinstances}],
+                *ConfigPathCallbacks::get()[${w.pathcallback}]),
+    % endif
+% endfor
+        };
+        return pathWatches;
+    }
+};
 } // namespace monitoring
 } // namespace dbus
 } // namespace phosphor
