diff --git a/apigee_sync_test.go b/apigee_sync_test.go
deleted file mode 100644
index 660230d..0000000
--- a/apigee_sync_test.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package apidApigeeSync
-
-//import (
-//	"github.com/30x/apid"
-//	"github.com/apigee-labs/transicator/common"
-//	. "github.com/onsi/ginkgo"
-//	. "github.com/onsi/gomega"
-//)
-//
-//var _ = Describe("api", func() {
-//
-//	It("should perform all sync phases", func(done Done) {
-//
-//		apid.Events().ListenFunc(ApigeeSyncEventSelector, func(event apid.Event) {
-//			defer GinkgoRecover()
-//			if _, ok := event.(*common.Snapshot); ok {
-//				if phase > 1 {
-//					db := getDB()
-//					// verify event data (post snapshot)
-//					var count int
-//					err := db.QueryRow(`
-//							Select count(scp.id)
-//							FROM data_scope AS scp
-//							INNER JOIN apid_cluster AS ap
-//							WHERE scp.apid_cluster_id = ap.id
-//						`).Scan(&count)
-//					Expect(err).NotTo(HaveOccurred())
-//					Expect(count).To(Equal(1))
-//				}
-//			} else if _, ok := event.(*common.ChangeList); ok {
-//				// verify event data (post change)
-//				// There should be 2 scopes now
-//				//time.Sleep(200 * time.Millisecond)
-//				db := getDB()
-//				var count int
-//				err := db.QueryRow(`
-//						SELECT count(scp.id)
-//						FROM data_scope AS scp
-//						INNER JOIN apid_cluster AS ap
-//						WHERE scp.apid_cluster_id = ap.id
-//					`).Scan(&count)
-//				Expect(err).NotTo(HaveOccurred())
-//				Expect(count).To(Equal(2))
-//				close(done)
-//			} else {
-//				Fail("Unexpected event")
-//			}
-//
-//		})
-//	})
-//})
diff --git a/data.go b/data.go
index ee4de00..ee245b6 100644
--- a/data.go
+++ b/data.go
@@ -267,7 +267,6 @@
 			log.Errorf("Unable to retrieve apidInstanceInfo: %v", err)
 			return
 		} else {
-			log.Print("*** err: ", err)
 			// first start - no row, generate a UUID and store it
 			err = nil
 			info.InstanceID = generateUUID()
diff --git a/payload.go b/payload.go
deleted file mode 100644
index 1728922..0000000
--- a/payload.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package apidApigeeSync
-
-type Payload struct {
-	Email          string   `json:"email"`
-	FirstName      string   `json:"firstName"`
-	LastName       string   `json:"lastName"`
-	UserName       string   `json:"userName"`
-	Organization   string   `json:"organizationName"`
-	Status         string   `json:"status"`
-	CreatedAt      int64    `json:"createdAt"`
-	CreatedBy      string   `json:"createdBy"`
-	LastModifiedAt int64    `json:"lastModifiedAt"`
-	LastModifiedBy string   `json:"lastModifiedBy"`
-	AppId          string   `json:"appId"`
-	AppFamily      string   `json:"appFamily"`
-	ConsumerSecret string   `json:"consumerSecret"`
-	IssuedAt       int64    `json:"issuedAt"`
-	DeveloperId    string   `json:"developerId"`
-	CallbackUrl    string   `json:"callbackUrl"`
-	AppName        string   `json:"name"`
-	ApiProducts    []Apip   `json:"apiProducts"`
-	Environments   []string `json:"environments"`
-	Resources      []string `json:"apiResources"`
-	URL            string   `json:"url"`
-	Type           int      `json:"type"`
-	ParentId       string   `json:"parentId"`
-	Etag           string   `json:"etag"`
-	Customtag      string   `json:"customtag"`
-	Manifest       string   `json:"manifest"`
-}
-
-type DataPayload struct {
-	EntityIdentifier string  `json:"entityIdentifier"`
-	EntityType       string  `json:"entityType"`
-	Operation        string  `json:"operation"`
-	PldCont          Payload `json:"entityPayload"`
-}
-
-type ChangePayload struct {
-	LastMsId int64       `json:"_id"`
-	Ts       int64       `json:"_ts"`
-	Tags     []string    `json:"tags"`
-	Data     DataPayload `json:"data"`
-}
-
-type ChangeSet struct {
-	AtStart bool            `json:"atStart"`
-	AtEnd   bool            `json:"atEnd"`
-	Changes []ChangePayload `json:"changes"`
-}
-
-type Apip struct {
-	ApiProduct string `json:"apiproduct"`
-	Status     string `json:"status"`
-}
