diff --git a/bundle.go b/bundle.go
index 660bd53..a53f31c 100644
--- a/bundle.go
+++ b/bundle.go
@@ -36,7 +36,7 @@
 	queueDownloadRequest(*DataDeployment)
 	enqueueRequest(*DownloadRequest)
 	makeDownloadRequest(string) *DownloadRequest
-	//deleteBundles([]DataDeployment)
+	deleteBundles([]DataDeployment)
 	Close()
 }
 
diff --git a/listener.go b/listener.go
index 701d3a1..8961bae 100644
--- a/listener.go
+++ b/listener.go
@@ -135,7 +135,7 @@
 	if len(deletedDeployments) > 0 {
 		log.Debugf("will delete %d old bundles", len(deletedDeployments))
 		//TODO delete bundles for deleted deployments
-		//h.bundleMan.deleteBundles(deletedDeployments)
+		h.bundleMan.deleteBundles(deletedDeployments)
 	}
 }
 
diff --git a/listener_test.go b/listener_test.go
index ad0b258..d82ce1c 100644
--- a/listener_test.go
+++ b/listener_test.go
@@ -39,6 +39,7 @@
 		dummyBundleMan = &dummyBundleManager{
 			requestChan: make(chan *DownloadRequest),
 			depChan:     make(chan *DataDeployment),
+			delChan:     make(chan *DataDeployment),
 		}
 		testHandler = &apigeeSyncHandler{
 			dbMan:     dummyDbMan,
@@ -124,11 +125,43 @@
 
 			apid.Events().Emit(APIGEE_SYNC_EVENT, changeList)
 
+			// verify
 			for i := 0; i < len(changes); i++ {
 				dep := <-dummyBundleMan.depChan
 				Expect(reflect.DeepEqual(deployments[dep.ID], *dep)).Should(BeTrue())
 				delete(deployments, dep.ID)
 			}
+			Expect(len(deployments)).Should(BeZero())
+		})
+
+		It("Delete event shoud deliver to the bundle manager", func() {
+			// emit change event
+			changes := make([]common.Change, 0)
+			deployments := make(map[string]bool)
+			for i := 0; i < 1+rand.Intn(10); i++ {
+				dep := makeTestDeployment()
+				change := common.Change{
+					Operation: common.Delete,
+					Table:     CONFIG_METADATA_TABLE,
+					OldRow:    rowFromDeployment(dep),
+				}
+				changes = append(changes, change)
+				deployments[dep.ID] = true
+			}
+
+			changeList := &common.ChangeList{
+				Changes: changes,
+			}
+
+			apid.Events().Emit(APIGEE_SYNC_EVENT, changeList)
+
+			// verify
+			for i := 0; i < len(changes); i++ {
+				dep := <-dummyBundleMan.delChan
+				Expect(deployments[dep.ID]).Should(BeTrue())
+				delete(deployments, dep.ID)
+			}
+			Expect(len(deployments)).Should(BeZero())
 		})
 	})
 })
@@ -136,6 +169,7 @@
 type dummyBundleManager struct {
 	requestChan chan *DownloadRequest
 	depChan     chan *DataDeployment
+	delChan     chan *DataDeployment
 }
 
 func (bm *dummyBundleManager) initializeBundleDownloading() {
@@ -156,6 +190,12 @@
 	}
 }
 
+func (bm *dummyBundleManager) deleteBundles(deployments []DataDeployment) {
+	for i := range deployments {
+		bm.delChan <- &deployments[i]
+	}
+}
+
 func (bm *dummyBundleManager) Close() {
 
 }
