diff --git a/api.go b/api.go
index f271370..b6e3449 100644
--- a/api.go
+++ b/api.go
@@ -66,6 +66,7 @@
 
 const (
 	headerSteam           = "application/octet-stream"
+	headerJson            = "application/json"
 	apidConfigIndexPar    = "apid-config-index"
 	apidConfigIndexHeader = "x-apid-config-index"
 )
@@ -343,11 +344,11 @@
 		return
 	}
 
-	log.Debugf("sending deployments %s: %s", apidLSN, b)
 	if apidLSN != "" {
 		w.Header().Set(apidConfigIndexHeader, apidLSN)
 	}
-
+	w.Header().Set("Content-Type", headerJson)
+	log.Debugf("sending deployments %s: %s", apidLSN, b)
 	w.Write(b)
 }
 
diff --git a/bundle.go b/bundle.go
index 64e1e69..537777a 100644
--- a/bundle.go
+++ b/bundle.go
@@ -310,7 +310,6 @@
 func downloadFromURI(client *http.Client, blobServerURL string, blobId string) (tempFileName string, err error) {
 
 	var tempFile *os.File
-	log.Debugf("Downloading Blob: %s", blobId)
 
 	uri, err := getSignedURL(client, blobServerURL, blobId)
 	if err != nil {
diff --git a/data.go b/data.go
index 37da7c2..1a6d014 100644
--- a/data.go
+++ b/data.go
@@ -345,6 +345,7 @@
 }
 
 func (dbc *dbManager) loadLsnFromDb() error {
+	log.Debug("loadLsnFromDb")
 	var LSN sql.NullString
 	ret := InitLSN
 
@@ -356,7 +357,7 @@
 	}
 	if LSN.Valid {
 		ret = LSN.String
-		log.Debugf("LSN from APID_CONFIGURATION_LSN: %s", LSN)
+		log.Debugf("LSN from APID_CONFIGURATION_LSN: %s", LSN.String)
 	}
 	dbc.lsnMutex.Lock()
 	defer dbc.lsnMutex.Unlock()
diff --git a/listener.go b/listener.go
index dc7eaaf..8f00d0f 100644
--- a/listener.go
+++ b/listener.go
@@ -70,22 +70,27 @@
 	log.Debugf("Snapshot received. Switching to DB version: %s", snapshot.SnapshotInfo)
 
 	h.dbMan.setDbVersion(snapshot.SnapshotInfo)
+	err := h.dbMan.initDb()
+	if err != nil {
+		log.Panicf("unable to init DB: %v", err)
+	}
 
-	h.startupOnExistingDatabase()
 	if lsn := h.dbMan.getLSN(); lsn != "" {
 		h.dbMan.updateLSN(lsn)
 	} else { //apid just started
 		h.dbMan.loadLsnFromDb()
 	}
+	h.startupOnExistingDatabase()
 	h.apiMan.InitAPI()
 	log.Debug("Snapshot processed")
 }
 
 func (h *apigeeSyncHandler) startupOnExistingDatabase() {
 	// start bundle downloads that didn't finish
+
 	go func() {
 		// create apid_blob_available table
-		h.dbMan.initDb()
+
 		blobIds, err := h.dbMan.getUnreadyBlobs()
 
 		if err != nil {
@@ -96,6 +101,7 @@
 		for _, id := range blobIds {
 			go h.bundleMan.enqueueRequest(h.bundleMan.makeDownloadRequest(id, nil))
 		}
+
 	}()
 }
 
