diff --git a/pin.go b/pin.go
index 466dfba413be7b170ff8f0ce6a854098181fa128..666e87b6f119648d5c6f1b70a59364fb4da6723b 100644
--- a/pin.go
+++ b/pin.go
@@ -7,7 +7,9 @@ import (
 	"errors"
 	"fmt"
 	"sync"
+	"time"
 
+	context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
 	ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
 	nsds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore/namespace"
 	"github.com/jbenet/go-ipfs/blocks/set"
@@ -170,8 +172,10 @@ func (p *pinner) pinIndirectRecurse(node *mdag.Node) error {
 }
 
 func (p *pinner) pinLinks(node *mdag.Node) error {
-	for _, l := range node.Links {
-		subnode, err := l.GetNode(p.dserv)
+	ctx, _ := context.WithTimeout(context.Background(), time.Second*60)
+	for _, ng := range p.dserv.GetDAG(ctx, node) {
+		subnode, err := ng.Get()
+		//subnode, err := l.GetNode(p.dserv)
 		if err != nil {
 			// TODO: Maybe just log and continue?
 			return err