Make Time Limit confiugrable and in seconds.
Added a Neg TC, but it still does not work.
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 {