Bundle cleanup config, cleanup
diff --git a/apidGatewayDeploy_suite_test.go b/apidGatewayDeploy_suite_test.go
index 803a8b3..dffb117 100644
--- a/apidGatewayDeploy_suite_test.go
+++ b/apidGatewayDeploy_suite_test.go
@@ -40,11 +40,12 @@
 	Expect(err).NotTo(HaveOccurred())
 	SetDB(db)
 
-	debounceDuration = 1 * time.Millisecond
+	debounceDuration = time.Millisecond
+	bundleCleanupDelay = time.Millisecond
 
 	router := apid.API().Router()
 	// fake an unreliable bundle repo
-	backOffMultiplier = 10 * time.Millisecond
+	backOffMultiplier = time.Millisecond
 	count := 1
 	router.HandleFunc("/bundles/{id}", func(w http.ResponseWriter, req *http.Request) {
 		count++
diff --git a/cmd/apidGatewayDeploy/main.go b/cmd/apidGatewayDeploy/main.go
index 546cc9d..46e75d4 100644
--- a/cmd/apidGatewayDeploy/main.go
+++ b/cmd/apidGatewayDeploy/main.go
@@ -1,14 +1,14 @@
 package main
 
 import (
+	"encoding/json"
 	"flag"
 	"github.com/30x/apid"
 	"github.com/30x/apid/factory"
+	"github.com/30x/apidGatewayDeploy"
 	_ "github.com/30x/apidGatewayDeploy"
 	"io/ioutil"
-	"github.com/30x/apidGatewayDeploy"
 	"os"
-	"encoding/json"
 )
 
 func main() {
@@ -33,7 +33,6 @@
 		defer os.RemoveAll(tmpDir)
 
 		configService.Set("data_path", tmpDir)
-		configService.Set("gatewaydeploy_bundle_dir", tmpDir) // todo: legacy?
 
 		if deploymentsFile != "" {
 			bytes, err := ioutil.ReadFile(deploymentsFile)
@@ -114,7 +113,6 @@
 			LocalBundleURI:     ad.URI,
 		}
 
-
 		err = apiGatewayDeploy.InsertDeployment(tx, dep)
 		if err != nil {
 			log.Error("Unable to insert deployment")
@@ -131,4 +129,4 @@
 	apiGatewayDeploy.InitAPI()
 
 	return nil
-}
\ No newline at end of file
+}
diff --git a/data.go b/data.go
index 42f6efd..0f8c412 100644
--- a/data.go
+++ b/data.go
@@ -65,7 +65,6 @@
 		PRIMARY KEY (id)
 	);
 	`)
-	// todo: is ID enough? must it be scoped by cluster id?
 	if err != nil {
 		return err
 	}
diff --git a/init.go b/init.go
index 74a8548..70cdae2 100644
--- a/init.go
+++ b/init.go
@@ -8,16 +8,18 @@
 )
 
 const (
-	configBundleDirKey     = "gatewaydeploy_bundle_dir"
-	configDebounceDuration = "gatewaydeploy_debounce_duration"
+	configBundleDirKey       = "gatewaydeploy_bundle_dir"
+	configDebounceDuration   = "gatewaydeploy_debounce_duration"
+	configBundleCleanupDelay = "gatewaydeploy_bundle_cleanup_delay"
 )
 
 var (
-	services   apid.Services
-	log        apid.LogService
-	data       apid.DataService
-	bundlePath string
-	debounceDuration time.Duration
+	services           apid.Services
+	log                apid.LogService
+	data               apid.DataService
+	bundlePath         string
+	debounceDuration   time.Duration
+	bundleCleanupDelay time.Duration
 )
 
 func init() {
@@ -31,13 +33,19 @@
 
 	config := services.Config()
 	config.SetDefault(configBundleDirKey, "bundles")
-	config.SetDefault(configDebounceDuration, 1 * time.Second)
+	config.SetDefault(configDebounceDuration, time.Second)
+	config.SetDefault(configBundleCleanupDelay, time.Minute)
 
 	debounceDuration = config.GetDuration(configDebounceDuration)
-	if debounceDuration < 1 * time.Millisecond {
+	if debounceDuration < time.Millisecond {
 		log.Panicf("%s must be a positive duration", configDebounceDuration)
 	}
 
+	bundleCleanupDelay = config.GetDuration(configBundleCleanupDelay)
+	if bundleCleanupDelay < time.Millisecond {
+		log.Panicf("%s must be a positive duration", configBundleCleanupDelay)
+	}
+
 	data = services.Data()
 
 	relativeBundlePath := config.GetString(configBundleDirKey)
diff --git a/listener.go b/listener.go
index 91f0fe4..889e74c 100644
--- a/listener.go
+++ b/listener.go
@@ -6,6 +6,7 @@
 	"github.com/30x/apid"
 	"github.com/apigee-labs/transicator/common"
 	"os"
+	"time"
 )
 
 const (
@@ -141,8 +142,7 @@
 		log.Debugf("will delete %d old bundles", len(bundlesToDelete))
 		go func() {
 			// give clients a minute to avoid conflicts
-			// todo: configurable time
-			//time.Sleep(1 * time.Minute)
+			time.Sleep(bundleCleanupDelay)
 			for _, b := range bundlesToDelete {
 				log.Debugf("removing old bundle: %v", b)
 				safeDelete(b)