diff --git a/routingtable/adjRIBIn/adj_rib_in.go b/routingtable/adjRIBIn/adj_rib_in.go
index 776be1e2c533c9fce90f441aaad870f2b1e8d7c7..33366d2192887e334549118c53c085846cf3db31 100644
--- a/routingtable/adjRIBIn/adj_rib_in.go
+++ b/routingtable/adjRIBIn/adj_rib_in.go
@@ -1,7 +1,6 @@
 package adjRIBIn
 
 import (
-	"fmt"
 	"sync"
 
 	"github.com/bio-routing/bio-rd/net"
@@ -27,7 +26,17 @@ func NewAdjRIBIn() *AdjRIBIn {
 
 // UpdateNewClient sends current state to a new client
 func (a *AdjRIBIn) UpdateNewClient(client routingtable.RouteTableClient) error {
-	return fmt.Errorf("Not implemented")
+	a.mu.RLock()
+	defer a.mu.RUnlock()
+
+	routes := a.rt.Dump()
+	for _, route := range routes {
+		paths := route.Paths()
+		for _, path := range paths {
+			client.AddPath(route.Prefix(), path)
+		}
+	}
+	return nil
 }
 
 // AddPath replaces the path for prefix `pfx`. If the prefix doesn't exist it is added.
@@ -37,6 +46,10 @@ func (a *AdjRIBIn) AddPath(pfx net.Prefix, p *route.Path) error {
 
 	oldPaths := a.rt.ReplacePath(pfx, p)
 	a.removePathsFromClients(pfx, oldPaths)
+
+	for _, client := range a.ClientManager.Clients() {
+		client.AddPath(pfx, p)
+	}
 	return nil
 }