diff --git a/go.sum b/go.sum
index 24c61a4ecd51bca4c2e562b060374b555b815e7f..3df102786afb3eeee10747d3452e60d64e12eb1b 100644
--- a/go.sum
+++ b/go.sum
@@ -43,6 +43,7 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T
 github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/iotaledger/iota.go v1.0.0-beta.7 h1:OaUNahPvOdQz2nKcgeAfcUdxlEDlEV3xwLIkwzZ1B/U=
 github.com/iotaledger/iota.go v1.0.0-beta.7/go.mod h1:dMps6iMVU1pf5NDYNKIw4tRsPeC8W3ZWjOvYHOO1PMg=
 github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
diff --git a/packages/database/database.go b/packages/database/database.go
index e6183af062ef7b449bc1f940122cd751f2c0564b..913ffc3f91589637dddc22272a4e8ee45cb56214 100644
--- a/packages/database/database.go
+++ b/packages/database/database.go
@@ -100,10 +100,10 @@ func (this *prefixDb) Delete(key []byte) error {
 	return err
 }
 
-func (this *prefixDb) ForEach(consumer func([]byte, []byte)) error {
+func (this *prefixDb) forEach(prefix []byte, consumer func([]byte, []byte)) error {
 	err := this.db.View(func(txn *badger.Txn) error {
 		iteratorOptions := badger.DefaultIteratorOptions
-		iteratorOptions.Prefix = this.prefix // filter by prefix
+		iteratorOptions.Prefix = prefix // filter by prefix
 
 		// create an iterator the default options
 		it := txn.NewIterator(iteratorOptions)
@@ -124,3 +124,11 @@ func (this *prefixDb) ForEach(consumer func([]byte, []byte)) error {
 	})
 	return err
 }
+
+func (this *prefixDb) ForEachWithPrefix(prefix []byte, consumer func([]byte, []byte)) error {
+	return this.forEach(append(this.prefix, prefix...), consumer)
+}
+
+func (this *prefixDb) ForEach(consumer func([]byte, []byte)) error {
+	return this.forEach(this.prefix, consumer)
+}
diff --git a/packages/database/interfaces.go b/packages/database/interfaces.go
index cdbc1aabd940f9269bc6bd2ce151b52ca4faac05..56d2b9573836153e1b487802510ce0d7953c13ca 100644
--- a/packages/database/interfaces.go
+++ b/packages/database/interfaces.go
@@ -7,6 +7,7 @@ type Database interface {
 	SetWithTTL(key []byte, value []byte, ttl time.Duration) error
 	Contains(key []byte) (bool, error)
 	Get(key []byte) ([]byte, error)
-	ForEach(func(key []byte, value []byte)) error
+	ForEach(consumer func(key []byte, value []byte)) error
+	ForEachWithPrefix(prefix []byte, consumer func(key []byte, value []byte)) error
 	Delete(key []byte) error
 }