diff --git a/api_test.go b/api_test.go
index 2d9d921..d310faa 100644
--- a/api_test.go
+++ b/api_test.go
@@ -5,7 +5,7 @@
 	"encoding/json"
 	"github.com/30x/apid"
 	"github.com/30x/apid/factory"
-	. "github.com/30x/apidApigeeSync" // for direct access to Payload types
+	"github.com/30x/transicator/common"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
 	"io/ioutil"
@@ -66,33 +66,33 @@
 			Expect(respj.ErrInfo.ErrorCode).Should(Equal("REQ_ENTRY_NOT_FOUND"))
 
 		})
+		/*
+			It("should reject a key once it's deleted", func() {
+				pd0 := &DataPayload{
+					EntityIdentifier: "app_credential_0",
+				}
+				res := deleteCredential(*pd0, db)
+				Expect(res).Should(BeTrue())
 
-		It("should reject a key once it's deleted", func() {
-			pd0 := &DataPayload{
-				EntityIdentifier: "credential_0",
-			}
-			res := deleteCredential(*pd0, db, "Org_0")
-			Expect(res).Should(BeTrue())
+				var respj kmsResponseFail
+				rsp, err := verifyAPIKey("app_credential_0", "/test", "Env_0", "Org_0", "verify")
+				Expect(err).ShouldNot(HaveOccurred())
 
-			var respj kmsResponseFail
-			rsp, err := verifyAPIKey("credential_0", "/test", "Env_0", "Org_0", "verify")
-			Expect(err).ShouldNot(HaveOccurred())
-
-			json.Unmarshal(rsp, &respj)
-			Expect(respj.Type).Should(Equal("ErrorResult"))
-			Expect(respj.ErrInfo.ErrorCode).Should(Equal("REQ_ENTRY_NOT_FOUND"))
-		})
-
+				json.Unmarshal(rsp, &respj)
+				Expect(respj.Type).Should(Equal("ErrorResult"))
+				Expect(respj.ErrInfo.ErrorCode).Should(Equal("REQ_ENTRY_NOT_FOUND"))
+			})
+		*/
 		It("should successfully verify good keys", func() {
 			for i := 1; i < 10; i++ {
 				resulti := strconv.FormatInt(int64(i), 10)
-				rsp, err := verifyAPIKey("credential_"+resulti, "/test", "Env_0", "Org_0", "verify")
+				rsp, err := verifyAPIKey("app_credential_"+resulti, "/test", "Env_0", "Org_0", "verify")
 				Expect(err).ShouldNot(HaveOccurred())
 
 				var respj kmsResponseSuccess
 				json.Unmarshal(rsp, &respj)
 				Expect(respj.Type).Should(Equal("APIKeyContext"))
-				Expect(respj.RspInfo.Key).Should(Equal("credential_" + resulti))
+				Expect(respj.RspInfo.Key).Should(Equal("app_credential_" + resulti))
 			}
 		})
 	})
@@ -134,7 +134,7 @@
 
 			v := url.Values{}
 			v.Add("organization", "Org_0")
-			v.Add("key", "credential_1")
+			v.Add("key", "app_credential_1")
 			v.Add("environment", "Env_0")
 			v.Add("uriPath", "/test")
 			v.Add("action", "verify")
@@ -152,7 +152,7 @@
 			Expect(err).ShouldNot(HaveOccurred())
 			json.Unmarshal(body, &respj)
 			Expect(respj.Type).Should(Equal("APIKeyContext"))
-			Expect(respj.RspInfo.Key).Should(Equal("credential_1"))
+			Expect(respj.RspInfo.Key).Should(Equal("app_credential_1"))
 		})
 	})
 })
@@ -160,34 +160,89 @@
 func insertTestData(db *sql.DB) {
 
 	for i := 0; i < 10; i++ {
+		srvItems := common.Row{}
 		result := strconv.FormatInt(int64(i), 10)
-		pd0 := &DataPayload{
-			PldCont: Payload{
-				AppName:      "Api_product_" + result,
-				Resources:    []string{"/**", "/test"},
-				Environments: []string{"Env_0", "Env_1"},
-			},
-		}
 
-		res := insertAPIproduct(*pd0, db, "Org_0")
+		scv := &common.ColumnVal{
+			Value: "api_product_" + result,
+			Type:  1,
+		}
+		srvItems["id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "{/**, /test}",
+			Type:  1,
+		}
+		srvItems["api_resources"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "{Env_0, Env_1}",
+			Type:  1,
+		}
+		srvItems["environments"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Org_0",
+			Type:  1,
+		}
+		srvItems["_apid_scope"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "tenant_id_xxxx",
+			Type:  1,
+		}
+		srvItems["tenant_id"] = scv
+		res := insertAPIproduct(srvItems, db)
 		Expect(res).Should(BeTrue())
 	}
 
 	for i := 0; i < 10; i++ {
+		srvItems := common.Row{}
 		result := strconv.FormatInt(int64(i), 10)
 
-		pd1 := &DataPayload{
-			EntityIdentifier: "developer_id_" + result,
-			PldCont: Payload{
-				Email:     "person_0@apigee.com",
-				Status:    "Active",
-				UserName:  "user_0",
-				FirstName: "user_first_name0",
-				LastName:  "user_last_name0",
-			},
+		scv := &common.ColumnVal{
+			Value: "developer_id_" + result,
+			Type:  1,
 		}
+		srvItems["id"] = scv
 
-		res := insertCreateDeveloper(*pd1, db, "Org_0")
+		scv = &common.ColumnVal{
+			Value: "test@apigee.com",
+			Type:  1,
+		}
+		srvItems["email"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Active",
+			Type:  1,
+		}
+		srvItems["status"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Apigee",
+			Type:  1,
+		}
+		srvItems["firstName"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Google",
+			Type:  1,
+		}
+		srvItems["lastName"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Org_0",
+			Type:  1,
+		}
+		srvItems["_apid_scope"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "tenant_id_xxxx",
+			Type:  1,
+		}
+		srvItems["tenant_id"] = scv
+
+		res := insertCreateDeveloper(srvItems, db)
 		Expect(res).Should(BeTrue())
 	}
 
@@ -195,44 +250,127 @@
 	for i := 0; i < 10; i++ {
 		resulti := strconv.FormatInt(int64(i), 10)
 		for j = k; j < 10+k; j++ {
-			resultj := strconv.FormatInt(int64(j), 10)
-			pd2 := &DataPayload{
-				EntityIdentifier: "application_id_" + resultj,
-				PldCont: Payload{
-					Email:       "person_0@apigee.com",
-					Status:      "Approved",
-					AppName:     "application_id_" + resultj,
-					DeveloperId: "developer_id_" + resulti,
-					CallbackUrl: "call_back_url_0",
-				},
-			}
 
-			res := insertCreateApplication(*pd2, db, "Org_0")
+			srvItems := common.Row{}
+			resultj := strconv.FormatInt(int64(j), 10)
+
+			scv := &common.ColumnVal{
+				Value: "application_id_" + resultj,
+				Type:  1,
+			}
+			srvItems["id"] = scv
+
+			scv = &common.ColumnVal{
+				Value: "developer_id_" + resulti,
+				Type:  1,
+			}
+			srvItems["developer_id"] = scv
+
+			scv = &common.ColumnVal{
+				Value: "approved",
+				Type:  1,
+			}
+			srvItems["status"] = scv
+
+			scv = &common.ColumnVal{
+				Value: "http://apigee.com",
+				Type:  1,
+			}
+			srvItems["callback_url"] = scv
+
+			scv = &common.ColumnVal{
+				Value: "Org_0",
+				Type:  1,
+			}
+			srvItems["_apid_scope"] = scv
+
+			scv = &common.ColumnVal{
+				Value: "tenant_id_xxxx",
+				Type:  1,
+			}
+			srvItems["tenant_id"] = scv
+			res := insertCreateApplication(srvItems, db)
 			Expect(res).Should(BeTrue())
 		}
 		k = j
 	}
 
-	j = 0
-	k = 0
 	for i := 0; i < 10; i++ {
-		resulti := strconv.FormatInt(int64(i), 10)
-		for j = k; j < 10+k; j++ {
-			resultj := strconv.FormatInt(int64(j), 10)
-			pd3 := &DataPayload{
-				EntityIdentifier: "credential_" + resultj,
-				PldCont: Payload{
-					AppId:          "application_id_" + resulti,
-					Status:         "Approved",
-					ConsumerSecret: "consumer_secret_0",
-					IssuedAt:       349583485,
-					ApiProducts:    []Apip{{ApiProduct: "Api_product_0", Status: "Approved"}},
-				},
-			}
+		srvItems := common.Row{}
+		result := strconv.FormatInt(int64(i), 10)
 
-			res := insertCreateCredential(*pd3, db, "Org_0")
-			Expect(res).Should(BeTrue())
+		scv := &common.ColumnVal{
+			Value: "app_credential_" + result,
+			Type:  1,
 		}
-		k = j
+		srvItems["id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "application_id_" + result,
+			Type:  1,
+		}
+		srvItems["app_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "approved",
+			Type:  1,
+		}
+		srvItems["status"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "Org_0",
+			Type:  1,
+		}
+		srvItems["_apid_scope"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "tenant_id_xxxx",
+			Type:  1,
+		}
+		srvItems["tenant_id"] = scv
+		res := insertCreateCredential(srvItems, db)
+		Expect(res).Should(BeTrue())
 	}
+
+	for i := 0; i < 10; i++ {
+		srvItems := common.Row{}
+		result := strconv.FormatInt(int64(i), 10)
+
+		scv := &common.ColumnVal{
+			Value: "api_product_" + result,
+			Type:  1,
+		}
+		srvItems["apiprdt_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "application_id_" + result,
+			Type:  1,
+		}
+		srvItems["app_id"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "app_credential_" + result,
+			Type:  1,
+		}
+		srvItems["appcred_id"] = scv
+		scv = &common.ColumnVal{
+			Value: "approved",
+			Type:  1,
+		}
+		srvItems["status"] = scv
+		scv = &common.ColumnVal{
+			Value: "Org_0",
+			Type:  1,
+		}
+		srvItems["_apid_scope"] = scv
+
+		scv = &common.ColumnVal{
+			Value: "tenant_id_xxxx",
+			Type:  1,
+		}
+		srvItems["tenant_id"] = scv
+		res := insertApiProductMapper(srvItems, db)
+		Expect(res).Should(BeTrue())
+	}
+
 }
diff --git a/listener_test.go b/listener_test.go
index cb283d7..2df7213 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -12,69 +12,17 @@
 
 	It("should store data from ApigeeSync in the database", func(done Done) {
 
-		var event = ChangeSet{}
-		event.Changes = []ChangePayload{
+		var event = common.ChangeList{}
+		rowitemp := common.Row{}
+		scv := &common.ColumnVal{
+			Value: "api_product_0",
+			Type:  1,
+		}
+		rowitem["id"] = scv
+		event.Changes = []Change{
 			{
-				Data: DataPayload{
-					EntityType: "apiproduct",
-					Operation: "create",
-					PldCont: Payload{
-						Organization: "test_org",
-						AppName:      "Api_product_sync",
-						Resources:    []string{"/**", "/test"},
-						Environments: []string{"Env_0", "Env_1"},
-					},
-				},
-			},
-			{
-				Data: DataPayload{
-					EntityType: "developer",
-					Operation: "create",
-					EntityIdentifier: "developer_id_sync",
-					PldCont: Payload{
-						Organization: "test_org",
-						Email:     "person_sync@apigee.com",
-						Status:    "Active",
-						UserName:  "user_sync",
-						FirstName: "user_first_name_sync",
-						LastName:  "user_last_name_sync",
-					},
-				},
-			},
-			{
-				Data: DataPayload{
-					EntityType: "app",
-					Operation: "create",
-					EntityIdentifier: "application_id_sync",
-					PldCont: Payload{
-						Organization: "test_org",
-						Email:       "person_sync@apigee.com",
-						Status:      "Approved",
-						AppName:     "application_id_sync",
-						DeveloperId: "developer_id_sync",
-						CallbackUrl: "call_back_url",
-					},
-				},
-			},
-			{
-				Data: DataPayload{
-					EntityType: "credential",
-					Operation: "create",
-					EntityIdentifier: "credential_sync",
-					PldCont: Payload{
-						Organization: "test_org",
-						AppId:          "application_id_sync",
-						Status:         "Approved",
-						ConsumerSecret: "consumer_secret_sync",
-						IssuedAt:       349583485,
-						ApiProducts:    []Apip{
-							{
-								ApiProduct: "Api_product_sync",
-								Status: "Approved",
-							},
-						},
-					},
-				},
+				Table:  "api_product",
+				NewRow: rowitemp,
 			},
 		}
 
@@ -101,7 +49,7 @@
 		}
 
 		apid.Events().Listen(ApigeeSyncEventSelector, h)
-		apid.Events().Emit(ApigeeSyncEventSelector, &event) // for standard listener
+		apid.Events().Emit(ApigeeSyncEventSelector, &event)       // for standard listener
 		apid.Events().Emit(ApigeeSyncEventSelector, &ChangeSet{}) // for test listener
 	})
 
diff --git a/validate_env_test.go b/validate_env_test.go
index 3942d7a..268f9dd 100644
--- a/validate_env_test.go
+++ b/validate_env_test.go
@@ -8,19 +8,19 @@
 var _ = Describe("Validate Env", func() {
 
 	It("validation1", func() {
-		s := validateEnv("[\"foo\",\"bar\"]", "foo")
+		s := validateEnv("{foo,bar}", "foo")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation2", func() {
-		s := validateEnv("[\"foo\",\"bar\"]", "bar")
+		s := validateEnv("{foo,bar}", "bar")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation3", func() {
-		s := validateEnv("[\"foo\",\"bar\"]", "xxx")
+		s := validateEnv("{foo,bar}", "xxx")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation4", func() {
-		s := validateEnv("[]", "xxx")
+		s := validateEnv("{}", "xxx")
 		Expect(s).Should(BeFalse())
 	})
 })
diff --git a/validate_path_test.go b/validate_path_test.go
index 0b76b07..56e4d50 100644
--- a/validate_path_test.go
+++ b/validate_path_test.go
@@ -16,79 +16,79 @@
 		Expect(s).Should(BeTrue())
 	})
 	It("validation3", func() {
-		s := validatePath("[]", "foo")
+		s := validatePath("{}", "foo")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation4", func() {
-		s := validatePath("[\"/**\"]", "/foo")
+		s := validatePath("{\"/**\"}", "/foo")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation5", func() {
-		s := validatePath("[\"/**\"]", "foo")
+		s := validatePath("{\"/**\"}", "foo")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation6", func() {
-		s := validatePath("[\"/**\"]", "/")
+		s := validatePath("{/**}", "/")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation7", func() {
-		s := validatePath("[\"/foo/**\"]", "/")
+		s := validatePath("{/foo/**}", "/")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation8", func() {
-		s := validatePath("[\"/foo/**\"]", "/foo/")
+		s := validatePath("{/foo/**}", "/foo/")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation9", func() {
-		s := validatePath("[\"/foo/**\"]", "/foo/bar")
+		s := validatePath("{/foo/**}", "/foo/bar")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation10", func() {
-		s := validatePath("[\"/foo/**\"]", "foo")
+		s := validatePath("{/foo/**}", "foo")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation11", func() {
-		s := validatePath("[\"/foo/bar/**\"]", "/foo/bar/xx/yy")
+		s := validatePath("{/foo/bar/**}", "/foo/bar/xx/yy")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation12", func() {
-		s := validatePath("[\"/foo/bar/*\"]", "/foo/bar/xxx")
+		s := validatePath("/foo/bar/*}", "/foo/bar/xxx")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation13", func() {
-		s := validatePath("[\"/foo/bar/*/\"]", "/foo/bar/xxx")
+		s := validatePath("{/foo/bar/*/}", "/foo/bar/xxx")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation14", func() {
-		s := validatePath("[\"/foo/bar/**\"]", "/foo/bar/xx/yy")
+		s := validatePath("{/foo/bar/**}", "/foo/bar/xx/yy")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation15", func() {
-		s := validatePath("[\"/foo/*/**/\"]", "/foo/bar")
+		s := validatePath("{/foo/*/**/}", "/foo/bar")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation16", func() {
-		s := validatePath("[\"/foo/bar/*/xxx\"]", "/foo/bar/yyy/xxx")
+		s := validatePath("{/foo/bar/*/xxx}", "/foo/bar/yyy/xxx")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation17", func() {
-		s := validatePath("[\"/foo/bar/*/xxx/\"]", "/foo/bar/yyy/xxx")
+		s := validatePath("{/foo/bar/*/xxx/}", "/foo/bar/yyy/xxx")
 		Expect(s).Should(BeFalse())
 	})
 	It("validation18", func() {
-		s := validatePath("[\"/foo/bar/**/xxx/\"]", "/foo/bar/aaa/bbb/xxx/")
+		s := validatePath("{/foo/bar/**/xxx/}", "/foo/bar/aaa/bbb/xxx/")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation19", func() {
-		s := validatePath("[\"/foo/bar/***/xxx/\"]", "/foo/bar/aaa/bbb/xxx/")
+		s := validatePath("{/foo/bar/***/xxx/}", "/foo/bar/aaa/bbb/xxx/")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation20", func() {
-		s := validatePath("[\"/foo/\", \"/bar/\"]", "/foo/")
+		s := validatePath("{/foo/, /bar/}", "/foo/")
 		Expect(s).Should(BeTrue())
 	})
 	It("validation21", func() {
-		s := validatePath("[\"/foo/bar/yy*/xxx\"]", "/foo/bar/yyy/xxx")
+		s := validatePath("{/foo/bar/yy*/xxx}", "/foo/bar/yyy/xxx")
 		Expect(s).Should(BeTrue())
 	})
 })
