diff --git a/apigee_sync.go b/apigee_sync.go
index 4aec8c2..bbdc8b3 100644
--- a/apigee_sync.go
+++ b/apigee_sync.go
@@ -280,7 +280,7 @@
 		 */
 		snapshotInfo = findSnapshotInfo(config.GetString(configScopeId))
 		if snapshotInfo == "" {
-			log.Fatalf("Snapshotserver comm error: [%s] ", err)
+			log.Fatalf("No local data, Snapshotserver comm error: [%s] ", err)
 		} else {
 			log.Error("Snapshot server down, Proceeding with local data")
 			downloadSnapshot = true
@@ -313,7 +313,7 @@
 			downloadSnapshot = true
 		}
 	} else {
-		log.Fatalf("Snapshot server Connect failed. Resp code %d", r.StatusCode)
+		log.Fatalf("Snapshot server conn failed. HTTP Resp code %d", r.StatusCode)
 	}
 
 	return err
diff --git a/init.go b/init.go
index 844c98e..33e8297 100644
--- a/init.go
+++ b/init.go
@@ -30,18 +30,20 @@
 	apid.RegisterPlugin(initPlugin)
 }
 
-func postInitPlugins() {
+func postInitPlugins(event apid.Event) {
 
-	log.Debug("start post plugin init")
-	/* call to Download Snapshot info */
-	go DownloadSnapshot()
+	if event == apid.PluginsInitializedEvent {
+		log.Debug("start post plugin init")
+		/* call to Download Snapshot info */
+		go DownloadSnapshot()
 
-	/* Begin Looking for changes periodically */
-	log.Debug("starting update goroutine")
-	go updatePeriodicChanges()
+		/* Begin Looking for changes periodically */
+		log.Debug("starting update goroutine")
+		go updatePeriodicChanges()
 
-	events.Listen(ApigeeSyncEventSelector, &handler{})
-	log.Debug("Done post plugin init")
+		events.Listen(ApigeeSyncEventSelector, &handler{})
+		log.Debug("Done post plugin init")
+	}
 }
 
 func initPlugin(services apid.Services) error {
@@ -52,7 +54,12 @@
 	data = services.Data()
 	events = services.Events()
 
-	events.Listen(apid.PluginsInitializedEvent, postInitPlugins)
+	/* This callback function will get called, once all the plugins are
+	 * initialized (not just this plugin). This is needed because,
+	 * DownloadSnapshots/Changes etc have to begin to be processed only
+	 * after all the plugins are intialized
+	 */
+	events.ListenFunc(apid.SystemEventsSelector, postInitPlugins)
 
 	config.SetDefault(configPollInterval, 120)
 
