diff --git a/api_test.go b/api_test.go
index 50d1567..485ee29 100644
--- a/api_test.go
+++ b/api_test.go
@@ -27,6 +27,12 @@
 		apid.Initialize(factory.DefaultServicesFactory())
 
 		config := apid.Config()
+		config.SetDefault("apigeesync_proxy_server_base", "X")
+		config.SetDefault("apigeesync_consumer_key", "X")
+		config.SetDefault("apigeesync_consumer_secret", "X")
+		config.SetDefault("apigeesync_snapshot_server_base", "X")
+		config.SetDefault("apigeesync_change_server_base", "X")
+		config.SetDefault("apigeesync_log_level", "info")
 
 		var err error
 		tmpDir, err = ioutil.TempDir("", "api_test")
@@ -41,7 +47,7 @@
 		Expect(err).NotTo(HaveOccurred())
 		txn, err := db.Begin()
 		Expect(err).ShouldNot(HaveOccurred())
-		insertTestData(db, txn)
+		insertTestData(txn)
 		txn.Commit()
 		server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
 			if req.URL.Path == apiPath {
@@ -159,7 +165,7 @@
 	})
 })
 
-func insertTestData(db *sql.DB, txn *sql.Tx) {
+func insertTestData(txn *sql.Tx) {
 
 	for i := 0; i < 10; i++ {
 		var rows []common.Row
@@ -196,7 +202,7 @@
 		}
 		srvItems["tenant_id"] = scv
 		rows = append(rows, srvItems)
-		res := insertAPIproducts(rows, db, txn)
+		res := insertAPIproducts(rows, txn)
 		Expect(res).Should(BeTrue())
 	}
 
@@ -248,7 +254,7 @@
 		srvItems["tenant_id"] = scv
 
 		rows = append(rows, srvItems)
-		res := insertDevelopers(rows, db, txn)
+		res := insertDevelopers(rows, txn)
 		Expect(res).Should(BeTrue())
 	}
 
@@ -297,7 +303,7 @@
 			}
 			srvItems["tenant_id"] = scv
 			rows = append(rows, srvItems)
-			res := insertApplications(rows, db, txn)
+			res := insertApplications(rows, txn)
 			Expect(res).Should(BeTrue())
 		}
 		k = j
@@ -338,7 +344,7 @@
 		}
 		srvItems["tenant_id"] = scv
 		rows = append(rows, srvItems)
-		res := insertCredentials(rows, db, txn)
+		res := insertCredentials(rows, txn)
 		Expect(res).Should(BeTrue())
 	}
 
@@ -381,7 +387,7 @@
 		}
 		srvItems["tenant_id"] = scv
 		rows = append(rows, srvItems)
-		res := insertAPIProductMappers(rows, db, txn)
+		res := insertAPIProductMappers(rows, txn)
 		Expect(res).Should(BeTrue())
 	}
 
diff --git a/init.go b/init.go
index bae3a3f..3733719 100644
--- a/init.go
+++ b/init.go
@@ -3,7 +3,6 @@
 import (
 	"database/sql"
 	"github.com/30x/apid"
-	"github.com/30x/apidApigeeSync"
 )
 
 const (
@@ -43,7 +42,7 @@
 
 	services.API().HandleFunc(apiPath, handleRequest)
 
-	events.Listen(apidApigeeSync.ApigeeSyncEventSelector, &handler{})
+	events.Listen("ApigeeSync", &handler{})
 	log.Debug("end init")
 
 	return nil
diff --git a/listener_test.go b/listener_test.go
index 6a51136..df89a27 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -3,7 +3,6 @@
 import (
 	"encoding/json"
 	"github.com/30x/apid"
-	. "github.com/30x/apidApigeeSync" // for direct access to Payload types
 	"github.com/apigee-labs/transicator/common"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
@@ -244,11 +243,11 @@
 			},
 		}
 
-		apid.Events().Listen(ApigeeSyncEventSelector, h)
-		apid.Events().Emit(ApigeeSyncEventSelector, &event)
-		apid.Events().Emit(ApigeeSyncEventSelector, &event2)
-		apid.Events().Emit(ApigeeSyncEventSelector, &event)
-		apid.Events().Emit(ApigeeSyncEventSelector, &common.ChangeList{})
+		apid.Events().Listen("ApigeeSync", h)
+		apid.Events().Emit("ApigeeSync", &event)
+		apid.Events().Emit("ApigeeSync", &event2)
+		apid.Events().Emit("ApigeeSync", &event)
+		apid.Events().Emit("ApigeeSync", &common.ChangeList{})
 	})
 
 })
