diff --git a/packages/database/database.go b/packages/database/database.go
index 9ac44a31685a017dd62785b16996f089540b15c8..5ac305d61bd4dcb798282ebdea49fb5edb443010 100644
--- a/packages/database/database.go
+++ b/packages/database/database.go
@@ -112,6 +112,37 @@ func (this *databaseImpl) Get(key []byte) ([]byte, error) {
 	return result, err
 }
 
+func (this *databaseImpl) Delete(key []byte) error {
+	err := this.db.Update(func(txn *badger.Txn) error {
+		err := txn.Delete(key)
+		return err
+	})
+	return err
+}
+
+func (this *databaseImpl) ForEach(consumer func(key []byte, value []byte)) error {
+	err := this.db.View(func(txn *badger.Txn) error {
+		// create an iterator the default options
+		it := txn.NewIterator(badger.DefaultIteratorOptions)
+		defer it.Close()
+
+		// loop through every key-value-pair and call the function
+		for it.Rewind(); it.Valid(); it.Next() {
+			item := it.Item()
+
+			key := item.Key()
+			value, err := item.ValueCopy(nil)
+			if err != nil {
+				return err
+			}
+
+			consumer(key, value)
+		}
+		return nil
+	})
+	return err
+}
+
 func (this *databaseImpl) Close() error {
 	this.openLock.Lock()
 	defer this.openLock.Unlock()
diff --git a/packages/database/interfaces.go b/packages/database/interfaces.go
index 26b3a5863a360404ac48baff94f41ed3423bc2a4..064e311bc9f9b263538afb036bc30368ccd7f15e 100644
--- a/packages/database/interfaces.go
+++ b/packages/database/interfaces.go
@@ -3,7 +3,9 @@ package database
 type Database interface {
 	Open() error
 	Set(key []byte, value []byte) error
-	Get(key []byte) ([]byte, error)
 	Contains(key []byte) (bool, error)
+	Get(key []byte) ([]byte, error)
+	ForEach(func(key []byte, value []byte)) error
+	Delete(key []byte) error
 	Close() error
 }