diff --git a/core/core.go b/core/core.go
index f8f2ed2bb41a7717c60d7760bd83eac7b798fa50..8543ff0e90510dfe4e40cb502c7957baaeb5e388 100644
--- a/core/core.go
+++ b/core/core.go
@@ -103,7 +103,7 @@ func NewIpfsNode(cfg *config.Config, online bool) (*IpfsNode, error) {
 			return nil, err
 		}
 
-		route = dht.NewDHT(local, net, dhts, d)
+		route = dht.NewDHT(local, peerstore, net, dhts, d)
 		dhts.Handler = route // wire the handler to the service.
 
 		// TODO(brian): pass a context to DHT for its async operations
diff --git a/routing/dht/dht.go b/routing/dht/dht.go
index 756c1803a8007a957a1e7dbbec5ca27511e6527a..8e26241b1a16820f1fe3d7703a88addfeea7b389 100644
--- a/routing/dht/dht.go
+++ b/routing/dht/dht.go
@@ -36,6 +36,9 @@ type IpfsDHT struct {
 	// Local peer (yourself)
 	self *peer.Peer
 
+	// Other peers
+	peerstore peer.Peerstore
+
 	// Local data
 	datastore ds.Datastore
 	dslock    sync.Mutex
@@ -53,12 +56,13 @@ type IpfsDHT struct {
 }
 
 // NewDHT creates a new DHT object with the given peer as the 'local' host
-func NewDHT(p *peer.Peer, net inet.Network, sender inet.Sender, dstore ds.Datastore) *IpfsDHT {
+func NewDHT(p *peer.Peer, ps peer.Peerstore, net inet.Network, sender inet.Sender, dstore ds.Datastore) *IpfsDHT {
 	dht := new(IpfsDHT)
 	dht.network = net
 	dht.sender = sender
 	dht.datastore = dstore
 	dht.self = p
+	dht.peerstore = ps
 
 	dht.providers = NewProviderManager(p.ID)
 	dht.shutdown = make(chan struct{})