diff --git a/api.go b/api.go
index 9ce3bea..09a4d17 100644
--- a/api.go
+++ b/api.go
@@ -68,7 +68,7 @@
 				}
 			}
 		case subscriber := <-addSubscriber:
-			log.Debugf("Add subscriber: %s", subscriber)
+			log.Debugf("Add subscriber: %v", subscriber)
 			subscribers[subscriber] = struct{}{}
 		}
 	}
diff --git a/api_test.go b/api_test.go
index 1076ff8..669f3e0 100644
--- a/api_test.go
+++ b/api_test.go
@@ -127,12 +127,20 @@
 
 				Expect(depRes.DeploymentID).Should(Equal(deploymentID))
 
+				for _, bundle := range depRes.Bundles {
+					uri, err := url.Parse(bundle.URI)
+					Expect(err).ShouldNot(HaveOccurred())
+					bContent, err := ioutil.ReadFile(uri.Path)
+					Expect(err).ShouldNot(HaveOccurred())
+					content := string(bContent)
+					Expect(content).Should(HavePrefix("/bundle/"))
+				}
+
 				close(done)
 			}()
 
-			time.Sleep(50 * time.Millisecond) // make sure API call is made and blocks
-			insertTestDeployment(testServer, deploymentID)
-			incoming <- deploymentID
+			time.Sleep(25 * time.Millisecond) // give api call above time to block
+			triggerDeploymentEvent(deploymentID)
 		})
 
 		It("should get 304 after blocking if no new deployment", func() {
diff --git a/data.go b/data.go
index 45d2cc1..0fd46b9 100644
--- a/data.go
+++ b/data.go
@@ -118,8 +118,6 @@
 	}
 
 	log.Debugf("INSERT gateway_deploy_deployment %s succeeded", depID)
-
-	incoming <- depID
 	return err
 }
 
@@ -191,6 +189,11 @@
 	}
 
 	log.Debugf("UPDATE gateway_deploy_deployment %s succeeded", depID)
+
+	if status == DEPLOYMENT_STATE_READY {
+		incoming<- depID
+	}
+
 	return nil
 }
 
diff --git a/deployments.go b/deployments.go
index ea7c81a..8fe22f4 100644
--- a/deployments.go
+++ b/deployments.go
@@ -99,7 +99,7 @@
 		return nil, err
 	}
 	if res.StatusCode != 200 {
-		return nil, fmt.Errorf("Bundle uri %s failed with status %s", uriString, res.StatusCode)
+		return nil, fmt.Errorf("Bundle uri %s failed with status %d", uriString, res.StatusCode)
 	}
 	return res.Body, nil
 }
@@ -120,6 +120,7 @@
 			log.Errorf("Unable to create temp file: %v", err)
 			return
 		}
+		defer tempFile.Close()
 		fileName = tempFile.Name()
 
 		var bundleReader io.ReadCloser
@@ -136,11 +137,7 @@
 			return
 		}
 
-		err = tempFile.Close()
-		if err != nil {
-			log.Errorf("Unable to close file %s: %v", tempFile, err)
-		}
-
+		log.Debugf("Bundle downloaded: %s", bun.URI)
 		return
 	}
 
@@ -210,7 +207,7 @@
 		bun := dep.Bundles[i]
 		go func() {
 			err := prepareBundle(depID, bun)
-			errorsChan <- err
+			errorsChan<- err
 			if err != nil {
 				id := string(i)
 				err = updateBundleStatus(db, depID, id, DEPLOYMENT_STATE_ERR_APID, ERROR_CODE_TODO, err.Error())
diff --git a/listener.go b/listener.go
index 915a6b5..39e35c2 100644
--- a/listener.go
+++ b/listener.go
@@ -68,8 +68,6 @@
 
 	db := getDB()
 	for _, change := range changes.Changes {
-		log.Debugf("change table: %s operation: %s", change.Table, change.Operation)
-
 		var err error
 		switch change.Table {
 		case MANIFEST_TABLE:
diff --git a/listener_test.go b/listener_test.go
index a7cb03f..7160f35 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -85,40 +85,7 @@
 
 		deploymentID := "listener_test_2"
 
-		uri, err := url.Parse(testServer.URL)
-		Expect(err).ShouldNot(HaveOccurred())
-		uri.Path = "/bundle/1"
-		bundleUri := uri.String()
-
-		dep := deployment{
-			DeploymentID: deploymentID,
-			System: bundle{
-				URI: bundleUri,
-			},
-			Bundles: []bundle{
-				{
-					BundleID: "/bundle/1",
-					URI: bundleUri,
-					Scope: "some-scope",
-				},
-			},
-		}
-
-		depBytes, err := json.Marshal(dep)
-		Expect(err).ShouldNot(HaveOccurred())
-
-		row := common.Row{}
-		row["id"] = &common.ColumnVal{Value: deploymentID}
-		row["manifest_body"] = &common.ColumnVal{Value: string(depBytes)}
-
-		var event = common.ChangeList{}
-		event.Changes = []common.Change{
-			{
-				Operation: common.Insert,
-				Table: MANIFEST_TABLE,
-				NewRow: row,
-			},
-		}
+		var dep deployment
 
 		h := &test_handler{
 			deploymentID,
@@ -138,7 +105,9 @@
 		}
 
 		apid.Events().Listen(APIGEE_SYNC_EVENT, h)
-		apid.Events().Emit(APIGEE_SYNC_EVENT, &event)               // for standard listener
+
+		dep = triggerDeploymentEvent(deploymentID)
+
 		apid.Events().Emit(APIGEE_SYNC_EVENT, &common.ChangeList{}) // for test listener
 	})
 })
@@ -175,3 +144,45 @@
 		Expect(string(bytes)).Should(Equal(b.BundleID))
 	}
 }
+
+func triggerDeploymentEvent(deploymentID string) deployment {
+
+	uri, err := url.Parse(testServer.URL)
+	Expect(err).ShouldNot(HaveOccurred())
+	uri.Path = "/bundle/1"
+	bundleUri := uri.String()
+
+	dep := deployment{
+		DeploymentID: deploymentID,
+		System: bundle{
+			URI: bundleUri,
+		},
+		Bundles: []bundle{
+			{
+				BundleID: "/bundle/1",
+				URI: bundleUri,
+				Scope: "some-scope",
+			},
+		},
+	}
+
+	depBytes, err := json.Marshal(dep)
+	Expect(err).ShouldNot(HaveOccurred())
+
+	row := common.Row{}
+	row["id"] = &common.ColumnVal{Value: deploymentID}
+	row["manifest_body"] = &common.ColumnVal{Value: string(depBytes)}
+
+	var event = common.ChangeList{}
+	event.Changes = []common.Change{
+		{
+			Operation: common.Insert,
+			Table: MANIFEST_TABLE,
+			NewRow: row,
+		},
+	}
+
+	apid.Events().Emit(APIGEE_SYNC_EVENT, &event)
+
+	return dep
+}
