diff --git a/cmd/neofs-node/object.go b/cmd/neofs-node/object.go
index 75ba5ed3d..69ce9058b 100644
--- a/cmd/neofs-node/object.go
+++ b/cmd/neofs-node/object.go
@@ -149,30 +149,13 @@ func (n *innerRingFetcher) InnerRingKeys() ([][]byte, error) {
 
 type coreClientConstructor reputationClientConstructor
 
-func (x *coreClientConstructor) Get(addrGroup network.AddressGroup) (cc coreclient.Client, err error) {
-	var c client.Client
-
-	addrGroup.IterateAddresses(func(addr network.Address) bool {
-		c, err = (*reputationClientConstructor)(x).Get(addr)
-		return true
-	})
-
-	if err == nil {
-		cc = c.(coreclient.Client)
+func (x *coreClientConstructor) Get(addrGroup network.AddressGroup) (coreclient.Client, error) {
+	c, err := (*reputationClientConstructor)(x).Get(addrGroup)
+	if err != nil {
+		return nil, err
 	}
 
-	return
-}
-
-type addressGroupClientConstructor reputationClientConstructor
-
-func (x *addressGroupClientConstructor) Get(addrGroup network.AddressGroup) (c client.Client, err error) {
-	addrGroup.IterateAddresses(func(addr network.Address) bool {
-		c, err = (*reputationClientConstructor)(x).Get(addr)
-		return true
-	})
-
-	return
+	return c.(coreclient.Client), nil
 }
 
 func initObjectService(c *cfg) {
@@ -200,8 +183,6 @@ func initObjectService(c *cfg) {
 
 	coreConstructor := (*coreClientConstructor)(clientConstructor)
 
-	groupConstructor := (*addressGroupClientConstructor)(coreConstructor)
-
 	irFetcher := &innerRingFetcher{
 		sidechain: c.cfgMorph.client,
 	}
@@ -237,7 +218,7 @@ func initObjectService(c *cfg) {
 		policer.WithExpansionRate(10),
 		policer.WithTrigger(ch),
 		policer.WithRemoteHeader(
-			headsvc.NewRemoteHeader(keyStorage, groupConstructor),
+			headsvc.NewRemoteHeader(keyStorage, clientConstructor),
 		),
 		policer.WithLocalAddressSource(c),
 		policer.WithHeadTimeout(
@@ -525,8 +506,8 @@ func (c *reputationClient) SearchObject(ctx context.Context, prm *client.SearchO
 	return ids, err
 }
 
-func (c *reputationClientConstructor) Get(addr network.Address) (client.Client, error) {
-	cl, err := c.basicConstructor.Get(network.GroupFromAddress(addr))
+func (c *reputationClientConstructor) Get(addr network.AddressGroup) (client.Client, error) {
+	cl, err := c.basicConstructor.Get(addr)
 	if err != nil {
 		return nil, err
 	}
@@ -534,11 +515,11 @@ func (c *reputationClientConstructor) Get(addr network.Address) (client.Client,
 	nm, err := netmap.GetLatestNetworkMap(c.nmSrc)
 	if err == nil {
 		for i := range nm.Nodes {
-			var netAddr network.Address
+			var netAddr network.AddressGroup
 
-			err := netAddr.FromString(nm.Nodes[i].Address())
+			err := netAddr.FromIterator(nm.Nodes[i])
 			if err == nil {
-				if netAddr.Equal(addr) {
+				if netAddr.Intersects(addr) {
 					prm := truststorage.UpdatePrm{}
 					prm.SetPeer(reputation.PeerIDFromBytes(nm.Nodes[i].PublicKey()))