XAPID_1004: Bootstrap scope to be stored separate from datascope snapshots.
This will ensure there is no data corruption possible, when the snapshot Id has not changed between the the time bootstrap and datascope snapshots.
diff --git a/apigee_sync_test.go b/apigee_sync_test.go
index 22823a4..bd4f4f8 100644
--- a/apigee_sync_test.go
+++ b/apigee_sync_test.go
@@ -296,7 +296,7 @@
 
 			scopes := []string{apidInfo.ClusterID}
 			snapshot := &common.Snapshot{}
-			apidSnapshotManager.downloadSnapshot(scopes, snapshot)
+			apidSnapshotManager.downloadSnapshot(true, scopes, snapshot)
 			apidSnapshotManager.storeBootSnapshot(snapshot)
 			apidSnapshotManager.storeDataSnapshot(snapshot)
 			restoreContext()
diff --git a/change_test.go b/change_test.go
index 7a69995..6edf8ea 100644
--- a/change_test.go
+++ b/change_test.go
@@ -197,6 +197,6 @@
 
 }
 
-func (s *dummySnapshotManager) downloadSnapshot(scopes []string, snapshot *common.Snapshot) error {
+func (s *dummySnapshotManager) downloadSnapshot(isBoot bool, scopes []string, snapshot *common.Snapshot) error {
 	return nil
 }
diff --git a/managerInterfaces.go b/managerInterfaces.go
index 20bbf6f..54e5dca 100644
--- a/managerInterfaces.go
+++ b/managerInterfaces.go
@@ -20,7 +20,7 @@
 	storeBootSnapshot(snapshot *common.Snapshot)
 	downloadDataSnapshot()
 	storeDataSnapshot(snapshot *common.Snapshot)
-	downloadSnapshot(scopes []string, snapshot *common.Snapshot) error
+	downloadSnapshot(isBoot bool, scopes []string, snapshot *common.Snapshot) error
 }
 
 type changeManager interface {
diff --git a/snapshot.go b/snapshot.go
index f4cb8bd..12ba513 100644
--- a/snapshot.go
+++ b/snapshot.go
@@ -80,7 +80,7 @@
 	scopes := []string{apidInfo.ClusterID}
 	snapshot := &common.Snapshot{}
 
-	err := s.downloadSnapshot(scopes, snapshot)
+	err := s.downloadSnapshot(true, scopes, snapshot)
 	if err != nil {
 		// this may happen during shutdown
 		if _, ok := err.(quitSignalError); ok {
@@ -121,7 +121,7 @@
 	scopes := findScopesForId(apidInfo.ClusterID)
 	scopes = append(scopes, apidInfo.ClusterID)
 	snapshot := &common.Snapshot{}
-	err := s.downloadSnapshot(scopes, snapshot)
+	err := s.downloadSnapshot(false, scopes, snapshot)
 	if err != nil {
 		// this may happen during shutdown
 		if _, ok := err.(quitSignalError); ok {
@@ -232,7 +232,7 @@
 // a blocking method
 // will keep retrying with backoff until success
 
-func (s *simpleSnapShotManager) downloadSnapshot(scopes []string, snapshot *common.Snapshot) error {
+func (s *simpleSnapShotManager) downloadSnapshot(isBoot bool, scopes []string, snapshot *common.Snapshot) error {
 	// if closed
 	if atomic.LoadInt32(s.isClosed) == int32(1) {
 		log.Warn("Trying to download snapshot with a closed snapShotManager")
@@ -258,13 +258,15 @@
 
 	//pollWithBackoff only accepts function that accept a single quit channel
 	//to accommodate functions which need more parameters, wrap them in closures
-	attemptDownload := getAttemptDownloadClosure(snapshot, uri)
+	attemptDownload := getAttemptDownloadClosure(isBoot, snapshot, uri)
 	pollWithBackoff(s.quitChan, attemptDownload, handleSnapshotServerError)
 	return nil
 }
 
-func getAttemptDownloadClosure(snapshot *common.Snapshot, uri string) func(chan bool) error {
+func getAttemptDownloadClosure(isBoot bool, snapshot *common.Snapshot, uri string) func(chan bool) error {
 	return func(_ chan bool) error {
+
+		var tid string
 		req, err := http.NewRequest("GET", uri, nil)
 		if err != nil {
 			// should never happen, but if it does, it's unrecoverable anyway
@@ -296,8 +298,16 @@
 			return expected200Error{}
 		}
 
+		// Bootstrap scope is a special case, that can occur only once. The tid is
+		// hardcoded to "bootstrap" to ensure there can be no clash of tid between
+		// bootstrap and subsequent data scopes.
+		if isBoot == false {
+			tid = r.Header.Get("Transicator-Snapshot-TXID")
+		} else {
+			tid = "bootstrap"
+		}
 		// Decode the Snapshot server response
-		err = processSnapshotResponse(r.Header.Get("Transicator-Snapshot-TXID"), r.Body, snapshot)
+		err = processSnapshotResponse(tid, r.Body, snapshot)
 		if err != nil {
 			log.Errorf("Snapshot server response Data not parsable: %v", err)
 			return err