diff --git a/blockservice/blockservice.go b/blockservice/blockservice.go
index 51e9ad7d618bedc7ff365977415346bbab2e585c..0ca533b196cc7f553e16af8ade89e2290c8f9c6b 100644
--- a/blockservice/blockservice.go
+++ b/blockservice/blockservice.go
@@ -76,3 +76,7 @@ func (s *BlockService) GetBlock(ctx context.Context, k u.Key) (*blocks.Block, er
 		return nil, u.ErrNotFound
 	}
 }
+
+func (s *BlockService) DeleteBlock(k u.Key) error {
+	return s.Datastore.Delete(k.DsKey())
+}
diff --git a/exchange/bitswap/bitswap.go b/exchange/bitswap/bitswap.go
index 64dcf96a857898eb316c3a62afcc9ebeebb136fe..9d3abccc2fcfe5169884c95cec4a2de207f8f407 100644
--- a/exchange/bitswap/bitswap.go
+++ b/exchange/bitswap/bitswap.go
@@ -94,7 +94,7 @@ func (bs *bitswap) Block(parent context.Context, k u.Key) (*blocks.Block, error)
 
 				response, err := bs.sender.SendRequest(ctx, p, message)
 				if err != nil {
-					log.Errorf("Error sender.SendRequest(%s)", p)
+					log.Error("Error sender.SendRequest(%s) = %s", p, err)
 					return
 				}
 				// FIXME ensure accounting is handled correctly when
diff --git a/merkledag/merkledag.go b/merkledag/merkledag.go
index a6dbc6ebf848e390b73485c128476ebc84d5c88e..7834677a8f86eb29937e3d304c58c000277e9fe1 100644
--- a/merkledag/merkledag.go
+++ b/merkledag/merkledag.go
@@ -215,3 +215,16 @@ func (n *DAGService) Get(k u.Key) (*Node, error) {
 
 	return Decoded(b.Data)
 }
+
+func (n *DAGService) Remove(nd *Node) error {
+	for _, l := range nd.Links {
+		if l.Node != nil {
+			n.Remove(l.Node)
+		}
+	}
+	k, err := nd.Key()
+	if err != nil {
+		return err
+	}
+	return n.Blocks.DeleteBlock(k)
+}
diff --git a/routing/dht/dht.go b/routing/dht/dht.go
index 52ae1f76c4b550debd4627f9d68dea405f89bbb5..b3ca010b76a5da69905783032373ab8b3d1869fc 100644
--- a/routing/dht/dht.go
+++ b/routing/dht/dht.go
@@ -540,7 +540,11 @@ func (dht *IpfsDHT) PingRoutine(t time.Duration) {
 func (dht *IpfsDHT) Bootstrap(ctx context.Context) {
 	id := make([]byte, 16)
 	rand.Read(id)
-	_, err := dht.FindPeer(ctx, peer.ID(id))
+	p, err := dht.FindPeer(ctx, peer.ID(id))
+	if err != nil {
+		log.Error("Bootstrap peer error: %s", err)
+	}
+	err = dht.dialer.DialPeer(p)
 	if err != nil {
 		log.Errorf("Bootstrap peer error: %s", err)
 	}