diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index a5e4809..511e910 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -168,7 +168,7 @@
     e += "},\n"
 
     e += "std::vector<Signal>{\n"
-    for s in event['signals']:
+    for s in event['triggers']['signals']:
         e += "Signal{\n"
         e += "match::" + s['match'] + "(\n"
         for i, mp in enumerate(s['mparams']):
@@ -257,6 +257,91 @@
     return groups
 
 
+def getSignal(eGrps, eTrig, events):
+    """
+    Extracts and constructs for each group member a signal
+    subscription of each match listed in the trigger.
+    """
+    signals = []
+    for group in eGrps:
+        for member in group['members']:
+            for eMatches in eTrig['matches']:
+                signal = {}
+                eMatch = next(m for m in events['matches']
+                              if m['name'] == eMatches['name'])
+                # If service not given, subscribe to signal match
+                if ('service' not in member):
+                    signal['match'] = eMatch['name']
+                    params = []
+                    if ('parameters' in eMatch) and \
+                       (eMatch['parameters'] is not None):
+                        for p in eMatch['parameters']:
+                            params.append(member[str(p)])
+                    signal['mparams'] = params
+
+                if ('parameters' in eMatch['signal']) and \
+                   (eMatch['signal']['parameters'] is not None):
+                    eSignal = eMatch['signal']
+                else:
+                    eSignal = next(s for s in events['signals']
+                                   if s['name'] == eMatch['signal'])
+                signal['signal'] = eSignal['name']
+                sparams = {}
+                if ('parameters' in eSignal) and \
+                   (eSignal['parameters'] is not None):
+                    splist = []
+                    for p in eSignal['parameters']:
+                        sp = str(p)
+                        if (sp != 'type'):
+                            splist.append(sp)
+                            if (sp != 'group'):
+                                sparams[sp] = "\"" + member[sp] + "\""
+                            else:
+                                sparams[sp] = "Group{\n"
+                                for m in group['members']:
+                                    sparams[sp] += (
+                                        "{\n" +
+                                        "\"" + str(m['object']) + "\",\n" +
+                                        "{\"" + str(m['interface']) + "\"," +
+                                        "\"" + str(m['property']) + "\"}\n" +
+                                        "},\n")
+                                sparams[sp] += "}"
+                        else:
+                            sparams[sp] = member[sp]
+                    sparams['params'] = splist
+                signal['sparams'] = sparams
+                # Add signal handler
+                eHandler = next(h for h in events['handlers']
+                                if h['name'] == eSignal['handler'])
+                signal['handler'] = eHandler['name']
+                hparams = {}
+                if ('parameters' in eHandler) and \
+                   (eHandler['parameters'] is not None):
+                    hplist = []
+                    for p in eHandler['parameters']:
+                        hp = str(p)
+                        if (hp != 'type'):
+                            hplist.append(hp)
+                            if (hp != 'group'):
+                                hparams[hp] = "\"" + member[hp] + "\""
+                            else:
+                                hparams[hp] = "Group{\n"
+                                for m in group['members']:
+                                    hparams[hp] += (
+                                        "{\n" +
+                                        "\"" + str(m['object']) + "\",\n" +
+                                        "{\"" + str(m['interface']) + "\"," +
+                                        "\"" + str(m['property']) + "\"}\n" +
+                                        "},\n")
+                                hparams[hp] += "}"
+                        else:
+                            hparams[hp] = member[hp]
+                    hparams['params'] = hplist
+                signal['hparams'] = hparams
+                signals.append(signal)
+    return signals
+
+
 def getActions(zNum, zCond, edata, actions, events):
     """
     Extracts and constructs the make_action function call for
@@ -370,85 +455,15 @@
                                      e,
                                      events_data)
 
-    # Add signal handlers
-    signals = []
-    for group in event['groups']:
-        for member in group['members']:
-            for eMatches in e['matches']:
-                signal = {}
-                eMatch = next(m for m in events_data['matches']
-                              if m['name'] == eMatches['name'])
-                # If service not given, subscribe to signal match
-                if ('service' not in member):
-                    signal['match'] = eMatch['name']
-                    params = []
-                    if ('parameters' in eMatch) and \
-                       (eMatch['parameters'] is not None):
-                        for p in eMatch['parameters']:
-                            params.append(member[str(p)])
-                    signal['mparams'] = params
-
-                if ('parameters' in eMatch['signal']) and \
-                   (eMatch['signal']['parameters'] is not None):
-                    eSignal = eMatch['signal']
-                else:
-                    eSignal = next(s for s in events_data['signals']
-                                   if s['name'] == eMatch['signal'])
-                signal['signal'] = eSignal['name']
-                sparams = {}
-                if ('parameters' in eSignal) and \
-                   (eSignal['parameters'] is not None):
-                    splist = []
-                    for p in eSignal['parameters']:
-                        sp = str(p)
-                        if (sp != 'type'):
-                            splist.append(sp)
-                            if (sp != 'group'):
-                                sparams[sp] = "\"" + member[sp] + "\""
-                            else:
-                                sparams[sp] = "Group{\n"
-                                for m in group['members']:
-                                    sparams[sp] += (
-                                        "{\n" +
-                                        "\"" + str(m['object']) + "\",\n" +
-                                        "{\"" + str(m['interface']) + "\"," +
-                                        "\"" + str(m['property']) + "\"}\n" +
-                                        "},\n")
-                                sparams[sp] += "}"
-                        else:
-                            sparams[sp] = member[sp]
-                    sparams['params'] = splist
-                signal['sparams'] = sparams
-                # Add signal handler
-                eHandler = next(h for h in events_data['handlers']
-                                if h['name'] == eSignal['handler'])
-                signal['handler'] = eHandler['name']
-                hparams = {}
-                if ('parameters' in eHandler) and \
-                   (eHandler['parameters'] is not None):
-                    hplist = []
-                    for p in eHandler['parameters']:
-                        hp = str(p)
-                        if (hp != 'type'):
-                            hplist.append(hp)
-                            if (hp != 'group'):
-                                hparams[hp] = "\"" + member[hp] + "\""
-                            else:
-                                hparams[hp] = "Group{\n"
-                                for m in group['members']:
-                                    hparams[hp] += (
-                                        "{\n" +
-                                        "\"" + str(m['object']) + "\",\n" +
-                                        "{\"" + str(m['interface']) + "\"," +
-                                        "\"" + str(m['property']) + "\"}\n" +
-                                        "},\n")
-                                hparams[hp] += "}"
-                        else:
-                            hparams[hp] = member[hp]
-                    hparams['params'] = hplist
-                signal['hparams'] = hparams
-                signals.append(signal)
-    event['signals'] = signals
+    # Add event triggers
+    event['triggers'] = {}
+    for trig in e['triggers']:
+        triggers = []
+        if (trig['name'] == "signal"):
+            if ('signals' not in event['triggers']):
+                event['triggers']['signals'] = []
+            triggers = getSignal(event['groups'], trig, events_data)
+            event['triggers']['signals'].extend(triggers)
 
     # Add optional action call timer
     timer = {}
diff --git a/control/templates/defs.mako b/control/templates/defs.mako
index bcc0c5b..30045f6d 100644
--- a/control/templates/defs.mako
+++ b/control/templates/defs.mako
@@ -63,7 +63,7 @@
     ${event['timer']['type']}
 },
 std::vector<Signal>{
-%for s in event['signals']:
+%for s in event['triggers']['signals']:
     Signal{
         %if ('match' in s) and \
             (s['match'] is not None):
