diff --git a/exchange/bitswap/bitswap.go b/exchange/bitswap/bitswap.go
index 9cd59af8e3d7356d059111f1cec332f29afee20a..d47c96144c1db38418c874e087533978a49d693f 100644
--- a/exchange/bitswap/bitswap.go
+++ b/exchange/bitswap/bitswap.go
@@ -31,16 +31,15 @@ type Routing interface {
 // NewSession initializes a bitswap session.
 func NewSession(parent context.Context, s bsnet.NetworkService, p *peer.Peer, d ds.Datastore, directory Routing) exchange.Interface {
 
-	// FIXME(brian): instantiate a concrete Strategist
-	receiver := bsnet.Forwarder{}
+	adapter := bsnet.NewNetworkAdapter(s, nil)
 	bs := &bitswap{
 		blockstore:    blockstore.NewBlockstore(d),
 		notifications: notifications.New(),
 		strategy:      strategy.New(),
 		routing:       directory,
-		sender:        bsnet.NewNetworkAdapter(s, &receiver),
+		sender:        adapter,
 	}
-	receiver.Delegate(bs)
+	adapter.SetDelegate(bs)
 
 	return bs
 }
diff --git a/exchange/bitswap/network/forwarder.go b/exchange/bitswap/network/forwarder.go
deleted file mode 100644
index 603cd0123bc361c1b4dbf1b2a45f0fa739e633d8..0000000000000000000000000000000000000000
--- a/exchange/bitswap/network/forwarder.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package network
-
-import (
-	context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
-	bsmsg "github.com/jbenet/go-ipfs/exchange/bitswap/message"
-	peer "github.com/jbenet/go-ipfs/peer"
-)
-
-// Forwarder receives messages and forwards them to the delegate.
-//
-// Forwarder breaks the circular dependency between the BitSwap Session and the
-// Network Service.
-type Forwarder struct {
-	delegate Receiver
-}
-
-func (r *Forwarder) ReceiveMessage(
-	ctx context.Context, sender *peer.Peer, incoming bsmsg.BitSwapMessage) (
-	*peer.Peer, bsmsg.BitSwapMessage, error) {
-	if r.delegate == nil {
-		return nil, nil, nil
-	}
-	return r.delegate.ReceiveMessage(ctx, sender, incoming)
-}
-
-func (r *Forwarder) Delegate(delegate Receiver) {
-	r.delegate = delegate
-}
diff --git a/exchange/bitswap/network/forwarder_test.go b/exchange/bitswap/network/forwarder_test.go
deleted file mode 100644
index 73604e110f9106c859657bf770fe28f982858925..0000000000000000000000000000000000000000
--- a/exchange/bitswap/network/forwarder_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package network
-
-import (
-	"testing"
-
-	context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
-	bsmsg "github.com/jbenet/go-ipfs/exchange/bitswap/message"
-	peer "github.com/jbenet/go-ipfs/peer"
-)
-
-func TestDoesntPanicIfDelegateNotPresent(t *testing.T) {
-	fwdr := Forwarder{}
-	fwdr.ReceiveMessage(context.Background(), &peer.Peer{}, bsmsg.New())
-}
-
-func TestForwardsMessageToDelegate(t *testing.T) {
-	fwdr := Forwarder{delegate: &EchoDelegate{}}
-	fwdr.ReceiveMessage(context.Background(), &peer.Peer{}, bsmsg.New())
-}
-
-type EchoDelegate struct{}
-
-func (d *EchoDelegate) ReceiveMessage(ctx context.Context, p *peer.Peer,
-	incoming bsmsg.BitSwapMessage) (*peer.Peer, bsmsg.BitSwapMessage, error) {
-	return p, incoming, nil
-}