diff --git a/routingtable/adjRIBIn/adj_rib_in.go b/routingtable/adjRIBIn/adj_rib_in.go
index 06755e7bbafe8b1b57df1feba319836759c61545..776be1e2c533c9fce90f441aaad870f2b1e8d7c7 100644
--- a/routingtable/adjRIBIn/adj_rib_in.go
+++ b/routingtable/adjRIBIn/adj_rib_in.go
@@ -1,6 +1,7 @@
 package adjRIBIn
 
 import (
+	"fmt"
 	"sync"
 
 	"github.com/bio-routing/bio-rd/net"
@@ -17,9 +18,16 @@ type AdjRIBIn struct {
 
 // NewAdjRIBIn creates a new Adjacency RIB In
 func NewAdjRIBIn() *AdjRIBIn {
-	return &AdjRIBIn{
+	a := &AdjRIBIn{
 		rt: routingtable.NewRoutingTable(),
 	}
+	a.ClientManager = routingtable.NewClientManager(a)
+	return a
+}
+
+// UpdateNewClient sends current state to a new client
+func (a *AdjRIBIn) UpdateNewClient(client routingtable.RouteTableClient) error {
+	return fmt.Errorf("Not implemented")
 }
 
 // AddPath replaces the path for prefix `pfx`. If the prefix doesn't exist it is added.
@@ -33,13 +41,13 @@ func (a *AdjRIBIn) AddPath(pfx net.Prefix, p *route.Path) error {
 }
 
 // RemovePath removes the path for prefix `pfx`
-func (a *AdjRIBIn) RemovePath(pfx net.Prefix, p *route.Path) error {
+func (a *AdjRIBIn) RemovePath(pfx net.Prefix, p *route.Path) bool {
 	a.mu.Lock()
 	defer a.mu.Unlock()
 
 	r := a.rt.Get(pfx)
 	if r == nil {
-		return nil
+		return false
 	}
 
 	oldPaths := r.Paths()
@@ -48,7 +56,7 @@ func (a *AdjRIBIn) RemovePath(pfx net.Prefix, p *route.Path) error {
 	}
 
 	a.removePathsFromClients(pfx, oldPaths)
-	return nil
+	return true
 }
 
 func (a *AdjRIBIn) removePathsFromClients(pfx net.Prefix, paths []*route.Path) {
diff --git a/routingtable/adjRIBIn/adj_rib_in_test.go b/routingtable/adjRIBIn/adj_rib_in_test.go
index 4ae96263ba2171f17ac7681fbcccde3348de8205..514830fb34bc236f73ea7228168102cba5f165ba 100644
--- a/routingtable/adjRIBIn/adj_rib_in_test.go
+++ b/routingtable/adjRIBIn/adj_rib_in_test.go
@@ -1,12 +1,14 @@
 package adjRIBIn
 
 import (
+	"fmt"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
 
 	"github.com/bio-routing/bio-rd/net"
 	"github.com/bio-routing/bio-rd/route"
+	"github.com/bio-routing/bio-rd/routingtable"
 )
 
 type RTMockClient struct {
@@ -21,15 +23,18 @@ func NewRTMockClient() *RTMockClient {
 }
 
 func (m *RTMockClient) AddPath(pfx net.Prefix, p *route.Path) error {
-
 	return nil
 }
 
+func (m *RTMockClient) UpdateNewClient(client routingtable.RouteTableClient) error {
+	return fmt.Errorf("Not implemented")
+}
+
 // RemovePath removes the path for prefix `pfx`
-func (m *RTMockClient) RemovePath(pfx net.Prefix, p *route.Path) error {
+func (m *RTMockClient) RemovePath(pfx net.Prefix, p *route.Path) bool {
 	m.removePathParams.pfx = pfx
 	m.removePathParams.path = p
-	return nil
+	return true
 }
 
 func TestAddPath(t *testing.T) {
diff --git a/routingtable/client_interface.go b/routingtable/client_interface.go
index 7c235c7a668f03d7b9bdf05dab95db01fb7f9eb2..63ba81e8d5afa4fb73b0989b2ae519000e56a6b5 100644
--- a/routingtable/client_interface.go
+++ b/routingtable/client_interface.go
@@ -8,5 +8,6 @@ import (
 // RouteTableClient is the interface that every type of RIB must implement
 type RouteTableClient interface {
 	AddPath(net.Prefix, *route.Path) error
-	RemovePath(net.Prefix, *route.Path) error
+	RemovePath(net.Prefix, *route.Path) bool
+	UpdateNewClient(RouteTableClient) error
 }
diff --git a/routingtable/client_manager.go b/routingtable/client_manager.go
index 8f93a94ba8bdca3bf577ec405f75017d8d081012..cac272446f893a63cefa3b87b5bd3f3a4162394d 100644
--- a/routingtable/client_manager.go
+++ b/routingtable/client_manager.go
@@ -2,8 +2,16 @@ package routingtable
 
 // ClientManager manages clients of routing tables (observer pattern)
 type ClientManager struct {
-	clients      map[RouteTableClient]struct{} // Ensures a client registers at most once
-	routingTable *RoutingTable
+	clients map[RouteTableClient]struct{} // Ensures a client registers at most once
+	rtc     RouteTableClient
+}
+
+// NewClientManager creates and initializes a new client manager
+func NewClientManager(rtc RouteTableClient) ClientManager {
+	return ClientManager{
+		clients: make(map[RouteTableClient]struct{}, 0),
+		rtc:     rtc,
+	}
 }
 
 // Register registers a client for updates
@@ -12,7 +20,7 @@ func (c *ClientManager) Register(client RouteTableClient) {
 		c.clients = make(map[RouteTableClient]struct{}, 0)
 	}
 	c.clients[client] = struct{}{}
-	//c.routingTable.updateNewClient(client)
+	c.rtc.UpdateNewClient(client)
 }
 
 // Unregister unregisters a client