diff --git a/apigee_sync.go b/apigee_sync.go
index 605ef48..4aec8c2 100644
--- a/apigee_sync.go
+++ b/apigee_sync.go
@@ -68,10 +68,6 @@
 	}
 	changesUri.Path = path.Join(changesUri.Path, "/changes")
 
-	/*
-	 * FIXME: This is a hack, while the correct procedure it to use the
-	 * bootstrap scope
-	 */
 	configId := config.GetString(configScopeId)
 
 	for {
@@ -83,18 +79,26 @@
 				return errors.New("Unable to get new token")
 			}
 		}
+
 		/* Find the scopes associated with the config id */
 		scopes := findScopesforId(configId)
-
-		/* A Blocking call for 1 Minute  */
 		v := url.Values{}
+
+		/* Sequence added to the query if available */
 		if gotSequence == true {
 			v.Add("since", lastSequence)
 		}
 		v.Add("block", "60")
+
+		/*
+		 * Include all the scopes associated with the config Id
+		 * The Config Id is included as well, as it acts as the
+		 * Bootstrap scope
+		 */
 		for _, scope := range scopes {
 			v.Add("scope", scope)
 		}
+		v.Add("scope", configId)
 		v.Add("snapshot", snapshotInfo)
 		changesUri.RawQuery = v.Encode()
 		uri := changesUri.String()
@@ -130,6 +134,7 @@
 			return err
 		}
 
+		/* If valid data present, Emit to plugins */
 		if len(resp.Changes) > 0 {
 			events.Emit(ApigeeSyncEventSelector, &resp)
 		} else {
@@ -210,9 +215,18 @@
 	return nil
 }
 
+/* Method downloads the snapshot in a two phased manner.
+ * Phase 1: Use the apidConfigId as the bootstrap scope, and
+ * get the apid_config and apid_config_scope from the snapshot
+ * server.
+ * Phase 2: Get all the scopes fetches from phase 1, and issue
+ * the second call to the snapshot server to get all the data
+ * associated with the scope(s).
+ * Emit the data for the necessary plugins to process.
+ */
 func DownloadSnapshot() error {
 
-RETRY:
+PHASE_2:
 	var scopes []string
 
 	/* Get the bearer token */
@@ -247,9 +261,31 @@
 	}
 	req, err := http.NewRequest("GET", uri, nil)
 	req.Header.Add("Authorization", "Bearer "+token)
+
+	/* Set the transport protocol type based on conf file input */
+	if config.GetString(configSnapshotProtocol) == "json" {
+		req.Header.Set("Accept", "application/json")
+	} else {
+		req.Header.Set("Accept", "application/proto")
+	}
+
+	/* Issue the request to the snapshot server */
 	r, err := client.Do(req)
 	if err != nil {
-		log.Fatalf("Snapshotserver comm error: [%s] ", err)
+
+		/*
+		 * Check if there is some data already, if there is,
+		 * Proceed, else exit the service (Scopes & snapshotInfo
+		 * have to be present for changeserver to function)
+		 */
+		snapshotInfo = findSnapshotInfo(config.GetString(configScopeId))
+		if snapshotInfo == "" {
+			log.Fatalf("Snapshotserver comm error: [%s] ", err)
+		} else {
+			log.Error("Snapshot server down, Proceeding with local data")
+			downloadSnapshot = true
+			return nil
+		}
 	}
 	defer r.Body.Close()
 
@@ -264,7 +300,7 @@
 	/*
 	 * The idea here is that you download snapshot for the scopes
 	 * associated with the apidconfig Id, and then download the
-	 * data based on the scopes retrieved in the first round
+	 * data based on the scopes retrieved in the first phase
 	 */
 	if r.StatusCode == 200 {
 		log.Info("Emit Snapshot response to plugins")
@@ -272,7 +308,7 @@
 		snapshotInfo = resp.SnapshotInfo
 		if downloadBootSnapshot == false {
 			downloadBootSnapshot = true
-			goto RETRY
+			goto PHASE_2
 		} else if downloadBootSnapshot == true {
 			downloadSnapshot = true
 		}
@@ -283,6 +319,10 @@
 	return err
 }
 
+/*
+ * For the given apidConfigId, this function will retrieve all the scopes
+ * associated with it
+ */
 func findScopesforId(configId string) (scopes []string) {
 
 	var scope string
@@ -304,3 +344,26 @@
 	}
 	return scopes
 }
+
+/*
+ * Retrieve SnapshotInfo for the given apidConfigId from apid_config table
+ */
+func findSnapshotInfo(configId string) (snapshotInfo string) {
+
+	db, err := data.DB()
+	if err != nil {
+		log.Errorf("DB open Error: %s", err)
+		return ""
+	}
+
+	rows, err := db.Query("select snapshotInfo from APID_CONFIG where id = $1", configId)
+	if err != nil {
+		log.Errorf("Failed to query APID_CONFIG. Err: %s", err)
+		return ""
+	}
+	defer rows.Close()
+	for rows.Next() {
+		rows.Scan(&snapshotInfo)
+	}
+	return snapshotInfo
+}
diff --git a/init.go b/init.go
index 81bc050..506ffe7 100644
--- a/init.go
+++ b/init.go
@@ -14,8 +14,9 @@
 	configConsumerKey         = "apigeesync_consumer_key"
 	configConsumerSecret      = "apigeesync_consumer_secret"
 	configScopeId             = "apigeesync_bootstrap_id"
-
-	ApigeeSyncEventSelector = "ApigeeSync"
+	configSnapshotProtocol    = "apigeesync_snapshot_proto"
+	configUnitTestMode        = "apigeesync_UnitTest_mode"
+	ApigeeSyncEventSelector   = "ApigeeSync"
 )
 
 var (
@@ -86,6 +87,7 @@
     updated int64,
     updated_by text,
     _apid_scope text,
+    snapshotInfo text,
     PRIMARY KEY (id)
 );
 CREATE TABLE apid_config_scope (
diff --git a/listener.go b/listener.go
index 3730e14..36be24d 100644
--- a/listener.go
+++ b/listener.go
@@ -45,7 +45,7 @@
 		switch payload.Name {
 		case "apid_config":
 			for _, row := range payload.Rows {
-				insertApidConfig(row, db)
+				insertApidConfig(row, db, snapshot.SnapshotInfo)
 			}
 		case "apid_config_scope":
 			for _, row := range payload.Rows {
@@ -67,13 +67,6 @@
 	for _, payload := range changes.Changes {
 
 		switch payload.Table {
-		case "public.apid_config":
-		case "edgex.apid_config":
-			switch payload.Operation {
-			case 1:
-				insertApidConfig(payload.NewRow, db)
-			}
-
 		case "public.apid_config_scope":
 		case "edgex.apid_config_scope":
 			switch payload.Operation {
@@ -87,23 +80,27 @@
 /*
  * INSERT INTO APP_CREDENTIAL op
  */
-func insertApidConfig(ele common.Row, db *sql.DB) {
+func insertApidConfig(ele common.Row, db *sql.DB, snapInfo string) bool {
 
 	var scope, id, name, orgAppName, createdBy, updatedBy, Description string
 	var updated, created int64
 
-	txn, _ := db.Begin()
-	err := ele.Get("id", &id)
-	err = ele.Get("_apid_scope", &scope)
-	err = ele.Get("name", &name)
-	err = ele.Get("umbrella_org_app_name", &orgAppName)
-	err = ele.Get("created", &created)
-	err = ele.Get("created_by", &createdBy)
-	err = ele.Get("updated", &updated)
-	err = ele.Get("updated_by", &updatedBy)
-	err = ele.Get("description", &Description)
+	ele.Get("id", &id)
+	ele.Get("_apid_scope", &scope)
+	ele.Get("name", &name)
+	ele.Get("umbrella_org_app_name", &orgAppName)
+	ele.Get("created", &created)
+	ele.Get("created_by", &createdBy)
+	ele.Get("updated", &updated)
+	ele.Get("updated_by", &updatedBy)
+	ele.Get("description", &Description)
 
-	_, err = txn.Exec("INSERT INTO apid_config (id, _apid_scope, name, umbrella_org_app_name, created, created_by, updated, updated_by)VALUES(?,?,?,?,?,?,?,?);",
+	stmt, err := db.Prepare("INSERT INTO APID_CONFIG (id, _apid_scope, name, umbrella_org_app_name, created, created_by, updated, updated_by, snapshotInfo)VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9);")
+	if err != nil {
+		log.Error("INSERT APID_CONFIG Failed: ", err)
+		return false
+	}
+	_, err = stmt.Exec(
 		id,
 		scope,
 		name,
@@ -112,14 +109,14 @@
 		createdBy,
 		updated,
 		updatedBy,
-		Description)
+		snapInfo)
 
 	if err != nil {
-		log.Error("INSERT  Failed: ", id, ", ", scope, ")", err)
-		txn.Rollback()
+		log.Error("INSERT APID_CONFIG Failed: ", id, ", ", scope, ")", err)
+		return false
 	} else {
-		log.Info("INSERT  Success: (", id, ", ", scope, ")")
-		txn.Commit()
+		log.Info("INSERT APID_CONFIG Success: (", id, ", ", scope, ")")
+		return true
 	}
 
 }
@@ -127,22 +124,23 @@
 /*
  * INSERT INTO APP_CREDENTIAL op
  */
-func insertApidConfigScope(ele common.Row, db *sql.DB) {
+func insertApidConfigScope(ele common.Row, db *sql.DB) bool {
 
 	var id, scopeId, apiConfigId, scope, createdBy, updatedBy string
 	var created, updated int64
 
-	txn, _ := db.Begin()
-	err := ele.Get("id", &id)
-	err = ele.Get("_apid_scope", &scopeId)
-	err = ele.Get("apid_config_id", &apiConfigId)
-	err = ele.Get("scope", &scope)
-	err = ele.Get("created", &created)
-	err = ele.Get("created_by", &createdBy)
-	err = ele.Get("updated", &updated)
-	err = ele.Get("updated_by", &updatedBy)
+	ele.Get("id", &id)
+	ele.Get("_apid_scope", &scopeId)
+	ele.Get("apid_config_id", &apiConfigId)
+	ele.Get("scope", &scope)
+	ele.Get("created", &created)
+	ele.Get("created_by", &createdBy)
+	ele.Get("updated", &updated)
+	ele.Get("updated_by", &updatedBy)
 
-	_, err = txn.Exec("INSERT INTO apid_config_scope (id, _apid_scope, apid_config_id, scope, created, created_by, updated, updated_by)VALUES(?,?,?,?,?,?,?,?);",
+	stmt, err := db.Prepare("INSERT INTO APID_CONFIG_SCOPE (id, _apid_scope, apid_config_id, scope, created, created_by, updated, updated_by)VALUES($1,$2,$3,$4,$5,$6,$7,$8);")
+
+	_, err = stmt.Exec(
 		id,
 		scopeId,
 		apiConfigId,
@@ -153,11 +151,11 @@
 		updatedBy)
 
 	if err != nil {
-		log.Error("INSERT CRED Failed: ", id, ", ", scope, ")", err)
-		txn.Rollback()
+		log.Error("INSERT APID_CONFIG_SCOPE Failed: ", id, ", ", scope, ")", err)
+		return false
 	} else {
-		log.Info("INSERT CRED Success: (", id, ", ", scope, ")")
-		txn.Commit()
+		log.Info("INSERT APID_CONFIG_SCOPE Success: (", id, ", ", scope, ")")
+		return true
 	}
 
 }
