ref: Change context mutators from SetFoo to WithFoo.

The motivation for this change is consistency, so our API becomes
easier to use.

Before this CL we were using the WithFoo style in the context
package, but the SetFoo style elsewhere, sometimes with an extra
"Context" thrown in for kicks.  After this CL we use WithFoo (and
GetFoo) everywhere.

Change-Id: Idc6959e4ea76ca6bd36501f4002145ffa8835c04
MultiPart: 2/4
diff --git a/cmd/vrun/vrun.go b/cmd/vrun/vrun.go
index 5f3d8f1..e5ba9f8 100644
--- a/cmd/vrun/vrun.go
+++ b/cmd/vrun/vrun.go
@@ -78,7 +78,7 @@
 		if err := bless(ctx, principal, role.RoleSuffix); err != nil {
 			return err
 		}
-		rCtx, err := v23.SetPrincipal(ctx, principal)
+		rCtx, err := v23.WithPrincipal(ctx, principal)
 		if err != nil {
 			return err
 		}
diff --git a/examples/rps/rpsbot/impl.go b/examples/rps/rpsbot/impl.go
index 6b5e00c..9c95d2c 100644
--- a/examples/rps/rpsbot/impl.go
+++ b/examples/rps/rpsbot/impl.go
@@ -63,7 +63,7 @@
 func (r *RPS) Challenge(ctx *context.T, call rpc.ServerCall, address string, id rps.GameId, opts rps.GameOptions) error {
 	b, _ := security.RemoteBlessingNames(ctx, call.Security())
 	vlog.VI(1).Infof("Challenge (%q, %+v, %+v) from %v", address, id, opts, b)
-	newctx, _ := vtrace.SetNewTrace(r.ctx)
+	newctx, _ := vtrace.WithNewTrace(r.ctx)
 	return r.player.challenge(newctx, address, id, opts)
 }
 
diff --git a/examples/rps/rpsplayer/main.go b/examples/rps/rpsplayer/main.go
index e2686cc..2c01ee7 100644
--- a/examples/rps/rpsplayer/main.go
+++ b/examples/rps/rpsplayer/main.go
@@ -38,7 +38,7 @@
 	defer shutdown()
 
 	for {
-		ctx, _ := vtrace.SetNewTrace(rootctx)
+		ctx, _ := vtrace.WithNewTrace(rootctx)
 		if selectOne([]string{"Initiate Game", "Wait For Challenge"}) == 0 {
 			initiateGame(ctx)
 		} else {
diff --git a/lib/signals/signals_test.go b/lib/signals/signals_test.go
index 3a8ef2c..e8799b2 100644
--- a/lib/signals/signals_test.go
+++ b/lib/signals/signals_test.go
@@ -296,7 +296,7 @@
 	defer shutdown()
 
 	for _, signal := range []syscall.Signal{syscall.SIGABRT, syscall.SIGHUP} {
-		ctx, _ := vtrace.SetNewTrace(rootCtx)
+		ctx, _ := vtrace.WithNewTrace(rootCtx)
 		sh, h := newShell(t, ctx, "handleCustomWithStop")
 		h.Expect("ready")
 		checkSignalIsNotDefault(t, signal)
diff --git a/profiles/fake/naming.go b/profiles/fake/naming.go
index dab9a06..416825d 100644
--- a/profiles/fake/naming.go
+++ b/profiles/fake/naming.go
@@ -13,7 +13,7 @@
 func (r *Runtime) NewEndpoint(ep string) (naming.Endpoint, error) {
 	panic("unimplemented")
 }
-func (r *Runtime) SetNewNamespace(ctx *context.T, roots ...string) (*context.T, namespace.T, error) {
+func (r *Runtime) WithNewNamespace(ctx *context.T, roots ...string) (*context.T, namespace.T, error) {
 	panic("unimplemented")
 }
 func (r *Runtime) GetNamespace(ctx *context.T) namespace.T {
diff --git a/profiles/fake/rpc.go b/profiles/fake/rpc.go
index f00dd3b..d0c43ee 100644
--- a/profiles/fake/rpc.go
+++ b/profiles/fake/rpc.go
@@ -13,7 +13,7 @@
 func SetClient(ctx *context.T, client rpc.Client) *context.T {
 	return context.WithValue(ctx, clientKey, client)
 }
-func (r *Runtime) SetNewClient(ctx *context.T, opts ...rpc.ClientOpt) (*context.T, rpc.Client, error) {
+func (r *Runtime) WithNewClient(ctx *context.T, opts ...rpc.ClientOpt) (*context.T, rpc.Client, error) {
 	panic("unimplemented")
 }
 func (r *Runtime) GetClient(ctx *context.T) rpc.Client {
@@ -24,7 +24,7 @@
 func (r *Runtime) NewServer(ctx *context.T, opts ...rpc.ServerOpt) (rpc.Server, error) {
 	panic("unimplemented")
 }
-func (r *Runtime) SetNewStreamManager(ctx *context.T) (*context.T, error) {
+func (r *Runtime) WithNewStreamManager(ctx *context.T) (*context.T, error) {
 	panic("unimplemented")
 }
 
diff --git a/profiles/fake/runtime.go b/profiles/fake/runtime.go
index d239b3a..d67a646 100644
--- a/profiles/fake/runtime.go
+++ b/profiles/fake/runtime.go
@@ -36,7 +36,7 @@
 	return nil
 }
 
-func (r *Runtime) SetPrincipal(ctx *context.T, principal security.Principal) (*context.T, error) {
+func (r *Runtime) WithPrincipal(ctx *context.T, principal security.Principal) (*context.T, error) {
 	return context.WithValue(ctx, principalKey, principal), nil
 }
 
@@ -49,7 +49,7 @@
 	panic("unimplemented")
 }
 
-func (r *Runtime) SetBackgroundContext(ctx *context.T) *context.T {
+func (r *Runtime) WithBackgroundContext(ctx *context.T) *context.T {
 	// Note we add an extra context with a nil value here.
 	// This prevents users from travelling back through the
 	// chain of background contexts.
@@ -69,7 +69,7 @@
 	return bctx
 }
 
-func (*Runtime) SetReservedNameDispatcher(ctx *context.T, d rpc.Dispatcher) *context.T {
+func (*Runtime) WithReservedNameDispatcher(ctx *context.T, d rpc.Dispatcher) *context.T {
 	panic("unimplemented")
 	return nil
 }
diff --git a/profiles/internal/lib/publisher/publisher_test.go b/profiles/internal/lib/publisher/publisher_test.go
index 6c07234..9505dce 100644
--- a/profiles/internal/lib/publisher/publisher_test.go
+++ b/profiles/internal/lib/publisher/publisher_test.go
@@ -29,7 +29,7 @@
 	if err != nil {
 		panic(err)
 	}
-	ctx, _ = vtrace.SetNewSpan(ctx, "")
+	ctx, _ = vtrace.WithNewSpan(ctx, "")
 	ctx, _ = context.WithDeadline(ctx, time.Now().Add(20*time.Second))
 	return ctx
 }
diff --git a/profiles/internal/naming/namespace/acl_test.go b/profiles/internal/naming/namespace/acl_test.go
index 340ab73..102fcf4 100644
--- a/profiles/internal/naming/namespace/acl_test.go
+++ b/profiles/internal/naming/namespace/acl_test.go
@@ -29,13 +29,13 @@
 func initTest() (rootCtx *context.T, aliceCtx *context.T, bobCtx *context.T, shutdown v23.Shutdown) {
 	ctx, shutdown := test.InitForTest()
 	var err error
-	if rootCtx, err = v23.SetPrincipal(ctx, testutil.NewPrincipal("root")); err != nil {
+	if rootCtx, err = v23.WithPrincipal(ctx, testutil.NewPrincipal("root")); err != nil {
 		panic("failed to set root principal")
 	}
-	if aliceCtx, err = v23.SetPrincipal(ctx, testutil.NewPrincipal("alice")); err != nil {
+	if aliceCtx, err = v23.WithPrincipal(ctx, testutil.NewPrincipal("alice")); err != nil {
 		panic("failed to set alice principal")
 	}
-	if bobCtx, err = v23.SetPrincipal(ctx, testutil.NewPrincipal("bob")); err != nil {
+	if bobCtx, err = v23.WithPrincipal(ctx, testutil.NewPrincipal("bob")); err != nil {
 		panic("failed to set bob principal")
 	}
 	for _, r := range []*context.T{rootCtx, aliceCtx, bobCtx} {
diff --git a/profiles/internal/naming/namespace/all_test.go b/profiles/internal/naming/namespace/all_test.go
index 1322c24..85c2ff9 100644
--- a/profiles/internal/naming/namespace/all_test.go
+++ b/profiles/internal/naming/namespace/all_test.go
@@ -45,10 +45,10 @@
 	if err := pc.AddToRoots(psc.BlessingStore().Default()); err != nil {
 		t.Fatal(err)
 	}
-	if sc, err = v23.SetPrincipal(ctx, psc); err != nil {
+	if sc, err = v23.WithPrincipal(ctx, psc); err != nil {
 		t.Fatal(err)
 	}
-	if c, err = v23.SetPrincipal(ctx, pc); err != nil {
+	if c, err = v23.WithPrincipal(ctx, pc); err != nil {
 		t.Fatal(err)
 	}
 	return sc, c, shutdown
@@ -617,11 +617,11 @@
 	defer shutdown()
 
 	var (
-		rootMtCtx, _   = v23.SetPrincipal(ctx, testutil.NewPrincipal()) // root mounttable
-		mtCtx, _       = v23.SetPrincipal(ctx, testutil.NewPrincipal()) // intermediate mounttable
-		serverCtx, _   = v23.SetPrincipal(ctx, testutil.NewPrincipal()) // end server
-		clientCtx, _   = v23.SetPrincipal(ctx, testutil.NewPrincipal()) // client process (doing Resolves).
-		idp            = testutil.NewIDProvider("idp")                  // identity provider
+		rootMtCtx, _   = v23.WithPrincipal(ctx, testutil.NewPrincipal()) // root mounttable
+		mtCtx, _       = v23.WithPrincipal(ctx, testutil.NewPrincipal()) // intermediate mounttable
+		serverCtx, _   = v23.WithPrincipal(ctx, testutil.NewPrincipal()) // end server
+		clientCtx, _   = v23.WithPrincipal(ctx, testutil.NewPrincipal()) // client process (doing Resolves).
+		idp            = testutil.NewIDProvider("idp")                   // identity provider
 		serverEndpoint = naming.FormatEndpoint("tcp", "127.0.0.1:14141")
 
 		resolve = func(name string, opts ...naming.NamespaceOpt) (*naming.MountEntry, error) {
@@ -672,7 +672,7 @@
 				t.Errorf("resolve(%q): Got (%v, %v), expected resolution to succeed", name, e, err)
 			}
 			// The namespace root from the context should be authorized as well.
-			ctx, ns, _ := v23.SetNewNamespace(clientCtx, naming.JoinAddressName(root, ""))
+			ctx, ns, _ := v23.WithNewNamespace(clientCtx, naming.JoinAddressName(root, ""))
 			if e, err := ns.Resolve(ctx, "mt/server"); verror.ErrorID(err) != verror.ErrNotTrusted.ID {
 				t.Errorf("resolve with root=%q returned (%v, errorid=%v %v), wanted errorid=%v: %s", root, e, verror.ErrorID(err), err, verror.ErrNotTrusted.ID, verror.DebugString(err))
 			}
diff --git a/profiles/internal/rpc/cancel_test.go b/profiles/internal/rpc/cancel_test.go
index 60b0033..c14d120 100644
--- a/profiles/internal/rpc/cancel_test.go
+++ b/profiles/internal/rpc/cancel_test.go
@@ -94,8 +94,8 @@
 		sm               = manager.InternalNew(naming.FixedRoutingID(0x555555555))
 		ns               = tnaming.NewSimpleNamespace()
 		pclient, pserver = newClientServerPrincipals()
-		serverCtx, _     = v23.SetPrincipal(ctx, pserver)
-		clientCtx, _     = v23.SetPrincipal(ctx, pclient)
+		serverCtx, _     = v23.WithPrincipal(ctx, pserver)
+		clientCtx, _     = v23.WithPrincipal(ctx, pclient)
 	)
 	client, err := InternalNewClient(sm, ns)
 	if err != nil {
diff --git a/profiles/internal/rpc/client.go b/profiles/internal/rpc/client.go
index 8de92b7..8525a47 100644
--- a/profiles/internal/rpc/client.go
+++ b/profiles/internal/rpc/client.go
@@ -308,7 +308,7 @@
 	if !ctx.Initialized() {
 		return nil, verror.ExplicitNew(verror.ErrBadArg, i18n.LangID("en-us"), "<rpc.Client>", "StartCall", "context not initialized")
 	}
-	ctx, span := vtrace.SetNewSpan(ctx, fmt.Sprintf("<rpc.Client>%q.%s", name, method))
+	ctx, span := vtrace.WithNewSpan(ctx, fmt.Sprintf("<rpc.Client>%q.%s", name, method))
 	if err := canCreateServerAuthorizer(ctx, opts); err != nil {
 		return nil, verror.New(verror.ErrBadArg, ctx, err)
 	}
@@ -362,7 +362,7 @@
 func (c *client) tryCreateFlow(ctx *context.T, principal security.Principal, index int, name, server, method string, auth security.Authorizer, ch chan<- *serverStatus, vcOpts []stream.VCOpt) {
 	status := &serverStatus{index: index, server: server}
 	var span vtrace.Span
-	ctx, span = vtrace.SetNewSpan(ctx, "<client>tryCreateFlow")
+	ctx, span = vtrace.WithNewSpan(ctx, "<client>tryCreateFlow")
 	span.Annotatef("address:%v", server)
 	defer func() {
 		ch <- status
@@ -466,7 +466,7 @@
 	// initialization. Currently, the agent, which uses SecurityNone, is the only caller
 	// during runtime initialization. We would like to set the principal in the context
 	// to nil if we are running in SecurityNone, but this always results in a panic since
-	// the agent client would trigger the call v23.SetPrincipal during runtime
+	// the agent client would trigger the call v23.WithPrincipal during runtime
 	// initialization. So, we gate the call to v23.GetPrincipal instead since the agent
 	// client will have callEncrypted == false.
 	// Potential solutions to this are:
diff --git a/profiles/internal/rpc/debug_test.go b/profiles/internal/rpc/debug_test.go
index b4081fe..cdae902 100644
--- a/profiles/internal/rpc/debug_test.go
+++ b/profiles/internal/rpc/debug_test.go
@@ -53,7 +53,7 @@
 	if err := server.Serve("", &testObject{}, nil); err != nil {
 		t.Fatalf("server.Serve failed: %v", err)
 	}
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	client, err := InternalNewClient(sm, ns)
 	if err != nil {
 		t.Fatalf("InternalNewClient failed: %v", err)
diff --git a/profiles/internal/rpc/discharges.go b/profiles/internal/rpc/discharges.go
index b6c7bf9..9417172 100644
--- a/profiles/internal/rpc/discharges.go
+++ b/profiles/internal/rpc/discharges.go
@@ -91,7 +91,7 @@
 		}
 		if ctx != nil {
 			var span vtrace.Span
-			ctx, span = vtrace.SetNewSpan(ctx, "Fetching Discharges")
+			ctx, span = vtrace.WithNewSpan(ctx, "Fetching Discharges")
 			defer span.Finish()
 		}
 		d.fetchDischarges(ctx, caveats, filteredImpetuses, discharges)
diff --git a/profiles/internal/rpc/full_test.go b/profiles/internal/rpc/full_test.go
index 838c43b..7729e21 100644
--- a/profiles/internal/rpc/full_test.go
+++ b/profiles/internal/rpc/full_test.go
@@ -234,7 +234,7 @@
 
 func startServerWS(t *testing.T, ctx *context.T, principal security.Principal, sm stream.Manager, ns namespace.T, name string, disp rpc.Dispatcher, shouldUseWebsocket websocketMode, opts ...rpc.ServerOpt) (naming.Endpoint, rpc.Server) {
 	vlog.VI(1).Info("InternalNewServer")
-	ctx, _ = v23.SetPrincipal(ctx, principal)
+	ctx, _ = v23.WithPrincipal(ctx, principal)
 	server, err := testInternalNewServer(ctx, sm, ns, principal, opts...)
 	if err != nil {
 		t.Errorf("InternalNewServer failed: %v", err)
@@ -534,7 +534,7 @@
 	// (that are blessed by pprovider).
 	pclient.BlessingStore().Set(bless(pprovider, pclient, "client"), "root")
 
-	clientCtx, _ := v23.SetPrincipal(ctx, pclient)
+	clientCtx, _ := v23.WithPrincipal(ctx, pclient)
 	client, err := InternalNewClient(mgr, ns)
 	if err != nil {
 		t.Fatal(err)
@@ -639,7 +639,7 @@
 		t.Fatal(err)
 	}
 	defer client.Close()
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	if _, err := client.StartCall(ctx, "mountpoint/server", "Closure", nil); verror.ErrorID(err) != verror.ErrNotTrusted.ID {
 		t.Errorf("Got error %v (errorid=%v), want errorid=%v", err, verror.ErrorID(err), verror.ErrNotTrusted.ID)
 	}
@@ -716,7 +716,7 @@
 		b                = createBundleWS(t, ctx, pserver, &testServer{}, shouldUseWebsocket)
 	)
 	defer b.cleanup(t, ctx)
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	for _, test := range tests {
 		vlog.VI(1).Infof("%s client.StartCall", name(test))
 		vname := test.name
@@ -783,7 +783,7 @@
 		b                = createBundle(t, ctx, pserver, &testServer{})
 	)
 	defer b.cleanup(t, ctx)
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	call, err := b.client.StartCall(ctx, "mountpoint/server/suffix", "Echo", v{"foo"})
 	if err != nil {
 		t.Fatalf(`client.StartCall got error "%v"`, err)
@@ -826,7 +826,7 @@
 	defer shutdown()
 	defer b.cleanup(t, ctx)
 
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	tests := []struct {
 		granter                       rpc.Granter
 		startErrID, finishErrID       verror.IDAction
@@ -971,7 +971,7 @@
 
 	for _, test := range tests {
 		pclient := setClientBlessings(test.Requirements)
-		ctx, _ = v23.SetPrincipal(ctx, pclient)
+		ctx, _ = v23.WithPrincipal(ctx, pclient)
 		client, err := InternalNewClient(sm, ns)
 		if err != nil {
 			t.Fatalf("InternalNewClient(%+v) failed: %v", test.Requirements, err)
@@ -1132,7 +1132,7 @@
 		defer client.Close()
 
 		pclient.BlessingStore().Set(test.blessings, "server")
-		ctx, _ := v23.SetPrincipal(ctx, pclient)
+		ctx, _ := v23.WithPrincipal(ctx, pclient)
 		err = client.Call(ctx, test.name, test.method, test.args, makeResultPtrs(test.results))
 		if err != nil && test.authorized {
 			t.Errorf(`%s client.Call got error: "%v", wanted the RPC to succeed`, name, err)
@@ -1207,7 +1207,7 @@
 	b := createBundle(t, ctx, pserver, &testServer{})
 	defer b.cleanup(t, ctx)
 
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	tests := []struct {
 		blessings security.Blessings
 		errID     verror.IDAction
@@ -1268,7 +1268,7 @@
 	}
 	defer client.Close()
 
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	var gotServer, gotClient string
 	if err := client.Call(ctx, "mountpoint/server/suffix", "EchoBlessings", nil, []interface{}{&gotServer, &gotClient}); err != nil {
 		t.Fatalf("Finish failed: %v", err)
@@ -1301,7 +1301,7 @@
 	if b.client, err = InternalNewClient(b.sm, b.ns); err != nil {
 		t.Fatalf("InternalNewClient failed: %v", err)
 	}
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	call := func() error {
 		var got string
 		if err := b.client.Call(ctx, "mountpoint/server/aclAuth", "Echo", []interface{}{"batman"}, []interface{}{&got}); err != nil {
@@ -1380,7 +1380,7 @@
 	)
 	defer b.cleanup(t, ctx)
 
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	ctx, cancel := context.WithCancel(ctx)
 	_, err := b.client.StartCall(ctx, "mountpoint/server/suffix", "CancelStreamReader", []interface{}{})
 	if err != nil {
@@ -1401,7 +1401,7 @@
 	)
 	defer b.cleanup(t, ctx)
 
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	ctx, cancel := context.WithCancel(ctx)
 	call, err := b.client.StartCall(ctx, "mountpoint/server/suffix", "CancelStreamIgnorer", []interface{}{})
 	if err != nil {
@@ -1444,7 +1444,7 @@
 	)
 	defer b.cleanup(t, ctx)
 
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	call, err := b.client.StartCall(ctx, "mountpoint/server/suffix", "RecvInGoroutine", []interface{}{})
 	if err != nil {
 		t.Fatalf("StartCall failed: %v", err)
@@ -1490,7 +1490,7 @@
 	publisher.AddServer("/@2@tcp@localhost:10000@@1000000@2000000@@")
 	publisher.AddServer("/@2@tcp@localhost:10001@@2000000@3000000@@")
 
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	_, err := b.client.StartCall(ctx, "incompatible/suffix", "Echo", []interface{}{"foo"}, options.NoRetry{})
 	if verror.ErrorID(err) != verror.ErrNoServers.ID {
 		t.Errorf("Expected error %s, found: %v", verror.ErrNoServers, err)
@@ -1647,7 +1647,7 @@
 	}
 
 	// A call should fail if the principal in the ctx is nil and SecurityNone is not specified.
-	ctx, err = v23.SetPrincipal(ctx, nil)
+	ctx, err = v23.WithPrincipal(ctx, nil)
 	if err != nil {
 		t.Fatalf("failed to set principal: %v", err)
 	}
@@ -1709,7 +1709,7 @@
 			return nil, err
 		}
 		defer client.Close()
-		ctx, _ = v23.SetPrincipal(ctx, pclient)
+		ctx, _ = v23.WithPrincipal(ctx, pclient)
 		call, err := client.StartCall(ctx, server, "Closure", nil)
 		if err != nil {
 			return nil, err
@@ -1777,7 +1777,7 @@
 		if noDischarges {
 			opts = append(opts, NoDischarges{})
 		}
-		ctx, _ = v23.SetPrincipal(ctx, pclient)
+		ctx, _ = v23.WithPrincipal(ctx, pclient)
 		if _, err = client.StartCall(ctx, "mountpoint/testServer", "Closure", nil, opts...); err != nil {
 			t.Fatalf("failed to StartCall: %v", err)
 		}
@@ -1839,7 +1839,7 @@
 	if err != nil {
 		t.Error(err)
 	}
-	ctx, _ = v23.SetPrincipal(ctx, pdischargeClient)
+	ctx, _ = v23.WithPrincipal(ctx, pdischargeClient)
 	dc.PrepareDischarges(ctx, []security.Caveat{tpcav2}, security.DischargeImpetus{})
 
 	// Ensure that discharger1 was not called and discharger2 was called.
@@ -1871,7 +1871,7 @@
 	defer serverSM.Shutdown()
 	rid := serverSM.RoutingID()
 
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 
 	newClient := func() rpc.Client {
 		rid, err := naming.NewRoutingID()
@@ -1963,7 +1963,7 @@
 	defer smc.Shutdown()
 	defer client.Close()
 
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	// The call should succeed when the server presents the same public as the opt...
 	if _, err = client.StartCall(ctx, mountName, "Closure", nil, options.SkipServerEndpointAuthorization{}, options.ServerPublicKey{pserver.PublicKey()}); err != nil {
 		t.Errorf("Expected call to succeed but got %v", err)
@@ -2027,7 +2027,7 @@
 		t.Fatalf("failed to create client: %v", err)
 	}
 	defer client.Close()
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	dc := InternalNewDischargeClient(ctx, client, 0)
 
 	// Fetch discharges for tpcav.
diff --git a/profiles/internal/rpc/server.go b/profiles/internal/rpc/server.go
index 9898a34..91b3a1a 100644
--- a/profiles/internal/rpc/server.go
+++ b/profiles/internal/rpc/server.go
@@ -175,7 +175,7 @@
 	principal security.Principal,
 	opts ...rpc.ServerOpt) (rpc.Server, error) {
 	ctx, cancel := context.WithRootCancel(ctx)
-	ctx, _ = vtrace.SetNewSpan(ctx, "NewServer")
+	ctx, _ = vtrace.WithNewSpan(ctx, "NewServer")
 	statsPrefix := naming.Join("rpc", "server", "routing-id", streamMgr.RoutingID().String())
 	s := &server{
 		ctx:         ctx,
@@ -1105,7 +1105,7 @@
 	if err != nil {
 		// We don't know what the rpc call was supposed to be, but we'll create
 		// a placeholder span so we can capture annotations.
-		fs.ctx, _ = vtrace.SetNewSpan(fs.ctx, fmt.Sprintf("\"%s\".UNKNOWN", fs.suffix))
+		fs.ctx, _ = vtrace.WithNewSpan(fs.ctx, fmt.Sprintf("\"%s\".UNKNOWN", fs.suffix))
 		return nil, err
 	}
 	fs.method = req.Method
@@ -1115,7 +1115,7 @@
 	// on the server even if they will not be allowed to collect the
 	// results later.  This might be considered a DOS vector.
 	spanName := fmt.Sprintf("\"%s\".%s", fs.suffix, fs.method)
-	fs.ctx, _ = vtrace.SetContinuedTrace(fs.ctx, spanName, req.TraceRequest)
+	fs.ctx, _ = vtrace.WithContinuedTrace(fs.ctx, spanName, req.TraceRequest)
 
 	var cancel context.CancelFunc
 	if !req.Deadline.IsZero() {
diff --git a/profiles/internal/rpc/server_authorizer_test.go b/profiles/internal/rpc/server_authorizer_test.go
index 36e4c94..f9625fc 100644
--- a/profiles/internal/rpc/server_authorizer_test.go
+++ b/profiles/internal/rpc/server_authorizer_test.go
@@ -38,7 +38,7 @@
 		}
 	)
 	defer shutdown()
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	// Make client recognize ali, bob and otherAli blessings
 	for _, b := range []security.Blessings{ali, bob, otherAli} {
 		if err := pclient.AddToRoots(b); err != nil {
diff --git a/profiles/internal/rpc/server_test.go b/profiles/internal/rpc/server_test.go
index 095e902..4e4dbe5 100644
--- a/profiles/internal/rpc/server_test.go
+++ b/profiles/internal/rpc/server_test.go
@@ -76,7 +76,7 @@
 	if err != nil {
 		t.Fatalf("InternalNewClient failed: %v", err)
 	}
-	ctx, _ = v23.SetPrincipal(ctx, pclient)
+	ctx, _ = v23.WithPrincipal(ctx, pclient)
 	ctx, _ = context.WithDeadline(ctx, time.Now().Add(10*time.Second))
 	var result string
 	if err := client.Call(ctx, "servername", "SomeMethod", nil, []interface{}{&result}); err == nil {
@@ -169,7 +169,7 @@
 	progress := make(chan error)
 
 	client, err := InternalNewClient(sm, ns)
-	ctx, _ = v23.SetPrincipal(ctx, principal)
+	ctx, _ = v23.WithPrincipal(ctx, principal)
 	makeCall := func(ctx *context.T) {
 		call, err := client.StartCall(ctx, "test", "Hang", nil)
 		progress <- err
diff --git a/profiles/internal/rpc/stream/vif/vif.go b/profiles/internal/rpc/stream/vif/vif.go
index e59a153..eb4776c 100644
--- a/profiles/internal/rpc/stream/vif/vif.go
+++ b/profiles/internal/rpc/stream/vif/vif.go
@@ -169,7 +169,7 @@
 	ctx := getDialContext(opts)
 	if ctx != nil {
 		var span vtrace.Span
-		ctx, span = vtrace.SetNewSpan(ctx, "InternalNewDialedVIF")
+		ctx, span = vtrace.WithNewSpan(ctx, "InternalNewDialedVIF")
 		span.Annotatef("(%v, %v)", conn.RemoteAddr().Network(), conn.RemoteAddr())
 		defer span.Finish()
 	}
diff --git a/profiles/internal/rpc/test/client_test.go b/profiles/internal/rpc/test/client_test.go
index 62a094b..caf87ab 100644
--- a/profiles/internal/rpc/test/client_test.go
+++ b/profiles/internal/rpc/test/client_test.go
@@ -331,7 +331,7 @@
 
 	// The following tests will fail with NoServers, but because there are
 	// no protocols that the client and servers (mount table, and "name") share.
-	nctx, nclient, err := v23.SetNewClient(ctx, irpc.PreferredProtocols([]string{"wsh"}))
+	nctx, nclient, err := v23.WithNewClient(ctx, irpc.PreferredProtocols([]string{"wsh"}))
 
 	addr := naming.FormatEndpoint("nope", "127.0.0.1:1081")
 	if err := ns.Mount(ctx, "name", addr, time.Minute); err != nil {
@@ -494,7 +494,7 @@
 
 	// Create a context with a new principal that doesn't match the server,
 	// so that the client will not trust the server.
-	ctx1, err := v23.SetPrincipal(ctx, testutil.NewPrincipal("test-blessing"))
+	ctx1, err := v23.WithPrincipal(ctx, testutil.NewPrincipal("test-blessing"))
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -595,7 +595,7 @@
 	name, fn := initServer(t, ctx)
 	defer fn()
 
-	ctx1, err := v23.SetPrincipal(ctx, testutil.NewPrincipal("test-blessing"))
+	ctx1, err := v23.WithPrincipal(ctx, testutil.NewPrincipal("test-blessing"))
 	// Client must recognize the server, otherwise it won't even send the request.
 	v23.GetPrincipal(ctx1).AddToRoots(v23.GetPrincipal(ctx).BlessingStore().Default())
 	if err != nil {
diff --git a/profiles/internal/rpc/test/glob_test.go b/profiles/internal/rpc/test/glob_test.go
index 5b73a0f..9c2ca36 100644
--- a/profiles/internal/rpc/test/glob_test.go
+++ b/profiles/internal/rpc/test/glob_test.go
@@ -229,7 +229,7 @@
 	}
 
 	// Ensure that we're getting the english error message.
-	ctx = i18n.ContextWithLangID(ctx, i18n.LangID("en-US"))
+	ctx = i18n.WithLangID(ctx, i18n.LangID("en-US"))
 
 	for _, tc := range testcases {
 		name := naming.JoinAddressName(ep, tc.name)
diff --git a/profiles/internal/rpc/test/proxy_test.go b/profiles/internal/rpc/test/proxy_test.go
index 66719d2..ab8c7e9 100644
--- a/profiles/internal/rpc/test/proxy_test.go
+++ b/profiles/internal/rpc/test/proxy_test.go
@@ -43,7 +43,7 @@
 	if ctx, err = ivtrace.Init(ctx, flags.VtraceFlags{}); err != nil {
 		panic(err)
 	}
-	ctx, _ = vtrace.SetNewTrace(ctx)
+	ctx, _ = vtrace.WithNewTrace(ctx)
 	return ctx, shutdown
 }
 
@@ -183,7 +183,7 @@
 		t.Fatal(err)
 	}
 	defer client.Close()
-	serverCtx, _ := v23.SetPrincipal(ctx, pserver)
+	serverCtx, _ := v23.WithPrincipal(ctx, pserver)
 	server, err := irpc.InternalNewServer(serverCtx, smserver, ns, nil, pserver)
 	if err != nil {
 		t.Fatal(err)
@@ -200,7 +200,7 @@
 
 	name := "mountpoint/server/suffix"
 	makeCall := func(opts ...rpc.CallOpt) (string, error) {
-		clientCtx, _ := v23.SetPrincipal(ctx, pclient)
+		clientCtx, _ := v23.WithPrincipal(ctx, pclient)
 		clientCtx, _ = context.WithDeadline(clientCtx, time.Now().Add(5*time.Second))
 		call, err := client.StartCall(clientCtx, name, "Echo", []interface{}{"batman"}, opts...)
 		if err != nil {
diff --git a/profiles/internal/rpc/testutil_test.go b/profiles/internal/rpc/testutil_test.go
index 1e51fa4..921335e 100644
--- a/profiles/internal/rpc/testutil_test.go
+++ b/profiles/internal/rpc/testutil_test.go
@@ -84,7 +84,7 @@
 	if err != nil {
 		panic(err)
 	}
-	ctx, _ = vtrace.SetNewTrace(ctx)
+	ctx, _ = vtrace.WithNewTrace(ctx)
 	return ctx, shutdown
 }
 
diff --git a/profiles/internal/rt/ipc_test.go b/profiles/internal/rt/ipc_test.go
index 09ec17d..6c76eb4 100644
--- a/profiles/internal/rt/ipc_test.go
+++ b/profiles/internal/rt/ipc_test.go
@@ -39,7 +39,7 @@
 }
 
 func newCtxPrincipal(rootCtx *context.T) *context.T {
-	ctx, err := v23.SetPrincipal(rootCtx, testutil.NewPrincipal("defaultBlessings"))
+	ctx, err := v23.WithPrincipal(rootCtx, testutil.NewPrincipal("defaultBlessings"))
 	if err != nil {
 		panic(err)
 	}
@@ -157,7 +157,7 @@
 		if err != nil {
 			t.Fatal(err)
 		}
-		ctx, client, err := v23.SetNewClient(clientCtx)
+		ctx, client, err := v23.WithNewClient(clientCtx)
 		if err != nil {
 			panic(err)
 		}
@@ -181,7 +181,7 @@
 func TestServerEndpointBlessingNames(t *testing.T) {
 	ctx, shutdown := test.InitForTest()
 	defer shutdown()
-	ctx, _ = v23.SetPrincipal(ctx, testutil.NewPrincipal("default"))
+	ctx, _ = v23.WithPrincipal(ctx, testutil.NewPrincipal("default"))
 
 	var (
 		p    = v23.GetPrincipal(ctx)
@@ -324,7 +324,7 @@
 	allowedServers := options.AllowedServersPolicy{"root/server"}
 
 	// Create a new client.
-	clientCtx, client, err := v23.SetNewClient(clientCtx)
+	clientCtx, client, err := v23.WithNewClient(clientCtx)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -358,7 +358,7 @@
 
 	// Test that the client fails to talk to server that does not present appropriate discharges.
 	// Setup a new client so that there are no cached VCs.
-	clientCtx, client, err = v23.SetNewClient(clientCtx)
+	clientCtx, client, err = v23.WithNewClient(clientCtx)
 	if err != nil {
 		t.Fatal(err)
 	}
diff --git a/profiles/internal/rt/runtime.go b/profiles/internal/rt/runtime.go
index 9edd9f5..d57dfa9 100644
--- a/profiles/internal/rt/runtime.go
+++ b/profiles/internal/rt/runtime.go
@@ -107,13 +107,13 @@
 	if err != nil {
 		return nil, nil, nil, err
 	}
-	ctx, _ = vtrace.SetNewTrace(ctx)
+	ctx, _ = vtrace.WithNewTrace(ctx)
 	r.addChild(ctx, vtraceDependency{}, func() {
 		vtrace.FormatTraces(os.Stderr, vtrace.GetStore(ctx).TraceRecords(), nil)
 	})
 
 	// Setup i18n.
-	ctx = i18n.ContextWithLangID(ctx, i18n.LangIDFromEnv())
+	ctx = i18n.WithLangID(ctx, i18n.LangIDFromEnv())
 	if len(flags.I18nCatalogue) != 0 {
 		cat := i18n.Cat()
 		for _, filename := range strings.Split(flags.I18nCatalogue, ",") {
@@ -125,7 +125,7 @@
 	}
 
 	// Setup the program name.
-	ctx = verror.ContextWithComponentName(ctx, filepath.Base(os.Args[0]))
+	ctx = verror.WithComponentName(ctx, filepath.Base(os.Args[0]))
 
 	// Enable signal handling.
 	r.initSignalHandling(ctx)
@@ -147,7 +147,7 @@
 	// After security is initialized we attach a real client.
 	// We do not capture the ctx here on purpose, to avoid anyone accidentally
 	// using this client anywhere.
-	_, client, err := r.SetNewClient(ctx)
+	_, client, err := r.WithNewClient(ctx)
 	if err != nil {
 		return nil, nil, nil, err
 	}
@@ -165,12 +165,12 @@
 	}
 
 	// Set up secure client.
-	ctx, _, err = r.SetNewClient(ctx)
+	ctx, _, err = r.WithNewClient(ctx)
 	if err != nil {
 		return nil, nil, nil, err
 	}
 
-	ctx = r.SetBackgroundContext(ctx)
+	ctx = r.WithBackgroundContext(ctx)
 
 	return r, ctx, r.shutdown, nil
 }
@@ -306,14 +306,14 @@
 	return newctx, err
 }
 
-func (r *Runtime) SetNewStreamManager(ctx *context.T) (*context.T, error) {
+func (r *Runtime) WithNewStreamManager(ctx *context.T) (*context.T, error) {
 	newctx, err := r.setNewStreamManager(ctx)
 	if err != nil {
 		return ctx, err
 	}
 
 	// Create a new client since it depends on the stream manager.
-	newctx, _, err = r.SetNewClient(newctx)
+	newctx, _, err = r.WithNewClient(newctx)
 	if err != nil {
 		return ctx, err
 	}
@@ -331,7 +331,7 @@
 	return ctx, r.addChild(ctx, principal, func() {}, deps...)
 }
 
-func (r *Runtime) SetPrincipal(ctx *context.T, principal security.Principal) (*context.T, error) {
+func (r *Runtime) WithPrincipal(ctx *context.T, principal security.Principal) (*context.T, error) {
 	var err error
 	newctx := ctx
 
@@ -349,7 +349,7 @@
 	if newctx, _, err = r.setNewNamespace(newctx, r.GetNamespace(ctx).Roots()...); err != nil {
 		return ctx, err
 	}
-	if newctx, _, err = r.SetNewClient(newctx); err != nil {
+	if newctx, _, err = r.WithNewClient(newctx); err != nil {
 		return ctx, err
 	}
 
@@ -361,7 +361,7 @@
 	return p
 }
 
-func (r *Runtime) SetNewClient(ctx *context.T, opts ...rpc.ClientOpt) (*context.T, rpc.Client, error) {
+func (r *Runtime) WithNewClient(ctx *context.T, opts ...rpc.ClientOpt) (*context.T, rpc.Client, error) {
 	otherOpts := append([]rpc.ClientOpt{}, opts...)
 
 	p, _ := ctx.Value(principalKey).(security.Principal)
@@ -408,14 +408,14 @@
 	return ctx, ns, err
 }
 
-func (r *Runtime) SetNewNamespace(ctx *context.T, roots ...string) (*context.T, namespace.T, error) {
+func (r *Runtime) WithNewNamespace(ctx *context.T, roots ...string) (*context.T, namespace.T, error) {
 	newctx, ns, err := r.setNewNamespace(ctx, roots...)
 	if err != nil {
 		return ctx, nil, err
 	}
 
 	// Replace the client since it depends on the namespace.
-	newctx, _, err = r.SetNewClient(newctx)
+	newctx, _, err = r.WithNewClient(newctx)
 	if err != nil {
 		return ctx, nil, err
 	}
@@ -440,7 +440,7 @@
 	return rpc.ListenSpec{}
 }
 
-func (*Runtime) SetBackgroundContext(ctx *context.T) *context.T {
+func (*Runtime) WithBackgroundContext(ctx *context.T) *context.T {
 	// Note we add an extra context with a nil value here.
 	// This prevents users from travelling back through the
 	// chain of background contexts.
@@ -460,7 +460,7 @@
 	return bctx
 }
 
-func (*Runtime) SetReservedNameDispatcher(ctx *context.T, d rpc.Dispatcher) *context.T {
+func (*Runtime) WithReservedNameDispatcher(ctx *context.T, d rpc.Dispatcher) *context.T {
 	return context.WithValue(ctx, reservedNameKey, d)
 }
 
diff --git a/profiles/internal/rt/runtime_test.go b/profiles/internal/rt/runtime_test.go
index f7826ad..cf6706d 100644
--- a/profiles/internal/rt/runtime_test.go
+++ b/profiles/internal/rt/runtime_test.go
@@ -24,7 +24,7 @@
 	if err != nil {
 		t.Fatal(err)
 	}
-	if ctx, err = r.SetPrincipal(ctx, testutil.NewPrincipal("test-blessing")); err != nil {
+	if ctx, err = r.WithPrincipal(ctx, testutil.NewPrincipal("test-blessing")); err != nil {
 		t.Fatal(err)
 	}
 	return r, ctx, func() {
@@ -47,7 +47,7 @@
 	defer shutdown()
 
 	p2 := testutil.NewPrincipal()
-	c2, err := r.SetPrincipal(ctx, p2)
+	c2, err := r.WithPrincipal(ctx, p2)
 	if err != nil {
 		t.Fatalf("Could not attach principal: %v", err)
 	}
@@ -65,7 +65,7 @@
 
 	orig := r.GetClient(ctx)
 
-	c2, client, err := r.SetNewClient(ctx)
+	c2, client, err := r.WithNewClient(ctx)
 	if err != nil || client == nil {
 		t.Fatalf("Could not create client: %v", err)
 	}
@@ -88,7 +88,7 @@
 	orig.CacheCtl(naming.DisableCache(true))
 
 	newroots := []string{"/newroot1", "/newroot2"}
-	c2, ns, err := r.SetNewNamespace(ctx, newroots...)
+	c2, ns, err := r.WithNewNamespace(ctx, newroots...)
 	if err != nil || ns == nil {
 		t.Fatalf("Could not create namespace: %v", err)
 	}
@@ -139,7 +139,7 @@
 	oldDebugDisp := r.GetReservedNameDispatcher(ctx)
 	newDebugDisp := debuglib.NewDispatcher(vlog.Log.LogDir, nil)
 
-	nctx := r.SetReservedNameDispatcher(ctx, newDebugDisp)
+	nctx := r.WithReservedNameDispatcher(ctx, newDebugDisp)
 	debugDisp := r.GetReservedNameDispatcher(nctx)
 
 	if debugDisp != newDebugDisp || debugDisp == oldDebugDisp {
diff --git a/profiles/internal/vtrace/vtrace.go b/profiles/internal/vtrace/vtrace.go
index cd30ff9..ed55e70 100644
--- a/profiles/internal/vtrace/vtrace.go
+++ b/profiles/internal/vtrace/vtrace.go
@@ -74,11 +74,11 @@
 // vtrace store.
 type manager struct{}
 
-// SetNewTrace creates a new vtrace context that is not the child of any
+// WithNewTrace creates a new vtrace context that is not the child of any
 // other span.  This is useful when starting operations that are
 // disconnected from the activity ctx is performing.  For example
 // this might be used to start background tasks.
-func (m manager) SetNewTrace(ctx *context.T) (*context.T, vtrace.Span) {
+func (m manager) WithNewTrace(ctx *context.T) (*context.T, vtrace.Span) {
 	id, err := uniqueid.Random()
 	if err != nil {
 		vlog.Errorf("vtrace: Couldn't generate Trace Id, debug data may be lost: %v", err)
@@ -88,11 +88,11 @@
 	return context.WithValue(ctx, spanKey, s), s
 }
 
-// SetContinuedTrace creates a span that represents a continuation of
+// WithContinuedTrace creates a span that represents a continuation of
 // a trace from a remote server.  name is the name of the new span and
 // req contains the parameters needed to connect this span with it's
 // trace.
-func (m manager) SetContinuedTrace(ctx *context.T, name string, req vtrace.Request) (*context.T, vtrace.Span) {
+func (m manager) WithContinuedTrace(ctx *context.T, name string, req vtrace.Request) (*context.T, vtrace.Span) {
 	st := getStore(ctx)
 	if req.Flags&vtrace.CollectInMemory != 0 {
 		st.ForceCollect(req.TraceId)
@@ -101,9 +101,9 @@
 	return context.WithValue(ctx, spanKey, newSpan), newSpan
 }
 
-// SetNewSpan derives a context with a new Span that can be used to
+// WithNewSpan derives a context with a new Span that can be used to
 // trace and annotate operations across process boundaries.
-func (m manager) SetNewSpan(ctx *context.T, name string) (*context.T, vtrace.Span) {
+func (m manager) WithNewSpan(ctx *context.T, name string) (*context.T, vtrace.Span) {
 	if curSpan := getSpan(ctx); curSpan != nil {
 		if curSpan.store == nil {
 			panic("nil store")
@@ -113,7 +113,7 @@
 	}
 
 	vlog.Error("vtrace: Creating a new child span from context with no existing span.")
-	return m.SetNewTrace(ctx)
+	return m.WithNewTrace(ctx)
 }
 
 // Span finds the currently active span.
diff --git a/profiles/internal/vtrace/vtrace_test.go b/profiles/internal/vtrace/vtrace_test.go
index 1054209..9e04fff 100644
--- a/profiles/internal/vtrace/vtrace_test.go
+++ b/profiles/internal/vtrace/vtrace_test.go
@@ -63,9 +63,9 @@
 func TestNewFromContext(t *testing.T) {
 	c0, shutdown, _ := initForTest(t)
 	defer shutdown()
-	c1, s1 := vtrace.SetNewSpan(c0, "s1")
-	c2, s2 := vtrace.SetNewSpan(c1, "s2")
-	c3, s3 := vtrace.SetNewSpan(c2, "s3")
+	c1, s1 := vtrace.WithNewSpan(c0, "s1")
+	c2, s2 := vtrace.WithNewSpan(c1, "s2")
+	c3, s3 := vtrace.WithNewSpan(c2, "s3")
 	expected := map[*context.T]vtrace.Span{
 		c1: s1,
 		c2: s2,
@@ -106,7 +106,7 @@
 }
 
 func runCallChain(t *testing.T, ctx *context.T, idp *testutil.IDProvider, force1, force2 bool) *vtrace.TraceRecord {
-	ctx, span := vtrace.SetNewSpan(ctx, "")
+	ctx, span := vtrace.WithNewSpan(ctx, "")
 	span.Annotate("c0-begin")
 	_, stop, err := makeChainedTestServers(ctx, idp, force1, force2)
 	if err != nil {
@@ -164,8 +164,8 @@
 	if err != nil {
 		return nil, err
 	}
-	ctx, _ = vtrace.SetNewTrace(ctx)
-	ctx, err = v23.SetPrincipal(ctx, principal)
+	ctx, _ = vtrace.WithNewTrace(ctx)
+	ctx, err = v23.WithPrincipal(ctx, principal)
 	if err != nil {
 		return nil, err
 	}
@@ -309,10 +309,10 @@
 	}
 	defer s.stop()
 
-	ctx, span := vtrace.SetNewTrace(ctx)
+	ctx, span := vtrace.WithNewTrace(ctx)
 	vtrace.ForceCollect(ctx)
 
-	ctx, client, err := v23.SetNewClient(ctx)
+	ctx, client, err := v23.WithNewClient(ctx)
 	if err != nil {
 		t.Fatalf("Couldn't create client %v", err)
 	}
@@ -367,7 +367,7 @@
 	idp.Bless(pserver, "server")
 
 	for _, tc := range cases {
-		ctx2 := v23.SetReservedNameDispatcher(ctx, debugDispatcher(tc.perms))
+		ctx2 := v23.WithReservedNameDispatcher(ctx, debugDispatcher(tc.perms))
 		if found := traceWithAuth(t, ctx2, pserver); found != tc.spans {
 			t.Errorf("got %v wanted %v for perms %s", found, tc.spans, tc.perms)
 		}
diff --git a/services/agent/agentd/main.go b/services/agent/agentd/main.go
index f5d69e0..c5a257d 100644
--- a/services/agent/agentd/main.go
+++ b/services/agent/agentd/main.go
@@ -106,7 +106,7 @@
 	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	if ctx, err = v23.SetPrincipal(ctx, p); err != nil {
+	if ctx, err = v23.WithPrincipal(ctx, p); err != nil {
 		vlog.Panic("failed to set principal for ctx: %v", err)
 	}
 
diff --git a/services/agent/agentlib/client.go b/services/agent/agentlib/client.go
index f6aaeba..4031de5 100644
--- a/services/agent/agentlib/client.go
+++ b/services/agent/agentlib/client.go
@@ -49,7 +49,7 @@
 }
 
 func (c *caller) startCall(name string, args ...interface{}) (rpc.ClientCall, error) {
-	ctx, _ := vtrace.SetNewTrace(c.ctx)
+	ctx, _ := vtrace.WithNewTrace(c.ctx)
 	// SecurityNone is safe here since we're using anonymous unix sockets.
 	return c.client.StartCall(ctx, c.name, name, args, options.SecurityNone, options.NoResolve{})
 }
diff --git a/services/application/applicationd/acl_test.go b/services/application/applicationd/acl_test.go
index bd7e3da..ecca68a 100644
--- a/services/application/applicationd/acl_test.go
+++ b/services/application/applicationd/acl_test.go
@@ -93,7 +93,7 @@
 	pid := servicetest.ReadPID(t, nmh)
 	defer syscall.Kill(pid, syscall.SIGINT)
 
-	otherCtx, err := v23.SetPrincipal(ctx, testutil.NewPrincipal())
+	otherCtx, err := v23.WithPrincipal(ctx, testutil.NewPrincipal())
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -235,7 +235,7 @@
 	storedir, cleanup := servicetest.SetupRootDir(t, "application")
 	defer cleanup()
 
-	otherCtx, err := v23.SetPrincipal(ctx, testutil.NewPrincipal())
+	otherCtx, err := v23.WithPrincipal(ctx, testutil.NewPrincipal())
 	if err != nil {
 		t.Fatal(err)
 	}
diff --git a/services/debug/debuglib/dispatcher_test.go b/services/debug/debuglib/dispatcher_test.go
index 6bc48d7..39e053f 100644
--- a/services/debug/debuglib/dispatcher_test.go
+++ b/services/debug/debuglib/dispatcher_test.go
@@ -61,7 +61,7 @@
 	defer shutdown()
 
 	tracedContext := func(ctx *context.T) *context.T {
-		ctx, _ = vtrace.SetNewTrace(ctx)
+		ctx, _ = vtrace.WithNewTrace(ctx)
 		vtrace.ForceCollect(ctx)
 		return ctx
 	}
diff --git a/services/device/internal/impl/app_service.go b/services/device/internal/impl/app_service.go
index 50bf4e5..4307bb6 100644
--- a/services/device/internal/impl/app_service.go
+++ b/services/device/internal/impl/app_service.go
@@ -495,7 +495,7 @@
 func agentPrincipal(ctx *context.T, conn *os.File) (security.Principal, func(), error) {
 	agentctx, cancel := context.WithCancel(ctx)
 	var err error
-	if agentctx, err = v23.SetNewStreamManager(agentctx); err != nil {
+	if agentctx, err = v23.WithNewStreamManager(agentctx); err != nil {
 		cancel()
 		conn.Close()
 		return nil, nil, err
diff --git a/services/device/internal/impl/impl_test.go b/services/device/internal/impl/impl_test.go
index df50364..5bd61ae 100644
--- a/services/device/internal/impl/impl_test.go
+++ b/services/device/internal/impl/impl_test.go
@@ -967,7 +967,7 @@
 	*envelope = envelopeFromShell(sh, nil, appCmd, "google naps", "trapp")
 
 	claimantCtx := ctxWithNewPrincipal(t, ctx, idp, "claimant")
-	octx, err := v23.SetPrincipal(ctx, testutil.NewPrincipal("other"))
+	octx, err := v23.WithPrincipal(ctx, testutil.NewPrincipal("other"))
 	if err != nil {
 		t.Fatal(err)
 	}
diff --git a/services/device/internal/impl/util_test.go b/services/device/internal/impl/util_test.go
index 3fe6f4c..3efb270 100644
--- a/services/device/internal/impl/util_test.go
+++ b/services/device/internal/impl/util_test.go
@@ -456,9 +456,9 @@
 }
 
 func ctxWithNewPrincipal(t *testing.T, ctx *context.T, idp *testutil.IDProvider, extension string) *context.T {
-	ret, err := v23.SetPrincipal(ctx, testutil.NewPrincipal())
+	ret, err := v23.WithPrincipal(ctx, testutil.NewPrincipal())
 	if err != nil {
-		t.Fatalf(testutil.FormatLogLine(2, "v23.SetPrincipal failed: %v", err))
+		t.Fatalf(testutil.FormatLogLine(2, "v23.WithPrincipal failed: %v", err))
 	}
 	if err := idp.Bless(v23.GetPrincipal(ret), extension); err != nil {
 		t.Fatalf(testutil.FormatLogLine(2, "idp.Bless(?, %q) failed: %v", extension, err))
diff --git a/services/device/internal/starter/starter.go b/services/device/internal/starter/starter.go
index 62d5744..4c059f9 100644
--- a/services/device/internal/starter/starter.go
+++ b/services/device/internal/starter/starter.go
@@ -147,7 +147,7 @@
 	// gets confused trying to reuse the old connection and doesn't attempt
 	// to create a new connection).  We should get to the bottom of it.
 	ctx, cancel := context.WithCancel(ctx)
-	if ctx, err = v23.SetNewStreamManager(ctx); err != nil {
+	if ctx, err = v23.WithNewStreamManager(ctx); err != nil {
 		cancel()
 		return nil, err
 	}
@@ -231,7 +231,7 @@
 
 	debugDisp := debuglib.NewDispatcher(vlog.Log.LogDir, debugAuth)
 
-	ctx = v23.SetReservedNameDispatcher(ctx, debugDisp)
+	ctx = v23.WithReservedNameDispatcher(ctx, debugDisp)
 
 	mtName, stopMT, err := startMounttable(ctx, args.Namespace)
 	if err != nil {
@@ -415,6 +415,6 @@
 		roots[i] = naming.JoinAddressName(ep, suffix)
 	}
 	vlog.Infof("Changing namespace roots from %v to %v", origroots, roots)
-	ctx, _, err := v23.SetNewNamespace(ctx, roots...)
+	ctx, _, err := v23.WithNewNamespace(ctx, roots...)
 	return ctx, err
 }
diff --git a/services/groups/internal/server/server_test.go b/services/groups/internal/server/server_test.go
index a01d355..0efc3b2 100644
--- a/services/groups/internal/server/server_test.go
+++ b/services/groups/internal/server/server_test.go
@@ -125,13 +125,13 @@
 		vlog.Fatal("cp.AddToRoots() failed: ", err)
 	}
 
-	clientCtx, err = v23.SetPrincipal(ctx, cp)
+	clientCtx, err = v23.WithPrincipal(ctx, cp)
 	if err != nil {
-		vlog.Fatal("v23.SetPrincipal() failed: ", err)
+		vlog.Fatal("v23.WithPrincipal() failed: ", err)
 	}
-	serverCtx, err := v23.SetPrincipal(ctx, sp)
+	serverCtx, err := v23.WithPrincipal(ctx, sp)
 	if err != nil {
-		vlog.Fatal("v23.SetPrincipal() failed: ", err)
+		vlog.Fatal("v23.WithPrincipal() failed: ", err)
 	}
 
 	serverName, stopServer := newServer(serverCtx)
diff --git a/services/identity/internal/server/identityd.go b/services/identity/internal/server/identityd.go
index cb8bce1..f1f0cda 100644
--- a/services/identity/internal/server/identityd.go
+++ b/services/identity/internal/server/identityd.go
@@ -108,7 +108,7 @@
 }
 
 func (s *IdentityServer) Serve(ctx *context.T, listenSpec *rpc.ListenSpec, externalHttpAddr, httpAddr, tlsConfig string) {
-	ctx, err := v23.SetPrincipal(ctx, audit.NewPrincipal(
+	ctx, err := v23.WithPrincipal(ctx, audit.NewPrincipal(
 		v23.GetPrincipal(ctx), s.auditor))
 	if err != nil {
 		vlog.Panic(err)
diff --git a/services/internal/binarylib/acl_test.go b/services/internal/binarylib/acl_test.go
index 27be6a5..c338de1 100644
--- a/services/internal/binarylib/acl_test.go
+++ b/services/internal/binarylib/acl_test.go
@@ -84,7 +84,7 @@
 	if err := vsecurity.SetDefaultBlessings(child, b); err != nil {
 		return nil, err
 	}
-	return v23.SetPrincipal(ctx, child)
+	return v23.WithPrincipal(ctx, child)
 }
 
 func TestBinaryCreateAccessList(t *testing.T) {
@@ -92,13 +92,13 @@
 	defer shutdown()
 	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
-	selfCtx, err := v23.SetPrincipal(ctx, testutil.NewPrincipal("self"))
+	selfCtx, err := v23.WithPrincipal(ctx, testutil.NewPrincipal("self"))
 	if err != nil {
-		t.Fatalf("SetPrincipal failed: %v", err)
+		t.Fatalf("WithPrincipal failed: %v", err)
 	}
 	childCtx, err := ctxWithBlessedPrincipal(selfCtx, "child")
 	if err != nil {
-		t.Fatalf("SetPrincipal failed: %v", err)
+		t.Fatalf("WithPrincipal failed: %v", err)
 	}
 
 	sh, deferFn := servicetest.CreateShellAndMountTable(t, childCtx, v23.GetPrincipal(childCtx))
@@ -148,9 +148,9 @@
 	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	selfPrincipal := testutil.NewPrincipal("self")
-	selfCtx, err := v23.SetPrincipal(ctx, selfPrincipal)
+	selfCtx, err := v23.WithPrincipal(ctx, selfPrincipal)
 	if err != nil {
-		t.Fatalf("SetPrincipal failed: %v", err)
+		t.Fatalf("WithPrincipal failed: %v", err)
 	}
 	sh, deferFn := servicetest.CreateShellAndMountTable(t, selfCtx, v23.GetPrincipal(selfCtx))
 	defer deferFn()
@@ -164,9 +164,9 @@
 	if err := otherPrincipal.AddToRoots(selfPrincipal.BlessingStore().Default()); err != nil {
 		t.Fatalf("otherPrincipal.AddToRoots() failed: %v", err)
 	}
-	otherCtx, err := v23.SetPrincipal(selfCtx, otherPrincipal)
+	otherCtx, err := v23.WithPrincipal(selfCtx, otherPrincipal)
 	if err != nil {
-		t.Fatalf("SetPrincipal() failed: %v", err)
+		t.Fatalf("WithPrincipal() failed: %v", err)
 	}
 
 	nmh := servicetest.RunCommand(t, sh, nil, binaryCmd, "bini", storedir)
@@ -432,9 +432,9 @@
 	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	selfPrincipal := testutil.NewPrincipal("self")
-	selfCtx, err := v23.SetPrincipal(ctx, selfPrincipal)
+	selfCtx, err := v23.WithPrincipal(ctx, selfPrincipal)
 	if err != nil {
-		t.Fatalf("SetPrincipal failed: %v", err)
+		t.Fatalf("WithPrincipal failed: %v", err)
 	}
 	sh, deferFn := servicetest.CreateShellAndMountTable(t, selfCtx, v23.GetPrincipal(selfCtx))
 	defer deferFn()
diff --git a/services/internal/pproflib/proxy.go b/services/internal/pproflib/proxy.go
index edd7414..4226395 100644
--- a/services/internal/pproflib/proxy.go
+++ b/services/internal/pproflib/proxy.go
@@ -72,7 +72,7 @@
 		}
 	}
 	c := pprof.PProfClient(p.name)
-	ctx, _ := vtrace.SetNewTrace(p.ctx)
+	ctx, _ := vtrace.WithNewTrace(p.ctx)
 	profiles, err := c.Profiles(ctx)
 	if err != nil {
 		replyUnavailable(w, err)
@@ -90,7 +90,7 @@
 	w.Header().Set("Content-Type", "text/plain; charset=utf-8")
 	debug, _ := strconv.Atoi(r.FormValue("debug"))
 	c := pprof.PProfClient(p.name)
-	ctx, _ := vtrace.SetNewTrace(p.ctx)
+	ctx, _ := vtrace.WithNewTrace(p.ctx)
 	prof, err := c.Profile(ctx, name, int32(debug))
 	if err != nil {
 		replyUnavailable(w, err)
@@ -121,7 +121,7 @@
 	}
 	w.Header().Set("Content-Type", "application/octet-stream")
 	c := pprof.PProfClient(p.name)
-	ctx, _ := vtrace.SetNewTrace(p.ctx)
+	ctx, _ := vtrace.WithNewTrace(p.ctx)
 	prof, err := c.CpuProfile(ctx, int32(sec))
 	if err != nil {
 		replyUnavailable(w, err)
@@ -147,7 +147,7 @@
 // cmdLine replies with the command-line arguments of the process.
 func (p *proxy) cmdLine(w http.ResponseWriter, r *http.Request) {
 	c := pprof.PProfClient(p.name)
-	ctx, _ := vtrace.SetNewTrace(p.ctx)
+	ctx, _ := vtrace.WithNewTrace(p.ctx)
 	cmdline, err := c.CmdLine(ctx)
 	if err != nil {
 		replyUnavailable(w, err)
@@ -185,7 +185,7 @@
 		}
 	}
 	c := pprof.PProfClient(p.name)
-	ctx, _ := vtrace.SetNewTrace(p.ctx)
+	ctx, _ := vtrace.WithNewTrace(p.ctx)
 	pcMap, err := c.Symbol(ctx, pcList)
 	if err != nil {
 		replyUnavailable(w, err)
diff --git a/services/internal/vtracelib/vtrace_test.go b/services/internal/vtracelib/vtrace_test.go
index dd159b0..5810caf 100644
--- a/services/internal/vtracelib/vtrace_test.go
+++ b/services/internal/vtracelib/vtrace_test.go
@@ -35,14 +35,14 @@
 		t.Fatalf("Serve failed: %s", err)
 	}
 
-	sctx, span := vtrace.SetNewSpan(ctx, "The Span")
+	sctx, span := vtrace.WithNewSpan(ctx, "The Span")
 	vtrace.ForceCollect(sctx)
 	span.Finish()
 	id := span.Trace()
 
 	client := s_vtrace.StoreClient(endpoints[0].Name())
 
-	sctx, _ = vtrace.SetNewTrace(sctx)
+	sctx, _ = vtrace.WithNewTrace(sctx)
 	trace, err := client.Trace(sctx, id)
 	if err != nil {
 		t.Fatalf("Unexpected error getting trace: %s", err)
@@ -54,7 +54,7 @@
 		t.Errorf("Returned span has wrong name: %#v", trace)
 	}
 
-	sctx, _ = vtrace.SetNewTrace(sctx)
+	sctx, _ = vtrace.WithNewTrace(sctx)
 	call, err := client.AllTraces(sctx)
 	if err != nil {
 		t.Fatalf("Unexpected error getting traces: %s", err)
diff --git a/services/mounttable/mounttablelib/mounttable_test.go b/services/mounttable/mounttablelib/mounttable_test.go
index 88dcd40..7cfbf17 100644
--- a/services/mounttable/mounttablelib/mounttable_test.go
+++ b/services/mounttable/mounttablelib/mounttable_test.go
@@ -179,7 +179,7 @@
 
 func newMT(t *testing.T, acl string, rootCtx *context.T) (rpc.Server, string) {
 	reservedDisp := debuglib.NewDispatcher(vlog.Log.LogDir, nil)
-	ctx := v23.SetReservedNameDispatcher(rootCtx, reservedDisp)
+	ctx := v23.WithReservedNameDispatcher(rootCtx, reservedDisp)
 	server, err := v23.NewServer(ctx, options.ServesMountTable(true))
 	if err != nil {
 		boom(t, "r.NewServer: %s", err)
@@ -719,13 +719,13 @@
 	test.Init()
 	ctx, shutdown := test.InitForTest()
 	var err error
-	if rootCtx, err = v23.SetPrincipal(ctx, testutil.NewPrincipal("root")); err != nil {
+	if rootCtx, err = v23.WithPrincipal(ctx, testutil.NewPrincipal("root")); err != nil {
 		panic("failed to set root principal")
 	}
-	if aliceCtx, err = v23.SetPrincipal(ctx, testutil.NewPrincipal("alice")); err != nil {
+	if aliceCtx, err = v23.WithPrincipal(ctx, testutil.NewPrincipal("alice")); err != nil {
 		panic("failed to set alice principal")
 	}
-	if bobCtx, err = v23.SetPrincipal(ctx, testutil.NewPrincipal("bob")); err != nil {
+	if bobCtx, err = v23.WithPrincipal(ctx, testutil.NewPrincipal("bob")); err != nil {
 		panic("failed to set bob principal")
 	}
 	for _, r := range []*context.T{rootCtx, aliceCtx, bobCtx} {
diff --git a/services/role/roled/internal/role_test.go b/services/role/roled/internal/role_test.go
index c8a3203..630a715 100644
--- a/services/role/roled/internal/role_test.go
+++ b/services/role/roled/internal/role_test.go
@@ -266,9 +266,9 @@
 		t.Fatal("security.UnionOfBlessings failed: %v", err)
 	}
 	vsecurity.SetDefaultBlessings(principal, bUnion)
-	ctx, err = v23.SetPrincipal(ctx, principal)
+	ctx, err = v23.WithPrincipal(ctx, principal)
 	if err != nil {
-		t.Fatal("v23.SetPrincipal failed: %v", err)
+		t.Fatal("v23.WithPrincipal failed: %v", err)
 	}
 	return ctx
 }
diff --git a/services/wspr/browsprd/main_nacl.go b/services/wspr/browsprd/main_nacl.go
index d421119..6ef3a7d 100644
--- a/services/wspr/browsprd/main_nacl.go
+++ b/services/wspr/browsprd/main_nacl.go
@@ -235,7 +235,7 @@
 	// TODO(suharshs,mattr): Should we worried about not shutting down here?
 	ctx, _ := v23.Init()
 
-	ctx, err = v23.SetPrincipal(ctx, principal)
+	ctx, err = v23.WithPrincipal(ctx, principal)
 	if err != nil {
 		return nil, err
 	}
diff --git a/services/wspr/internal/app/app.go b/services/wspr/internal/app/app.go
index ab6dd87..8293a67 100644
--- a/services/wspr/internal/app/app.go
+++ b/services/wspr/internal/app/app.go
@@ -107,15 +107,15 @@
 
 	if namespaceRoots != nil {
 		var err error
-		ctx, _, err = v23.SetNewNamespace(ctx, namespaceRoots...)
+		ctx, _, err = v23.WithNewNamespace(ctx, namespaceRoots...)
 		if err != nil {
 			return nil, err
 		}
 	}
 
-	ctx, _ = vtrace.SetNewTrace(ctx)
+	ctx, _ = vtrace.WithNewTrace(ctx)
 
-	ctx, err := v23.SetPrincipal(ctx, p)
+	ctx, err := v23.WithPrincipal(ctx, p)
 	if err != nil {
 		return nil, err
 	}
@@ -509,7 +509,7 @@
 	}
 	vlog.VI(2).Infof("Rpc: %s.%s(..., streaming=%v)", msg.Name, msg.Method, msg.IsStreaming)
 	spanName := fmt.Sprintf("<wspr>%q.%s", msg.Name, msg.Method)
-	ctx, span := vtrace.SetContinuedTrace(ctx, spanName, msg.TraceRequest)
+	ctx, span := vtrace.WithContinuedTrace(ctx, spanName, msg.TraceRequest)
 
 	var cctx *context.T
 	var cancel context.CancelFunc
diff --git a/services/wspr/internal/app/messaging.go b/services/wspr/internal/app/messaging.go
index 703d802..4b3c75a 100644
--- a/services/wspr/internal/app/messaging.go
+++ b/services/wspr/internal/app/messaging.go
@@ -98,7 +98,7 @@
 // HandleIncomingMessage handles most incoming messages from JS and calls the appropriate handler.
 func (c *Controller) HandleIncomingMessage(msg Message, w lib.ClientWriter) {
 	// TODO(mattr): Get the proper context information from javascript.
-	ctx, _ := vtrace.SetNewTrace(c.Context())
+	ctx, _ := vtrace.WithNewTrace(c.Context())
 
 	switch msg.Type {
 	case VeyronRequestMessage:
diff --git a/services/wspr/internal/browspr/browspr.go b/services/wspr/internal/browspr/browspr.go
index 97bc317..5052ed5 100644
--- a/services/wspr/internal/browspr/browspr.go
+++ b/services/wspr/internal/browspr/browspr.go
@@ -143,7 +143,7 @@
 		return nil, fmt.Errorf("HandleAuthCreateAccountRpc did not receive CreateAccountMessage, received: %v, %v", val, err)
 	}
 
-	ctx, _ := vtrace.SetNewTrace(b.ctx)
+	ctx, _ := vtrace.WithNewTrace(b.ctx)
 	account, err := b.accountManager.CreateAccount(ctx, msg.Token)
 	if err != nil {
 		return nil, err
diff --git a/test/init.go b/test/init.go
index 9ccd085..f01b1df 100644
--- a/test/init.go
+++ b/test/init.go
@@ -73,7 +73,7 @@
 		return ctx, shutdown
 	}
 	var err error
-	if ctx, err = v23.SetPrincipal(ctx, testutil.NewPrincipal(TestBlessing)); err != nil {
+	if ctx, err = v23.WithPrincipal(ctx, testutil.NewPrincipal(TestBlessing)); err != nil {
 		panic(err)
 	}
 	return ctx, shutdown
diff --git a/test/modules/shell.go b/test/modules/shell.go
index 8ae6194..a51a231 100644
--- a/test/modules/shell.go
+++ b/test/modules/shell.go
@@ -224,7 +224,7 @@
 	}
 	var err error
 	ctx, sh.cancelCtx = context.WithCancel(ctx)
-	if ctx, err = v23.SetNewStreamManager(ctx); err != nil {
+	if ctx, err = v23.WithNewStreamManager(ctx); err != nil {
 		return nil, err
 	}
 	sh.ctx = ctx
diff --git a/test/v23tests/v23tests.go b/test/v23tests/v23tests.go
index caf7fc9..0f95521 100644
--- a/test/v23tests/v23tests.go
+++ b/test/v23tests/v23tests.go
@@ -502,7 +502,7 @@
 
 	vlog.Infof("creating root principal")
 	principal := testutil.NewPrincipal("root")
-	ctx, err := v23.SetPrincipal(ctx, principal)
+	ctx, err := v23.WithPrincipal(ctx, principal)
 	if err != nil {
 		t.Fatalf("failed to set principal: %v", err)
 	}