diff --git a/api.go b/api.go
index e6fd817..859452e 100644
--- a/api.go
+++ b/api.go
@@ -182,7 +182,7 @@
 	}
 }
 
-func sendDeployments(w http.ResponseWriter, dataDeps []dataDeployment, eTag string) {
+func sendDeployments(w http.ResponseWriter, dataDeps []DataDeployment, eTag string) {
 
 	var apiDeps apiDeploymentResponse
 
diff --git a/api_test.go b/api_test.go
index 8bc93e6..be29bd1 100644
--- a/api_test.go
+++ b/api_test.go
@@ -309,7 +309,7 @@
 	tx, err := getDB().Begin()
 	Expect(err).ShouldNot(HaveOccurred())
 
-	dep := dataDeployment{
+	dep := DataDeployment{
 		ID: deploymentID,
 		BundleConfigID: deploymentID,
 		ApidClusterID: deploymentID,
@@ -328,7 +328,7 @@
 		LocalBundleURI: "x",
 	}
 
-	err = insertDeployment(tx, dep)
+	err = InsertDeployment(tx, dep)
 	Expect(err).ShouldNot(HaveOccurred())
 
 	err = tx.Commit()
diff --git a/bundle.go b/bundle.go
index 311534c..4762165 100644
--- a/bundle.go
+++ b/bundle.go
@@ -25,7 +25,7 @@
 	backOffMultiplier = 10 * time.Second
 )
 
-func downloadBundle(dep dataDeployment) error {
+func downloadBundle(dep DataDeployment) error {
 
 	log.Debugf("starting bundle download process: %s", dep.BundleURI)
 
@@ -77,7 +77,7 @@
 	return nil
 }
 
-func getBundleFile(dep dataDeployment) string {
+func getBundleFile(dep DataDeployment) string {
 
 	// the content of the URI is unfortunately not guaranteed not to change, so I can't just use dep.BundleURI
 	// unfortunately, this also means that a bundle cache isn't especially relevant
diff --git a/cmd/apidGatewayDeploy/main.go b/cmd/apidGatewayDeploy/main.go
index 5b162d4..10e1989 100644
--- a/cmd/apidGatewayDeploy/main.go
+++ b/cmd/apidGatewayDeploy/main.go
@@ -6,54 +6,60 @@
 	"github.com/30x/apid/factory"
 	_ "github.com/30x/apidGatewayDeploy"
 	"io/ioutil"
-	"github.com/apigee-labs/transicator/common"
 	"github.com/30x/apidGatewayDeploy"
 	"os"
 )
 
 func main() {
-	manifestFlag := flag.String("manifest", "", "file path to a manifest yaml file")
+	bundleFlag := flag.String("bundle", "", "file path to a bundle file (for testing)")
+	configFlag := flag.String("config", "", "file path to a bundle config file (for testing)")
 	flag.Parse()
-	manifestFile := *manifestFlag
+	bundleFile := *bundleFlag
+	configFile := *configFlag
 
-	// initialize apid using default services
 	apid.Initialize(factory.DefaultServicesFactory())
 
 	log := apid.Log()
 	log.Debug("initializing...")
 
-	config := apid.Config()
+	configService := apid.Config()
 
-	// if manifest is specified, start with only the manifest using a temp dir
-	var manifest []byte
-	if manifestFile != "" {
-		var err error
-		manifest, err = ioutil.ReadFile(manifestFile)
-		if err != nil {
-			log.Errorf("ERROR: Unable to read manifest at %s", manifestFile)
-			return
-		}
-
-		log.Printf("Running in temp dir with manifest: %s", manifestFile)
+	// if bundle is specified, start in a temp dir for testing
+	var bundleConfig string
+	if bundleFile != "" {
+		log.Printf("Running in temp dir with bundle file: %s", bundleFile)
 		tmpDir, err := ioutil.TempDir("", "apidGatewayDeploy")
 		if err != nil {
 			log.Panicf("ERROR: Unable to create temp dir", err)
 		}
 		defer os.RemoveAll(tmpDir)
-		config.Set("data_path", tmpDir)
-		config.Set("gatewaydeploy_bundle_dir", tmpDir)
+
+		configService.Set("data_path", tmpDir)
+		configService.Set("gatewaydeploy_bundle_dir", tmpDir)
+
+		if configFile != "" {
+			bundleConfigBytes, err := ioutil.ReadFile(configFile)
+			if err != nil {
+				log.Errorf("ERROR: Unable to read bundle config file at %s", configFile)
+				return
+
+			}
+			bundleConfig = string(bundleConfigBytes)
+		}
 	}
 
-	// this will call all initialization functions on all registered plugins
 	apid.InitializePlugins()
 
-	if manifest != nil {
-		insertTestRecord(manifest)
+	if bundleFile != "" {
+		err := insertTestDeployment(bundleFile, bundleConfig)
+		if err != nil {
+			log.Fatal(err)
+		}
 	}
 
 	// print the base url to the console
 	basePath := "/deployments"
-	port := config.GetString("api_port")
+	port := configService.GetString("api_port")
 	log.Print()
 	log.Printf("API is at: http://localhost:%s%s", port, basePath)
 	log.Print()
@@ -64,19 +70,51 @@
 	log.Fatalf("Error. Is something already running on port %d? %s", port, err)
 }
 
-func insertTestRecord(manifest []byte) {
+func insertTestDeployment(bundleFile, bundleConfig string) error {
 
-	row := common.Row{}
-	row["id"] = &common.ColumnVal{Value: "deploymentID"}
-	row["manifest_body"] = &common.ColumnVal{Value: string(manifest)}
+	deploymentID := "testDeployment"
 
-	var event = common.Snapshot{}
-	event.Tables = []common.Table{
-		{
-			Name: apiGatewayDeploy.MANIFEST_TABLE,
-			Rows: []common.Row{row},
-		},
+	dep := apiGatewayDeploy.DataDeployment{
+		ID: deploymentID,
+		BundleConfigID: deploymentID,
+		ApidClusterID: deploymentID,
+		DataScopeID: deploymentID,
+		BundleConfigJSON: bundleConfig,
+		ConfigJSON: "",
+		Status: "",
+		Created: "",
+		CreatedBy: "",
+		Updated: "",
+		UpdatedBy: "",
+		BundleName: deploymentID,
+		BundleURI: bundleFile,
+		BundleChecksum: "",
+		BundleChecksumType: "",
+		LocalBundleURI: bundleFile,
 	}
 
-	apid.Events().Emit(apiGatewayDeploy.APIGEE_SYNC_EVENT, &event)
-}
+	log := apid.Log()
+
+	db, err := apid.Data().DB()
+	if err != nil {
+		return err
+	}
+
+	tx, err := db.Begin()
+	if err != nil {
+		return err
+	}
+
+	err = apiGatewayDeploy.InsertDeployment(tx, dep)
+	if err != nil {
+		log.Error("Unable to insert deployment")
+		return err
+	}
+
+	err = tx.Commit()
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
\ No newline at end of file
diff --git a/data.go b/data.go
index c9aa520..d0f6785 100644
--- a/data.go
+++ b/data.go
@@ -12,7 +12,7 @@
 	dbMux    sync.RWMutex
 )
 
-type dataDeployment struct {
+type DataDeployment struct {
 	ID                string
 	BundleConfigID    string
 	ApidClusterID     string
@@ -119,7 +119,7 @@
 	return eTag, err
 }
 
-func insertDeployment(tx *sql.Tx, dep dataDeployment) error {
+func InsertDeployment(tx *sql.Tx, dep DataDeployment) error {
 
 	log.Debugf("insertDeployment: %s", dep.ID)
 
@@ -175,7 +175,7 @@
 }
 
 // getReadyDeployments() returns array of deployments that are ready to deploy
-func getReadyDeployments() (deployments []dataDeployment, err error) {
+func getReadyDeployments() (deployments []DataDeployment, err error) {
 
 	db := getDB()
 	rows, err := db.Query(`
@@ -196,7 +196,7 @@
 	defer rows.Close()
 
 	for rows.Next() {
-		dep := dataDeployment{}
+		dep := DataDeployment{}
 		rows.Scan(&dep.ID, &dep.BundleConfigID, &dep.ApidClusterID, &dep.DataScopeID,
 			&dep.BundleConfigJSON, &dep.ConfigJSON, &dep.Status, &dep.Created,
 			&dep.CreatedBy, &dep.Updated, &dep.UpdatedBy, &dep.BundleName,
@@ -208,40 +208,6 @@
 	return
 }
 
-// for testing
-func getAllDeploymentRecords() (deployments []dataDeployment, err error) {
-
-	db := getDB()
-	rows, err := db.Query(`
-	SELECT id, bundle_config_id, apid_cluster_id, data_scope_id,
-		bundle_config_json, config_json, status, created,
-		created_by, updated, updated_by, bundle_name,
-		bundle_uri, local_bundle_uri
-	FROM deployments
-	`)
-	if err != nil {
-		if err == sql.ErrNoRows{
-			return deployments, nil
-		}
-		log.Errorf("Error querying deployments: %v", err)
-		return
-	}
-	defer rows.Close()
-
-	for rows.Next() {
-		dep := dataDeployment{}
-		rows.Scan(&dep.ID, &dep.BundleConfigID, &dep.ApidClusterID, &dep.DataScopeID,
-			&dep.BundleConfigJSON, &dep.ConfigJSON, &dep.Status, &dep.Created,
-			&dep.CreatedBy, &dep.Updated, &dep.UpdatedBy, &dep.BundleName,
-			&dep.BundleURI, &dep.LocalBundleURI,
-		)
-		deployments = append(deployments, dep)
-	}
-
-	return
-}
-
-// todo: is this a sufficient level of tracking?
 func setDeploymentResults(results apiDeploymentResults) error {
 
 	log.Debugf("setDeploymentResults: %v", results)
diff --git a/listener.go b/listener.go
index 655ea97..246e525 100644
--- a/listener.go
+++ b/listener.go
@@ -124,7 +124,7 @@
 
 func addDeployment(tx *sql.Tx, row common.Row) (err error) {
 
-	d := dataDeployment{}
+	d := DataDeployment{}
 	err = row.Get("id", &d.ID)
 	if err != nil {
 		return
@@ -182,7 +182,7 @@
 	d.BundleChecksumType = bc.ChecksumType
 	d.BundleChecksum = bc.Checksum
 
-	err = insertDeployment(tx, d)
+	err = InsertDeployment(tx, d)
 	if err != nil {
 		return
 	}
diff --git a/listener_test.go b/listener_test.go
index 1bde3aa..ec4b7f2 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -134,11 +134,11 @@
 
 			tx, err := getDB().Begin()
 			Expect(err).ShouldNot(HaveOccurred())
-			dep := dataDeployment{
+			dep := DataDeployment{
 				ID: deploymentID,
 				LocalBundleURI: "whatever",
 			}
-			err = insertDeployment(tx, dep)
+			err = InsertDeployment(tx, dep)
 			Expect(err).ShouldNot(HaveOccurred())
 			err = tx.Commit()
 			Expect(err).ShouldNot(HaveOccurred())
