diff --git a/protocols/bgp/server/fsm_address_family.go b/protocols/bgp/server/fsm_address_family.go
index faf2ff3639505b5425cdb7499960f03c059c1f4d..3b77f4f43cc189d5f92d128ce7f967cfa729ad6f 100644
--- a/protocols/bgp/server/fsm_address_family.go
+++ b/protocols/bgp/server/fsm_address_family.go
@@ -56,7 +56,7 @@ func (f *fsmAddressFamily) init(n *routingtable.Neighbor) {
 	contributingASNs.Add(f.fsm.peer.localASN)
 	f.adjRIBIn.Register(f.rib)
 
-	f.adjRIBOut = adjRIBOut.New(n, f.exportFilter)
+	f.adjRIBOut = adjRIBOut.New(n, f.exportFilter, f.addPathRX)
 
 	f.updateSender = newUpdateSender(f.fsm, f.afi, f.safi)
 	f.updateSender.Start(time.Millisecond * 5)
diff --git a/routingtable/adjRIBOut/adj_rib_out.go b/routingtable/adjRIBOut/adj_rib_out.go
index b4271ea3c82734d6dd8f5e8dae7f2fb48db34c4b..50c717d04512c084eac04bfd953d6e9b9341c98f 100644
--- a/routingtable/adjRIBOut/adj_rib_out.go
+++ b/routingtable/adjRIBOut/adj_rib_out.go
@@ -17,18 +17,20 @@ type AdjRIBOut struct {
 	routingtable.ClientManager
 	rt            *routingtable.RoutingTable
 	neighbor      *routingtable.Neighbor
+	addPathRX     bool
 	pathIDManager *pathIDManager
-	mu            sync.RWMutex
 	exportFilter  *filter.Filter
+	mu            sync.RWMutex
 }
 
 // New creates a new Adjacency RIB Out with BGP add path
-func New(neighbor *routingtable.Neighbor, exportFilter *filter.Filter) *AdjRIBOut {
+func New(neighbor *routingtable.Neighbor, exportFilter *filter.Filter, addPathRX bool) *AdjRIBOut {
 	a := &AdjRIBOut{
 		rt:            routingtable.NewRoutingTable(),
 		neighbor:      neighbor,
 		pathIDManager: newPathIDManager(),
 		exportFilter:  exportFilter,
+		addPathRX:     addPathRX,
 	}
 	a.ClientManager = routingtable.NewClientManager(a)
 	return a
@@ -47,7 +49,7 @@ func (a *AdjRIBOut) RouteCount() int64 {
 // AddPath adds path p to prefix `pfx`
 func (a *AdjRIBOut) AddPath(pfx bnet.Prefix, p *route.Path) error {
 	if !routingtable.ShouldPropagateUpdate(pfx, p, a.neighbor) {
-		if a.neighbor.CapAddPathRX {
+		if a.addPathRX {
 			a.removePathsForPrefix(pfx)
 		}
 		return nil
@@ -94,8 +96,7 @@ func (a *AdjRIBOut) AddPath(pfx bnet.Prefix, p *route.Path) error {
 	a.mu.Lock()
 	defer a.mu.Unlock()
 
-	// AddPathRX capable neighbor
-	if a.neighbor.CapAddPathRX {
+	if a.addPathRX {
 		pathID, err := a.pathIDManager.addPath(p)
 		if err != nil {
 			return fmt.Errorf("Unable to get path ID: %v", err)
@@ -140,7 +141,7 @@ func (a *AdjRIBOut) RemovePath(pfx bnet.Prefix, p *route.Path) bool {
 	a.rt.RemovePath(pfx, p)
 
 	// If the neighbar has AddPath capabilities, try to find the PathID
-	if a.neighbor.CapAddPathRX {
+	if a.addPathRX {
 		pathID, err := a.pathIDManager.releasePath(p)
 		if err != nil {
 			log.Warningf("Unable to release path for prefix %s: %v", pfx.String(), err)
diff --git a/routingtable/adjRIBOut/adj_rib_out_test.go b/routingtable/adjRIBOut/adj_rib_out_test.go
index 26eceeeed34b37d62303a9156f9074ba28411129..51465849d2e14bfb17086cbff14561c4f8b7eefe 100644
--- a/routingtable/adjRIBOut/adj_rib_out_test.go
+++ b/routingtable/adjRIBOut/adj_rib_out_test.go
@@ -22,10 +22,9 @@ func TestBestPathOnlyEBGP(t *testing.T) {
 		IBGP:              false,
 		LocalASN:          41981,
 		RouteServerClient: false,
-		CapAddPathRX:      false,
 	}
 
-	adjRIBOut := New(neighborBestOnlyEBGP, filter.NewAcceptAllFilter())
+	adjRIBOut := New(neighborBestOnlyEBGP, filter.NewAcceptAllFilter(), false)
 
 	tests := []struct {
 		name          string
@@ -329,10 +328,9 @@ func TestBestPathOnlyIBGP(t *testing.T) {
 		IBGP:              true,
 		LocalASN:          41981,
 		RouteServerClient: false,
-		CapAddPathRX:      false,
 	}
 
-	adjRIBOut := New(neighborBestOnlyEBGP, filter.NewAcceptAllFilter())
+	adjRIBOut := New(neighborBestOnlyEBGP, filter.NewAcceptAllFilter(), false)
 
 	tests := []struct {
 		name          string
@@ -544,12 +542,11 @@ func TestBestPathOnlyRRClient(t *testing.T) {
 		IBGP:                 true,
 		LocalASN:             41981,
 		RouteServerClient:    false,
-		CapAddPathRX:         false,
 		RouteReflectorClient: true,
 		ClusterID:            net.IPv4FromOctets(2, 2, 2, 2).ToUint32(),
 	}
 
-	adjRIBOut := New(neighborBestOnlyRR, filter.NewAcceptAllFilter())
+	adjRIBOut := New(neighborBestOnlyRR, filter.NewAcceptAllFilter(), false)
 
 	tests := []struct {
 		name          string
@@ -875,10 +872,9 @@ func TestAddPathIBGP(t *testing.T) {
 		IBGP:              true,
 		LocalASN:          41981,
 		RouteServerClient: false,
-		CapAddPathRX:      true,
 	}
 
-	adjRIBOut := New(neighborBestOnlyEBGP, filter.NewAcceptAllFilter())
+	adjRIBOut := New(neighborBestOnlyEBGP, filter.NewAcceptAllFilter(), true)
 
 	tests := []struct {
 		name          string
diff --git a/routingtable/neighbor.go b/routingtable/neighbor.go
index 8b320636806792a2091cdc3cb4556c1b55a842bc..b72c7a193bbf5f0867ea573aa0e0d0f94e319aab 100644
--- a/routingtable/neighbor.go
+++ b/routingtable/neighbor.go
@@ -27,7 +27,4 @@ type Neighbor struct {
 
 	// ClusterID is our route reflectors clusterID
 	ClusterID uint32
-
-	// CapAddPathRX indicates if the peer supports receiving multiple BGP paths
-	CapAddPathRX bool
 }