Standalone cmd
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())