diff --git a/apigee_sync.go b/apigee_sync.go
index e02a790..829fc86 100644
--- a/apigee_sync.go
+++ b/apigee_sync.go
@@ -64,7 +64,7 @@
 				times = pollInterval
 			}
 			log.Debugf("Connecting to changeserver...")
-			time.Sleep(time.Duration(times) * 100 * time.Millisecond)
+			time.Sleep(time.Duration(times) * time.Second)
 		} else {
 			// Reset sleep interval
 			times = 1
@@ -168,18 +168,17 @@
 			 * The plugins should have finished what they are doing.
 			 * Wait till they are done.
 			 * If they take longer than expected - abort apid(?)
-			 * (Should there be a configurable Fudge factor?) FIXME
 			 */
-			for count := 0; count < 1000; count++ {
+			for count := 0; count < config.GetInt(configTimeLimit); count++ {
 				if chfin == false {
 					log.Info("Waiting for plugins to complete...")
-					time.Sleep(time.Duration(count) * 100 * time.Millisecond)
+					time.Sleep(time.Duration(count) * time.Second)
 				} else {
 					break
 				}
 			}
 			if chfin == false {
-				log.Fatal("Never got ack from plugins. Investigate..")
+				log.Panicf("Never got ack from plugins. Investigate..")
 			}
 		} else {
 			log.Info("No Changes detected for Scopes ", scopes)
@@ -300,15 +299,14 @@
 
 	/* Phase 1 */
 	DownloadSnapshot()
-
 	/*
 	 * Give some time for all the plugins to process the Downloaded
 	 * Snapshot
 	 */
-	for count := 0; count < 60; count++ {
+	for count := 0; count < config.GetInt(configTimeLimit); count++ {
 		if !downloadBootSnapshot {
 			log.Debug("Waiting for bootscope snapshot download...")
-			time.Sleep(time.Duration(count) * 100 * time.Millisecond)
+			time.Sleep(time.Duration(count) * time.Second)
 		} else {
 			break
 		}
diff --git a/apigee_sync_test.go b/apigee_sync_test.go
index f853c93..ce1f22f 100644
--- a/apigee_sync_test.go
+++ b/apigee_sync_test.go
@@ -192,7 +192,7 @@
 		config.Set(configScopeId, scope)
 		config.Set(configConsumerKey, key)
 		config.Set(configConsumerSecret, secret)
-
+		config.Set(configTimeLimit, 60)
 		// set up temporary test database
 		tmpDir, err := ioutil.TempDir("", "apigee_sync_test")
 		Expect(err).NotTo(HaveOccurred())
@@ -230,7 +230,7 @@
 					// There should be 2 scopes now
 					_, ok := event.(*common.ChangeList)
 					if ok {
-						time.Sleep(200 * time.Millisecond)
+						time.Sleep(1 * time.Second)
 						db, err := data.DB()
 						Expect(err).NotTo(HaveOccurred())
 						err = db.QueryRow("Select count(scp.id) from apid_config_scope as scp INNER JOIN apid_config as ap WHERE scp.apid_config_id = ap.id").Scan(&scount)
@@ -255,7 +255,37 @@
 		apid.Events().Listen(ApigeeSyncEventSelector, h1)
 		events.ListenFunc(apid.EventDeliveredSelector, donehandler)
 
-	})
+	}, 10)
+
+	It("Plugin does not respond in time", func(done Done) {
+		defer func() {
+			if r := recover(); r != nil {
+				var ok bool
+				_, ok = r.(error)
+				if !ok {
+					Expect(r).Should(Equal("Never got ack from plugins. Investigate.."))
+				} else {
+					Fail("Unexpected panic handling error")
+				}
+			}
+
+		}()
+		h2 := &test_handler{
+			"sync data",
+			func(event apid.Event) {
+				_, ok := event.(*common.ChangeList)
+				if ok {
+					// Sleep more than tolerated
+					time.Sleep(5 * time.Second)
+					close(done)
+				} else {
+					Fail("Unexpected event")
+				}
+			},
+		}
+		config.Set(configTimeLimit, 2)
+		apid.Events().Listen(ApigeeSyncEventSelector, h2)
+	}, 10)
 
 })
 
diff --git a/init.go b/init.go
index 65b72ad..14d32a6 100644
--- a/init.go
+++ b/init.go
@@ -14,7 +14,7 @@
 	configConsumerSecret      = "apigeesync_consumer_secret"
 	configScopeId             = "apigeesync_bootstrap_id"
 	configSnapshotProtocol    = "apigeesync_snapshot_proto"
-	configUnitTestMode        = "apigeesync_UnitTest_mode"
+	configTimeLimit           = "apigeesync_timelimit_in_secs"
 	ApigeeSyncEventSelector   = "ApigeeSync"
 )
 
@@ -62,6 +62,7 @@
 	events.ListenFunc(apid.SystemEventsSelector, postInitPlugins)
 
 	config.SetDefault(configPollInterval, 120)
+	config.SetDefault(configTimeLimit, 60)
 	gapidConfigId = config.GetString(configScopeId)
 	db, err := data.DB()
 	if err != nil {
