diff --git a/services/mgmt/debug/dispatcher.go b/services/mgmt/debug/dispatcher.go
index fd85e5c..02d10bb 100644
--- a/services/mgmt/debug/dispatcher.go
+++ b/services/mgmt/debug/dispatcher.go
@@ -6,7 +6,6 @@
 
 	"v.io/core/veyron2/ipc"
 	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vtrace"
 
 	logreaderimpl "v.io/core/veyron/services/mgmt/logreader/impl"
 	pprofimpl "v.io/core/veyron/services/mgmt/pprof/impl"
@@ -18,13 +17,12 @@
 type dispatcher struct {
 	logsDir string // The root of the logs directory.
 	auth    security.Authorizer
-	store   vtrace.Store
 }
 
 var _ ipc.Dispatcher = (*dispatcher)(nil)
 
-func NewDispatcher(logsDir string, authorizer security.Authorizer, store vtrace.Store) *dispatcher {
-	return &dispatcher{logsDir, authorizer, store}
+func NewDispatcher(logsDir string, authorizer security.Authorizer) *dispatcher {
+	return &dispatcher{logsDir, authorizer}
 }
 
 // The first part of the names of the objects served by this dispatcher.
@@ -57,7 +55,7 @@
 	case "stats":
 		return statsimpl.NewStatsService(suffix, 10*time.Second), d.auth, nil
 	case "vtrace":
-		return vtraceimpl.NewVtraceService(d.store), d.auth, nil
+		return vtraceimpl.NewVtraceService(), d.auth, nil
 	}
 	return nil, d.auth, nil
 }
diff --git a/services/mgmt/debug/dispatcher_test.go b/services/mgmt/debug/dispatcher_test.go
index dac56ab..3c2c3a7 100644
--- a/services/mgmt/debug/dispatcher_test.go
+++ b/services/mgmt/debug/dispatcher_test.go
@@ -33,7 +33,7 @@
 	if len(logsDir) == 0 {
 		return "", nil, fmt.Errorf("logs directory missing")
 	}
-	disp := NewDispatcher(logsDir, nil, rt.VtraceStore())
+	disp := NewDispatcher(logsDir, nil)
 	server, err := rt.NewServer()
 	if err != nil {
 		return "", nil, fmt.Errorf("failed to start debug server: %v", err)
@@ -58,7 +58,7 @@
 
 	tracedContext := func() *context.T {
 		ctx := runtime.NewContext()
-		vtrace.FromContext(ctx).Trace().ForceCollect()
+		vtrace.ForceCollect(ctx)
 		return ctx
 	}
 	rootName = "debug"
diff --git a/services/mgmt/vtrace/impl/vtrace.go b/services/mgmt/vtrace/impl/vtrace.go
index 9c56e7e..3aa22dd 100644
--- a/services/mgmt/vtrace/impl/vtrace.go
+++ b/services/mgmt/vtrace/impl/vtrace.go
@@ -8,12 +8,11 @@
 	"v.io/core/veyron2/vtrace"
 )
 
-type vtraceService struct {
-	store vtrace.Store
-}
+type vtraceService struct{}
 
 func (v *vtraceService) Trace(ctx ipc.ServerContext, id uniqueid.ID) (vtrace.TraceRecord, error) {
-	tr := v.store.TraceRecord(id)
+	store := vtrace.GetStore(ctx.Context())
+	tr := store.TraceRecord(id)
 	if tr == nil {
 		return vtrace.TraceRecord{}, verror2.Make(verror2.NoExist, ctx.Context(), "No trace with id %x", id)
 	}
@@ -23,7 +22,8 @@
 func (v *vtraceService) AllTraces(ctx svtrace.StoreAllTracesContext) error {
 	// TODO(mattr): Consider changing the store to allow us to iterate through traces
 	// when there are many.
-	traces := v.store.TraceRecords()
+	store := vtrace.GetStore(ctx.Context())
+	traces := store.TraceRecords()
 	for i := range traces {
 		if err := ctx.SendStream().Send(traces[i]); err != nil {
 			return err
@@ -32,6 +32,6 @@
 	return nil
 }
 
-func NewVtraceService(store vtrace.Store) interface{} {
-	return svtrace.StoreServer(&vtraceService{store})
+func NewVtraceService() interface{} {
+	return svtrace.StoreServer(&vtraceService{})
 }
diff --git a/services/mgmt/vtrace/impl/vtrace_test.go b/services/mgmt/vtrace/impl/vtrace_test.go
index a7e21c8..bf77a95 100644
--- a/services/mgmt/vtrace/impl/vtrace_test.go
+++ b/services/mgmt/vtrace/impl/vtrace_test.go
@@ -29,7 +29,7 @@
 	if err != nil {
 		t.Fatalf("Listen failed: %s", err)
 	}
-	if err := server.Serve("", impl.NewVtraceService(runtime.VtraceStore()), nil); err != nil {
+	if err := server.Serve("", impl.NewVtraceService(), nil); err != nil {
 		t.Fatalf("Serve failed: %s", err)
 	}
 	return endpoints[0].String(), server, runtime
@@ -40,10 +40,10 @@
 	defer server.Stop()
 
 	sctx := runtime.NewContext()
-	sctx, span := runtime.WithNewSpan(sctx, "The Span")
-	span.Trace().ForceCollect()
+	sctx, span := vtrace.SetNewSpan(sctx, "The Span")
+	vtrace.ForceCollect(sctx)
 	span.Finish()
-	id := span.Trace().ID()
+	id := span.Trace()
 
 	client := service.StoreClient(naming.JoinAddressName(endpoint, ""))
 
