diff --git a/packages/database/database.go b/packages/database/database.go
index 0689992511df0c9b06c20dd81d2afd453639c436..59a994b68bff9e74321f9105773f5d23a3215ddc 100644
--- a/packages/database/database.go
+++ b/packages/database/database.go
@@ -129,15 +129,11 @@ func (this *databaseImpl) ForEach(consumer func([]byte, []byte)) error {
 		it := txn.NewIterator(badger.DefaultIteratorOptions)
 		defer it.Close()
 
-		// avoid allocations by reusing the value buffer
-		var value []byte
-
 		// loop through every key-value-pair and call the function
 		for it.Rewind(); it.Valid(); it.Next() {
 			item := it.Item()
 
-			var err error
-			value, err = item.ValueCopy(value)
+			value, err := item.ValueCopy(nil)
 			if err != nil {
 				return err
 			}
diff --git a/plugins/autopeering/peerstorage/peerstorage.go b/plugins/autopeering/peerstorage/peerstorage.go
index 5ea1c80fc4aa81515d42c8d89f1881e2fcbb6f93..6ef018191c89fe768ebac3ec42b865efb6d58af3 100644
--- a/plugins/autopeering/peerstorage/peerstorage.go
+++ b/plugins/autopeering/peerstorage/peerstorage.go
@@ -3,6 +3,7 @@ package peerstorage
 import (
 	"bytes"
 	"strconv"
+	"sync"
 
 	"github.com/iotaledger/goshimmer/packages/database"
 	"github.com/iotaledger/goshimmer/packages/events"
@@ -14,6 +15,7 @@ import (
 const peerDbName string = "peers"
 
 var peerDb database.Database
+var once sync.Once
 
 func initDb() {
 	db, err := database.Get(peerDbName)
@@ -24,15 +26,21 @@ func initDb() {
 	peerDb = db
 }
 
+func getDb() database.Database {
+	once.Do(initDb)
+
+	return peerDb
+}
+
 func storePeer(p *peer.Peer) {
-	err := peerDb.Set(p.Identity.Identifier, p.Marshal())
+	err := getDb().Set(p.Identity.Identifier, p.Marshal())
 	if err != nil {
 		panic(err)
 	}
 }
 
 func removePeer(p *peer.Peer) {
-	err := peerDb.Delete(p.Identity.Identifier)
+	err := getDb().Delete(p.Identity.Identifier)
 	if err != nil {
 		panic(err)
 	}
@@ -41,7 +49,7 @@ func removePeer(p *peer.Peer) {
 func loadPeers(plugin *node.Plugin) {
 	var count int
 
-	err := peerDb.ForEach(func(key []byte, value []byte) {
+	err := getDb().ForEach(func(key []byte, value []byte) {
 		peer, err := peer.Unmarshal(value)
 		if err != nil {
 			panic(err)
@@ -63,8 +71,6 @@ func loadPeers(plugin *node.Plugin) {
 }
 
 func Configure(plugin *node.Plugin) {
-	initDb()
-
 	// do not store the entry nodes by ignoring all peers currently contained in konwnpeers
 	// add peers from db
 	loadPeers(plugin)