address MR comments, fix race
diff --git a/apigee_sync.go b/apigee_sync.go
index 0df37d6..a4b5a16 100644
--- a/apigee_sync.go
+++ b/apigee_sync.go
@@ -304,6 +304,7 @@
 
 	log.Debug("Extracting table names from existing DB")
 	rows, err := db.Query("SELECT name FROM _known_tables;")
+	defer rows.Close()
 
 	if err != nil {
 		log.Panicf("Error reading current set of tables: %v", err)
@@ -324,19 +325,31 @@
 func persistKnownTablesToDB(tables map[string]bool, db apid.DB) {
 	log.Debugf("Inserting table names found in snapshot into db")
 
-	_, err := db.Exec(`CREATE TABLE _known_tables (name text, PRIMARY KEY(name));`)
+	tx, err := db.Begin()
+	if err != nil {
+		log.Panicf("Error starting transaction: %v", err)
+	}
+	defer tx.Rollback()
+
+	_, err = tx.Exec("CREATE TABLE _known_tables (name text, PRIMARY KEY(name));")
 	if err != nil {
 		log.Panicf("Could not create _known_tables table: %s", err)
 	}
 
 	for name := range tables {
 		log.Debugf("Inserting %s into _known_tables", name)
-		_, err := db.Exec(`INSERT INTO _known_tables VALUES(?);`, name)
+		_, err := tx.Exec("INSERT INTO _known_tables VALUES(?);", name)
 		if err != nil {
 			log.Panicf("Error encountered inserting into known tables ", err)
 		}
 
 	}
+
+	err = tx.Commit()
+	if err != nil {
+		log.Panicf("Error committing transaction: %v", err)
+
+	}
 }
 
 // Skip Downloading snapshot if there is already a snapshot available from previous run
@@ -461,9 +474,10 @@
  * Determine is map b is a subset of map a
  */
 func mapIsSubset(a map[string]bool, b map[string]bool) bool {
-	
-	if b == nil {
-		return true;
+
+	//nil maps should not be passed in.  Making the distinction between nil map and empty map
+	if a == nil || b == nil {
+		return false;
 	}
 
 	for k := range b {
diff --git a/apigee_sync_test.go b/apigee_sync_test.go
index 3f8373c..12198e9 100644
--- a/apigee_sync_test.go
+++ b/apigee_sync_test.go
@@ -16,7 +16,6 @@
 		expectedTables["edgex.apid_cluster"] = true
 		expectedTables["edgex.data_scope"] = true
 
-
 		Expect(apidInfo.LastSnapshot).NotTo(BeEmpty())
 
 		apid.Events().ListenFunc(ApigeeSyncEventSelector, func(event apid.Event) {
@@ -37,6 +36,27 @@
 		bootstrap()
 	})
 
+	It("should correctly identify non-proper subsets with respect to maps", func() {
+
+		//test b proper subset of a
+		Expect(mapIsSubset(map[string]bool{"a": true, "b": true}, map[string]bool{"b": true})).To(BeTrue())
+
+		//test a == b
+		Expect(mapIsSubset(map[string]bool{"a": true, "b": true}, map[string]bool{"a": true, "b": true})).To(BeTrue())
+
+		//test b superset of a
+		Expect(mapIsSubset(map[string]bool{"a": true, "b": true}, map[string]bool{"a": true, "b": true, "c": true})).To(BeFalse())
+
+		//test b not subset of a
+		Expect(mapIsSubset(map[string]bool{"a": true, "b": true}, map[string]bool{"c": true})).To(BeFalse())
+
+		//test b empty
+		Expect(mapIsSubset(map[string]bool{"a": true, "b": true}, map[string]bool{})).To(BeTrue())
+
+		//test a empty
+		Expect(mapIsSubset(map[string]bool{}, map[string]bool{"b": true})).To(BeFalse())
+	})
+
 	// todo: disabled for now -
 	// there is precondition I haven't been able to track down that breaks this test on occasion
 	XIt("should process a new snapshot when change server requires it", func(done Done) {
diff --git a/listener_test.go b/listener_test.go
index 1d1e896..1fa2e58 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -10,11 +10,15 @@
 var _ = Describe("listener", func() {
 
 	handler := handler{}
+	var saveLastSnapshot string
 
 	Context("ApigeeSync snapshot event", func() {
 
 		It("should set DB to appropriate version", func() {
 
+			//save the last snapshot, so we can restore it at the end of this context
+			saveLastSnapshot = apidInfo.LastSnapshot
+
 			event := common.Snapshot{
 				SnapshotInfo: "test_snapshot",
 				Tables:       []common.Table{},
@@ -152,6 +156,9 @@
 			Expect(ds.CreatedBy).To(Equal("c"))
 			Expect(ds.Updated).To(Equal("u"))
 			Expect(ds.UpdatedBy).To(Equal("u"))
+
+			//restore the last snapshot
+			apidInfo.LastSnapshot = saveLastSnapshot
 		})
 	})
 
@@ -160,6 +167,9 @@
 		Context(LISTENER_TABLE_APID_CLUSTER, func() {
 
 			It("insert event should panic", func() {
+				//save the last snapshot, so we can restore it at the end of this context
+				saveLastSnapshot = apidInfo.LastSnapshot
+
 
 				event := common.ChangeList{
 					LastSequence: "test",
@@ -187,6 +197,8 @@
 				}
 
 				Expect(func() { handler.Handle(&event) }).To(Panic())
+				//restore the last snapshot
+				apidInfo.LastSnapshot = saveLastSnapshot
 			})
 
 			PIt("delete event should kill all the things!")
@@ -195,6 +207,10 @@
 		Context(LISTENER_TABLE_DATA_SCOPE, func() {
 
 			It("insert event should add", func() {
+				//save the last snapshot, so we can restore it at the end of this context
+				saveLastSnapshot = apidInfo.LastSnapshot
+
+
 				event := common.ChangeList{
 					LastSequence: "test",
 					Changes: []common.Change{
@@ -306,8 +322,12 @@
 				}
 
 				Expect(func() { handler.Handle(&event) }).To(Panic())
+				//restore the last snapshot
+				apidInfo.LastSnapshot = saveLastSnapshot
 			})
 
+
+
 		})
 
 	})