listener was being added on every loop, accumulating listeners
diff --git a/apigee_sync.go b/apigee_sync.go
index 48f9743..f3912c6 100644
--- a/apigee_sync.go
+++ b/apigee_sync.go
@@ -174,7 +174,6 @@
 		/* If valid data present, Emit to plugins */
 		if len(resp.Changes) > 0 {
 			changeFinished = false
-			events.ListenFunc(apid.EventDeliveredSelector, postPluginDataDelivery)
 			events.Emit(ApigeeSyncEventSelector, &resp)
 			/*
 			 * The plugins should have finished what they are doing.
@@ -480,7 +479,6 @@
 		}
 
 		log.Info("Emitting Snapshot to plugins")
-		events.ListenFunc(apid.EventDeliveredSelector, postPluginDataDelivery)
 		events.Emit(ApigeeSyncEventSelector, &resp)
 
 		break
diff --git a/init.go b/init.go
index 0b3d8c8..b0c5add 100644
--- a/init.go
+++ b/init.go
@@ -82,6 +82,9 @@
 	 */
 	events.ListenFunc(apid.SystemEventsSelector, postInitPlugins)
 
+	// This callback function will get called after each data event delivery.
+	events.ListenFunc(apid.EventDeliveredSelector, postPluginDataDelivery)
+
 	// check for required values
 	for _, key := range []string{configProxyServerBaseURI, configConsumerKey, configConsumerSecret,
 		configSnapServerBaseURI, configChangeServerBaseURI} {