diff --git a/packages/autopeering/peer/local.go b/packages/autopeering/peer/local.go
index 65638ae1852f5419afd2fbfaa4d47986298d13cb..32a7a9dfbecf74bccd7a3919f214b964caadd670 100644
--- a/packages/autopeering/peer/local.go
+++ b/packages/autopeering/peer/local.go
@@ -50,18 +50,9 @@ func NewLocal(network string, address string, db DB) (*Local, error) {
 	if l := len(key); l != ed25519.PrivateKeySize {
 		return nil, fmt.Errorf("invalid key length: %d, need %d", l, ed25519.PublicKeySize)
 	}
-	services, err := db.LocalServices()
-	if err != nil {
-		return nil, err
-	}
-	serviceRecord := services.CreateRecord()
-
-	// update the external address used for the peering and store back in DB
+	// update the external address used for the peering
+	serviceRecord := service.New()
 	serviceRecord.Update(service.PeeringKey, network, address)
-	err = db.UpdateLocalServices(serviceRecord)
-	if err != nil {
-		return nil, err
-	}
 
 	return newLocal(key, serviceRecord, db), nil
 }
@@ -81,12 +72,8 @@ func (l *Local) UpdateService(key service.Key, network string, address string) e
 	l.mu.Lock()
 	defer l.mu.Unlock()
 
-	// update the service in the read protected map and store back in DB
+	// update the service in the read protected map
 	l.serviceRecord.Update(key, network, address)
-	err := l.db.UpdateLocalServices(l.serviceRecord)
-	if err != nil {
-		return err
-	}
 
 	// create a new peer with the corresponding services
 	l.Peer = *NewPeer(l.key.Public(), l.serviceRecord)
diff --git a/packages/autopeering/peer/mapdb.go b/packages/autopeering/peer/mapdb.go
index 03719614deb30a01a8399f94405bfada3d8072e1..df3ead3f55b623bb611b6dc291ea4cd2a3ec57ba 100644
--- a/packages/autopeering/peer/mapdb.go
+++ b/packages/autopeering/peer/mapdb.go
@@ -4,16 +4,14 @@ import (
 	"sync"
 	"time"
 
-	"github.com/iotaledger/goshimmer/packages/autopeering/peer/service"
 	"github.com/iotaledger/hive.go/logger"
 )
 
 // mapDB is a simple implementation of DB using a map.
 type mapDB struct {
-	mutex    sync.RWMutex
-	m        map[string]peerEntry
-	key      PrivateKey
-	services *service.Record
+	mutex sync.RWMutex
+	m     map[string]peerEntry
+	key   PrivateKey
 
 	log *logger.Logger
 
@@ -34,10 +32,9 @@ type peerPropEntry struct {
 // NewMemoryDB creates a new DB that uses a GO map.
 func NewMemoryDB(log *logger.Logger) DB {
 	db := &mapDB{
-		m:        make(map[string]peerEntry),
-		services: service.New(),
-		log:      log,
-		closing:  make(chan struct{}),
+		m:       make(map[string]peerEntry),
+		log:     log,
+		closing: make(chan struct{}),
 	}
 
 	// start the expirer routine
@@ -70,24 +67,6 @@ func (db *mapDB) LocalPrivateKey() (PrivateKey, error) {
 	return db.key, nil
 }
 
-// LocalServices returns the services stored in the database or creates an empty map.
-func (db *mapDB) LocalServices() (service.Service, error) {
-	db.mutex.RLock()
-	defer db.mutex.RUnlock()
-
-	return db.services, nil
-}
-
-// UpdateLocalServices updates the services stored in the database.
-func (db *mapDB) UpdateLocalServices(services service.Service) error {
-	record := services.CreateRecord()
-
-	db.mutex.Lock()
-	defer db.mutex.Unlock()
-	db.services = record
-	return nil
-}
-
 // LastPing returns that property for the given peer ID and address.
 func (db *mapDB) LastPing(id ID, address string) time.Time {
 	db.mutex.RLock()
diff --git a/packages/autopeering/peer/peerdb.go b/packages/autopeering/peer/peerdb.go
index b5cfcdfbb8b3ee86e3e5238afe53bc8ddc0df3f9..106517aa56ef0562b3d018529644394e8cd30c8d 100644
--- a/packages/autopeering/peer/peerdb.go
+++ b/packages/autopeering/peer/peerdb.go
@@ -7,7 +7,6 @@ import (
 	"sync"
 	"time"
 
-	"github.com/iotaledger/goshimmer/packages/autopeering/peer/service"
 	"github.com/iotaledger/goshimmer/packages/database"
 	"github.com/iotaledger/hive.go/logger"
 )
@@ -29,10 +28,6 @@ const (
 type DB interface {
 	// LocalPrivateKey returns the private key stored in the database or creates a new one.
 	LocalPrivateKey() (PrivateKey, error)
-	// LocalServices returns the services stored in the database or creates an empty services.
-	LocalServices() (service.Service, error)
-	// UpdateLocalServices updates the services stored in the database.
-	UpdateLocalServices(services service.Service) error
 
 	// Peer retrieves a peer from the database.
 	Peer(id ID) *Peer
@@ -72,8 +67,7 @@ const (
 	dbNodePong = "lastpong"
 
 	// Local information is keyed by ID only. Use localFieldKey to create those keys.
-	dbLocalKey      = "key"
-	dbLocalServices = "services"
+	dbLocalKey = "key"
 )
 
 // NewPersistentDB creates a new persistent DB.
@@ -192,33 +186,6 @@ func (db *persistentDB) LocalPrivateKey() (PrivateKey, error) {
 	return key, nil
 }
 
-// LocalServices returns the services stored in the database or creates an empty services.
-func (db *persistentDB) LocalServices() (service.Service, error) {
-	key, err := db.db.Get(localFieldKey(dbLocalServices))
-	if err == database.ErrKeyNotFound {
-		return service.New(), nil
-	}
-	if err != nil {
-		return nil, err
-	}
-
-	services, err := service.Unmarshal(key)
-	if err != nil {
-		return nil, err
-	}
-
-	return services, nil
-}
-
-// UpdateLocalServices updates the services stored in the database.
-func (db *persistentDB) UpdateLocalServices(services service.Service) error {
-	value, err := services.CreateRecord().CreateRecord().Marshal()
-	if err != nil {
-		return err
-	}
-	return db.db.Set(localFieldKey(dbLocalServices), value)
-}
-
 // LastPing returns that property for the given peer ID and address.
 func (db *persistentDB) LastPing(id ID, address string) time.Time {
 	return time.Unix(db.getInt64(nodeFieldKey(id, address, dbNodePing)), 0)
diff --git a/plugins/analysis/client/plugin.go b/plugins/analysis/client/plugin.go
index ccec3955a929c7adf3bb9a14ef9204d2dc0bacc0..b9179be1232bcd82a528e8b240dc15c43df7dd30 100644
--- a/plugins/analysis/client/plugin.go
+++ b/plugins/analysis/client/plugin.go
@@ -94,18 +94,22 @@ func setupHooks(plugin *node.Plugin, conn *network.ManagedConnection, eventDispa
 		eventDispatchers.RemoveNode(ev.Peer.ID().Bytes())
 	})
 
+	onAddChosenNeighbor := events.NewClosure(func(ev *selection.PeeringEvent) {
+		if ev.Status {
+			eventDispatchers.ConnectNodes(local.GetInstance().ID().Bytes(), ev.Peer.ID().Bytes())
+		}
+	})
+
 	onAddAcceptedNeighbor := events.NewClosure(func(ev *selection.PeeringEvent) {
-		eventDispatchers.ConnectNodes(ev.Peer.ID().Bytes(), local.GetInstance().ID().Bytes())
+		if ev.Status {
+			eventDispatchers.ConnectNodes(ev.Peer.ID().Bytes(), local.GetInstance().ID().Bytes())
+		}
 	})
 
 	onRemoveNeighbor := events.NewClosure(func(ev *selection.DroppedEvent) {
 		eventDispatchers.DisconnectNodes(ev.DroppedID.Bytes(), local.GetInstance().ID().Bytes())
 	})
 
-	onAddChosenNeighbor := events.NewClosure(func(ev *selection.PeeringEvent) {
-		eventDispatchers.ConnectNodes(local.GetInstance().ID().Bytes(), ev.Peer.ID().Bytes())
-	})
-
 	// setup hooks /////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	discover.Events.PeerDiscovered.Attach(onDiscoverPeer)
diff --git a/plugins/autopeering/plugin.go b/plugins/autopeering/plugin.go
index f40c3746d80fd1bc48797e88348d2e9e4b3e62d5..4688b6b0d72cde21dbcbdc19947bc4cfef6ec1e8 100644
--- a/plugins/autopeering/plugin.go
+++ b/plugins/autopeering/plugin.go
@@ -51,10 +51,14 @@ func configureEvents() {
 		log.Infof("Salt updated; expires=%s", ev.Public.GetExpiration().Format(time.RFC822))
 	}))
 	selection.Events.OutgoingPeering.Attach(events.NewClosure(func(ev *selection.PeeringEvent) {
-		log.Infof("Peering chosen: %s / %s", ev.Peer.Address(), ev.Peer.ID())
+		if ev.Status {
+			log.Infof("Peering chosen: %s / %s", ev.Peer.Address(), ev.Peer.ID())
+		}
 	}))
 	selection.Events.IncomingPeering.Attach(events.NewClosure(func(ev *selection.PeeringEvent) {
-		log.Infof("Peering accepted: %s / %s", ev.Peer.Address(), ev.Peer.ID())
+		if ev.Status {
+			log.Infof("Peering accepted: %s / %s", ev.Peer.Address(), ev.Peer.ID())
+		}
 	}))
 	selection.Events.Dropped.Attach(events.NewClosure(func(ev *selection.DroppedEvent) {
 		log.Infof("Peering dropped: %s", ev.DroppedID)
diff --git a/plugins/gossip/plugin.go b/plugins/gossip/plugin.go
index 6d84cd4fb1aa8842ab1a4e11ac20cb541db0db79..f6f5717ed0875c20017c13471e2677743126db22 100644
--- a/plugins/gossip/plugin.go
+++ b/plugins/gossip/plugin.go
@@ -39,6 +39,9 @@ func configureEvents() {
 		}()
 	}))
 	selection.Events.IncomingPeering.Attach(events.NewClosure(func(ev *selection.PeeringEvent) {
+		if !ev.Status {
+			return // ignore rejected peering
+		}
 		go func() {
 			if err := mgr.AddInbound(ev.Peer); err != nil {
 				log.Debugw("error adding inbound", "id", ev.Peer.ID(), "err", err)
@@ -46,6 +49,9 @@ func configureEvents() {
 		}()
 	}))
 	selection.Events.OutgoingPeering.Attach(events.NewClosure(func(ev *selection.PeeringEvent) {
+		if !ev.Status {
+			return // ignore rejected peering
+		}
 		go func() {
 			if err := mgr.AddOutbound(ev.Peer); err != nil {
 				log.Debugw("error adding outbound", "id", ev.Peer.ID(), "err", err)