diff --git a/runtimes/google/README b/runtimes/google/README
index 819745c..875a4e1 100644
--- a/runtimes/google/README
+++ b/runtimes/google/README
@@ -1,2 +1,2 @@
 This directory and all of its subdirectories contain an implementation of the
-public APIs defined in veyron2.
+public APIs defined in v23.
diff --git a/runtimes/google/ipc/benchmark/benchmark_test.go b/runtimes/google/ipc/benchmark/benchmark_test.go
index 67e36c5..d8d16d3 100644
--- a/runtimes/google/ipc/benchmark/benchmark_test.go
+++ b/runtimes/google/ipc/benchmark/benchmark_test.go
@@ -8,8 +8,8 @@
 	"v.io/core/veyron/lib/testutil/benchmark"
 	_ "v.io/core/veyron/profiles/static"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 )
 
 var (
@@ -103,11 +103,11 @@
 func TestMain(m *testing.M) {
 	// We do not use defer here since this program will exit at the end of
 	// this function through os.Exit().
-	var shutdown veyron2.Shutdown
+	var shutdown v23.Shutdown
 	ctx, shutdown = testutil.InitForTest()
 
 	var serverStop func()
-	serverAddr, serverStop = StartServer(ctx, veyron2.GetListenSpec(ctx))
+	serverAddr, serverStop = StartServer(ctx, v23.GetListenSpec(ctx))
 
 	// Create a VC to exclude the VC setup time from the benchmark.
 	CallEcho(&testing.B{}, ctx, serverAddr, 1, 0, benchmark.NewStats(1))
diff --git a/runtimes/google/ipc/benchmark/bmclient/main.go b/runtimes/google/ipc/benchmark/bmclient/main.go
index f3145cf..fdba600 100644
--- a/runtimes/google/ipc/benchmark/bmclient/main.go
+++ b/runtimes/google/ipc/benchmark/bmclient/main.go
@@ -12,8 +12,8 @@
 	_ "v.io/core/veyron/profiles"
 	"v.io/core/veyron/runtimes/google/ipc/benchmark"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/vlog"
 )
 
 var (
@@ -28,7 +28,7 @@
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	if *chunkCntMux > 0 && *payloadSizeMux > 0 {
diff --git a/runtimes/google/ipc/benchmark/bmserver/main.go b/runtimes/google/ipc/benchmark/bmserver/main.go
index 85e915d..35a374c 100644
--- a/runtimes/google/ipc/benchmark/bmserver/main.go
+++ b/runtimes/google/ipc/benchmark/bmserver/main.go
@@ -6,15 +6,15 @@
 	_ "v.io/core/veyron/profiles/roaming"
 	"v.io/core/veyron/runtimes/google/ipc/benchmark"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/vlog"
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	addr, stop := benchmark.StartServer(ctx, veyron2.GetListenSpec(ctx))
+	addr, stop := benchmark.StartServer(ctx, v23.GetListenSpec(ctx))
 	vlog.Infof("Listening on %s", addr)
 	defer stop()
 	<-signals.ShutdownOnSignals(ctx)
diff --git a/runtimes/google/ipc/benchmark/client.go b/runtimes/google/ipc/benchmark/client.go
index c29f942..3a6fbef 100644
--- a/runtimes/google/ipc/benchmark/client.go
+++ b/runtimes/google/ipc/benchmark/client.go
@@ -8,8 +8,8 @@
 
 	"v.io/core/veyron/lib/testutil/benchmark"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/vlog"
 )
 
 // CallEcho calls 'Echo' method 'iterations' times with the given payload size.
diff --git a/runtimes/google/ipc/benchmark/glob/glob_test.go b/runtimes/google/ipc/benchmark/glob/glob_test.go
index e23a809..46a7306 100644
--- a/runtimes/google/ipc/benchmark/glob/glob_test.go
+++ b/runtimes/google/ipc/benchmark/glob/glob_test.go
@@ -4,11 +4,11 @@
 	"fmt"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -79,11 +79,11 @@
 }
 
 func startServer(b *testing.B, ctx *context.T, obj interface{}) (string, func(), error) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		return "", nil, fmt.Errorf("failed to start server: %v", err)
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		return "", nil, fmt.Errorf("failed to listen: %v", err)
 	}
@@ -133,7 +133,7 @@
 }
 
 func globClient(b *testing.B, ctx *context.T, name string) (int, error) {
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, ipc.GlobMethod, []interface{}{"*"})
 	if err != nil {
 		return 0, err
diff --git a/runtimes/google/ipc/benchmark/server.go b/runtimes/google/ipc/benchmark/server.go
index 65926a4..6c5696a 100644
--- a/runtimes/google/ipc/benchmark/server.go
+++ b/runtimes/google/ipc/benchmark/server.go
@@ -3,10 +3,10 @@
 import (
 	"v.io/core/veyron/security/flag"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/vlog"
 )
 
 type impl struct {
@@ -32,7 +32,7 @@
 // server listens to the given protocol and address, and returns the veyron
 // address of the server and a callback function to stop the server.
 func StartServer(ctx *context.T, listenSpec ipc.ListenSpec) (string, func()) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Fatalf("NewServer failed: %v", err)
 	}
diff --git a/runtimes/google/ipc/benchmark/service.vdl b/runtimes/google/ipc/benchmark/service.vdl
index 3f42b77..3e9f0ea 100644
--- a/runtimes/google/ipc/benchmark/service.vdl
+++ b/runtimes/google/ipc/benchmark/service.vdl
@@ -3,7 +3,7 @@
 package benchmark
 
 import (
-	"v.io/core/veyron2/services/security/access"
+	"v.io/v23/services/security/access"
 )
 
 type Benchmark interface {
diff --git a/runtimes/google/ipc/benchmark/service.vdl.go b/runtimes/google/ipc/benchmark/service.vdl.go
index 97bc4d0..8f1c1e9 100644
--- a/runtimes/google/ipc/benchmark/service.vdl.go
+++ b/runtimes/google/ipc/benchmark/service.vdl.go
@@ -8,13 +8,13 @@
 import (
 	// VDL system imports
 	"io"
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/vdl"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/vdl"
 
 	// VDL user imports
-	"v.io/core/veyron2/services/security/access"
+	"v.io/v23/services/security/access"
 )
 
 // BenchmarkClientMethods is the client interface
@@ -52,7 +52,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implBenchmarkClientStub) Echo(ctx *context.T, i0 []byte, opts ...ipc.CallOpt) (o0 []byte, err error) {
diff --git a/runtimes/google/ipc/blessings_cache.go b/runtimes/google/ipc/blessings_cache.go
index 1c19b40..ac71eee 100644
--- a/runtimes/google/ipc/blessings_cache.go
+++ b/runtimes/google/ipc/blessings_cache.go
@@ -7,8 +7,8 @@
 	"sync"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
 )
 
 // clientEncodeBlessings gets or inserts the blessings into the cache.
diff --git a/runtimes/google/ipc/cancel_test.go b/runtimes/google/ipc/cancel_test.go
index a528795..4883bb3 100644
--- a/runtimes/google/ipc/cancel_test.go
+++ b/runtimes/google/ipc/cancel_test.go
@@ -7,11 +7,11 @@
 	tnaming "v.io/core/veyron/runtimes/google/testing/mocks/naming"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 )
 
 type fakeAuthorizer int
diff --git a/runtimes/google/ipc/client.go b/runtimes/google/ipc/client.go
index eeb9ef5..9eee69b 100644
--- a/runtimes/google/ipc/client.go
+++ b/runtimes/google/ipc/client.go
@@ -12,17 +12,17 @@
 	"time"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/i18n"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vom"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/context"
+	"v.io/v23/i18n"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/vdl"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
+	"v.io/v23/vom"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream/vc"
 	"v.io/core/veyron/runtimes/google/ipc/version"
diff --git a/runtimes/google/ipc/client_test.go b/runtimes/google/ipc/client_test.go
index 1fa37b7..8ec67b2 100644
--- a/runtimes/google/ipc/client_test.go
+++ b/runtimes/google/ipc/client_test.go
@@ -10,13 +10,13 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/flags/consts"
@@ -32,9 +32,9 @@
 	modules.RegisterChild("ping", "<name>", childPing)
 }
 
-func newCtx() (*context.T, veyron2.Shutdown) {
+func newCtx() (*context.T, v23.Shutdown) {
 	ctx, shutdown := testutil.InitForTest()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 	return ctx, shutdown
 }
 
@@ -70,7 +70,7 @@
 		t.Fatalf("%s", rootSession.Error())
 	}
 	sh.SetVar(consts.NamespaceRootPrefix, rootName)
-	if err = veyron2.GetNamespace(ctx).SetRoots(rootName); err != nil {
+	if err = v23.GetNamespace(ctx).SetRoots(rootName); err != nil {
 		t.Fatalf("unexpected error setting namespace roots: %s", err)
 	}
 
@@ -91,7 +91,7 @@
 }
 
 func numServers(t *testing.T, ctx *context.T, name string) int {
-	me, err := veyron2.GetNamespace(ctx).Resolve(ctx, name)
+	me, err := v23.GetNamespace(ctx).Resolve(ctx, name)
 	if err != nil {
 		return 0
 	}
@@ -126,7 +126,7 @@
 		// 203.0.113.0 is TEST-NET-3 from RFC5737
 		ep := naming.FormatEndpoint("tcp", fmt.Sprintf("203.0.113.%d:443", i))
 		n := naming.JoinAddressName(ep, "")
-		if err := veyron2.GetNamespace(ctx).Mount(ctx, "echoServer", n, time.Hour); err != nil {
+		if err := v23.GetNamespace(ctx).Mount(ctx, "echoServer", n, time.Hour); err != nil {
 			t.Fatalf("unexpected error: %s", err)
 		}
 	}
@@ -157,7 +157,7 @@
 	defer shutdown()
 	ctx, _ = context.WithTimeout(ctx, 100*time.Millisecond)
 	name := naming.JoinAddressName(naming.FormatEndpoint("tcp", "203.0.113.10:443"), "")
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	_, err := client.StartCall(ctx, name, "echo", []interface{}{"args don't matter"})
 	if !verror.Is(err, verror.ErrTimeout.ID) {
 		t.Fatalf("wrong error: %s", err)
@@ -167,10 +167,10 @@
 func childPing(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	name := args[0]
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Ping", nil)
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Ping", nil)
 	if err != nil {
 		fmt.Errorf("unexpected error: %s", err)
 	}
@@ -183,14 +183,14 @@
 }
 
 func initServer(t *testing.T, ctx *context.T) (string, func()) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
 	done := make(chan struct{})
 	deferFn := func() { close(done); server.Stop() }
 
-	eps, err := server.Listen(veyron2.GetListenSpec(ctx))
+	eps, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
@@ -219,7 +219,7 @@
 	name, fn := initServer(t, ctx)
 	defer fn()
 	ctx, _ = context.WithTimeout(ctx, time.Millisecond)
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
 	if err != nil {
 		testForVerror(t, err, verror.ErrTimeout)
 		return
@@ -234,14 +234,14 @@
 	name, fn := initServer(t, ctx)
 	defer fn()
 
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Sleep", []interface{}{"too many args"})
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Sleep", []interface{}{"too many args"})
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
 	err = call.Finish()
 	testForVerror(t, err, verror.ErrBadProtocol)
 
-	call, err = veyron2.GetClient(ctx).StartCall(ctx, name, "Ping", nil)
+	call, err = v23.GetClient(ctx).StartCall(ctx, name, "Ping", nil)
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
@@ -258,11 +258,11 @@
 	name, fn := initServer(t, ctx)
 	defer fn()
 
-	ctx1, err := veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal("test-blessing"))
+	ctx1, err := v23.SetPrincipal(ctx, tsecurity.NewPrincipal("test-blessing"))
 	if err != nil {
 		t.Fatal(err)
 	}
-	call, err := veyron2.GetClient(ctx1).StartCall(ctx1, name, "Sleep", nil)
+	call, err := v23.GetClient(ctx1).StartCall(ctx1, name, "Sleep", nil)
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
@@ -277,7 +277,7 @@
 	defer fn()
 
 	ctx, cancel := context.WithCancel(ctx)
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
@@ -295,7 +295,7 @@
 	defer fn()
 
 	ctx, cancel := context.WithCancel(ctx)
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
@@ -328,7 +328,7 @@
 	}
 	go startServer()
 
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Echo", []interface{}{"hello"})
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Echo", []interface{}{"hello"})
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
@@ -370,7 +370,7 @@
 
 	want := 10
 	ctx, _ = context.WithTimeout(ctx, 300*time.Millisecond)
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Source", []interface{}{want})
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Source", []interface{}{want})
 	if err != nil {
 		if !verror.Is(err, verror.ErrTimeout.ID) {
 			t.Fatalf("verror should be a timeout not %s: stack %s",
@@ -403,7 +403,7 @@
 	name, fn := initServer(t, ctx)
 	defer fn()
 
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Sink", nil)
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Sink", nil)
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
@@ -435,7 +435,7 @@
 	defer fn()
 	name := "noservers"
 	ctx, _ = context.WithTimeout(ctx, 1000*time.Millisecond)
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
 	if err != nil {
 		testForVerror(t, err, verror.ErrNoServers)
 		return
@@ -447,12 +447,12 @@
 func TestNoMountTable(t *testing.T) {
 	ctx, shutdown := newCtx()
 	defer shutdown()
-	veyron2.GetNamespace(ctx).SetRoots()
+	v23.GetNamespace(ctx).SetRoots()
 	name := "a_mount_table_entry"
 
 	// If there is no mount table, then we'll get a NoServers error message.
 	ctx, _ = context.WithTimeout(ctx, 300*time.Millisecond)
-	_, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
+	_, err := v23.GetClient(ctx).StartCall(ctx, name, "Sleep", nil)
 	testForVerror(t, err, verror.ErrNoServers)
 }
 
@@ -463,7 +463,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	sh, err := modules.NewShell(ctx, veyron2.GetPrincipal(ctx))
+	sh, err := modules.NewShell(ctx, v23.GetPrincipal(ctx))
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
@@ -480,7 +480,7 @@
 
 	makeCall := func(ctx *context.T, opts ...ipc.CallOpt) (string, error) {
 		ctx, _ = context.WithDeadline(ctx, time.Now().Add(10*time.Second))
-		call, err := veyron2.GetClient(ctx).StartCall(ctx, serverName, "Echo", []interface{}{"bratman"}, opts...)
+		call, err := v23.GetClient(ctx).StartCall(ctx, serverName, "Echo", []interface{}{"bratman"}, opts...)
 		if err != nil {
 			return "", fmt.Errorf("START: %s", err)
 		}
diff --git a/runtimes/google/ipc/debug_test.go b/runtimes/google/ipc/debug_test.go
index e53554a..ec76b6d 100644
--- a/runtimes/google/ipc/debug_test.go
+++ b/runtimes/google/ipc/debug_test.go
@@ -6,10 +6,10 @@
 	"sort"
 	"testing"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/stats"
 	tsecurity "v.io/core/veyron/lib/testutil/security"
diff --git a/runtimes/google/ipc/default_authorizer.go b/runtimes/google/ipc/default_authorizer.go
index 8fed8d9..6785793 100644
--- a/runtimes/google/ipc/default_authorizer.go
+++ b/runtimes/google/ipc/default_authorizer.go
@@ -1,7 +1,7 @@
 package ipc
 
 import (
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // defaultAuthorizer implements a security.Authorizer with an authorization
diff --git a/runtimes/google/ipc/default_authorizer_test.go b/runtimes/google/ipc/default_authorizer_test.go
index 45af448..bbd19e7 100644
--- a/runtimes/google/ipc/default_authorizer_test.go
+++ b/runtimes/google/ipc/default_authorizer_test.go
@@ -4,9 +4,9 @@
 	"testing"
 
 	vsecurity "v.io/core/veyron/security"
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/security"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/security"
 )
 
 func TestDefaultAuthorizer(t *testing.T) {
@@ -75,7 +75,7 @@
 			U(bob, B(che, "family")),
 			true}, // {ali, bob/friend, che/friend} talking to {bob, che/family}
 	}
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 	for _, test := range tests {
 		err := authorizer.Authorize(&mockSecurityContext{
diff --git a/runtimes/google/ipc/discharges.go b/runtimes/google/ipc/discharges.go
index c3db3fa..dab6861 100644
--- a/runtimes/google/ipc/discharges.go
+++ b/runtimes/google/ipc/discharges.go
@@ -5,12 +5,12 @@
 
 	"v.io/core/veyron/runtimes/google/ipc/stream/vc"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/vdl"
+	"v.io/v23/vlog"
+	"v.io/v23/vtrace"
 )
 
 // discharger implements vc.DischargeClient.
diff --git a/runtimes/google/ipc/errors.vdl b/runtimes/google/ipc/errors.vdl
index 8a1118c..e3b55e3 100644
--- a/runtimes/google/ipc/errors.vdl
+++ b/runtimes/google/ipc/errors.vdl
@@ -1,6 +1,6 @@
 package ipc
 
-import "v.io/core/veyron2/security"
+import "v.io/v23/security"
 
 error (
 	InvalidBlessings(remote []string, remoteErr []security.RejectedBlessing, local []string, localErr []security.RejectedBlessing) {
diff --git a/runtimes/google/ipc/errors.vdl.go b/runtimes/google/ipc/errors.vdl.go
index 820833a..be47167 100644
--- a/runtimes/google/ipc/errors.vdl.go
+++ b/runtimes/google/ipc/errors.vdl.go
@@ -5,12 +5,12 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/i18n"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/context"
+	"v.io/v23/i18n"
+	"v.io/v23/verror"
 
 	// VDL user imports
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 var (
diff --git a/runtimes/google/ipc/full_test.go b/runtimes/google/ipc/full_test.go
index 811c8b9..13d3b1e 100644
--- a/runtimes/google/ipc/full_test.go
+++ b/runtimes/google/ipc/full_test.go
@@ -16,17 +16,17 @@
 	"time"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/uniqueid"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/uniqueid"
+	"v.io/v23/vdl"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/flags"
 	"v.io/core/veyron/lib/netstate"
diff --git a/runtimes/google/ipc/glob_test.go b/runtimes/google/ipc/glob_test.go
index 9d6fd45..4ae5dd2 100644
--- a/runtimes/google/ipc/glob_test.go
+++ b/runtimes/google/ipc/glob_test.go
@@ -6,11 +6,11 @@
 	"strings"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
 
 	"v.io/core/veyron/lib/glob"
 	"v.io/core/veyron/lib/testutil"
@@ -18,11 +18,11 @@
 )
 
 func startServer(ctx *context.T, tree *node) (string, func(), error) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		return "", nil, fmt.Errorf("failed to start debug server: %v", err)
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		return "", nil, fmt.Errorf("failed to listen: %v", err)
 	}
diff --git a/runtimes/google/ipc/protocols/tcp/init.go b/runtimes/google/ipc/protocols/tcp/init.go
index 9010368..e1b0891 100644
--- a/runtimes/google/ipc/protocols/tcp/init.go
+++ b/runtimes/google/ipc/protocols/tcp/init.go
@@ -6,8 +6,8 @@
 
 	"v.io/core/veyron/lib/tcputil"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/vlog"
 )
 
 func init() {
diff --git a/runtimes/google/ipc/protocols/ws/init.go b/runtimes/google/ipc/protocols/ws/init.go
index 0ad45b5..f218ca0 100644
--- a/runtimes/google/ipc/protocols/ws/init.go
+++ b/runtimes/google/ipc/protocols/ws/init.go
@@ -1,7 +1,7 @@
 package websocket
 
 import (
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 
 	"v.io/core/veyron/lib/websocket"
 )
diff --git a/runtimes/google/ipc/protocols/wsh/init.go b/runtimes/google/ipc/protocols/wsh/init.go
index 7345adf..146a723 100644
--- a/runtimes/google/ipc/protocols/wsh/init.go
+++ b/runtimes/google/ipc/protocols/wsh/init.go
@@ -3,7 +3,7 @@
 package wsh
 
 import (
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 
 	"v.io/core/veyron/lib/websocket"
 )
diff --git a/runtimes/google/ipc/protocols/wsh_nacl/init.go b/runtimes/google/ipc/protocols/wsh_nacl/init.go
index cd10734..a038a6d 100644
--- a/runtimes/google/ipc/protocols/wsh_nacl/init.go
+++ b/runtimes/google/ipc/protocols/wsh_nacl/init.go
@@ -3,7 +3,7 @@
 package wsh_nacl
 
 import (
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 
 	"v.io/core/veyron/lib/websocket"
 )
diff --git a/runtimes/google/ipc/proxy_test.go b/runtimes/google/ipc/proxy_test.go
index 3606d46..4ac7f3c 100644
--- a/runtimes/google/ipc/proxy_test.go
+++ b/runtimes/google/ipc/proxy_test.go
@@ -9,13 +9,13 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/verror"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/flags"
diff --git a/runtimes/google/ipc/reserved.go b/runtimes/google/ipc/reserved.go
index 3ea6276..409ca18 100644
--- a/runtimes/google/ipc/reserved.go
+++ b/runtimes/google/ipc/reserved.go
@@ -4,14 +4,14 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/vdl/vdlroot/src/signature"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vdl"
+	"v.io/v23/vdl/vdlroot/src/signature"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/glob"
 )
diff --git a/runtimes/google/ipc/resolve_internal_test.go b/runtimes/google/ipc/resolve_internal_test.go
index 0d3268d..637e4c6 100644
--- a/runtimes/google/ipc/resolve_internal_test.go
+++ b/runtimes/google/ipc/resolve_internal_test.go
@@ -1,7 +1,7 @@
 package ipc
 
 import (
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 )
 
 func InternalServerResolveToEndpoint(s ipc.Server, name string) (string, error) {
diff --git a/runtimes/google/ipc/resolve_test.go b/runtimes/google/ipc/resolve_test.go
index d7b5261..973ed3b 100644
--- a/runtimes/google/ipc/resolve_test.go
+++ b/runtimes/google/ipc/resolve_test.go
@@ -5,8 +5,8 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
+	"v.io/v23"
+	"v.io/v23/naming"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/modules"
@@ -37,7 +37,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 	ns.SetRoots(root)
 
 	proxyEp, _ := inaming.NewEndpoint("proxy.v.io:123")
@@ -47,7 +47,7 @@
 		t.Fatalf("ns.Mount failed: %s", err)
 	}
 
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("runtime.NewServer failed: %s", err)
 	}
diff --git a/runtimes/google/ipc/server.go b/runtimes/google/ipc/server.go
index 5b8a8bb..36545a0 100644
--- a/runtimes/google/ipc/server.go
+++ b/runtimes/google/ipc/server.go
@@ -11,18 +11,18 @@
 	"time"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/config"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vom"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/config"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vdl"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
+	"v.io/v23/vom"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/netstate"
 	"v.io/core/veyron/lib/stats"
diff --git a/runtimes/google/ipc/server_test.go b/runtimes/google/ipc/server_test.go
index 320f9e1..23b002a 100644
--- a/runtimes/google/ipc/server_test.go
+++ b/runtimes/google/ipc/server_test.go
@@ -7,13 +7,13 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2/config"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/config"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/netstate"
 	tsecurity "v.io/core/veyron/lib/testutil/security"
diff --git a/runtimes/google/ipc/signature_test.go b/runtimes/google/ipc/signature_test.go
index 12215eb..24b5cd6 100644
--- a/runtimes/google/ipc/signature_test.go
+++ b/runtimes/google/ipc/signature_test.go
@@ -5,24 +5,24 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/ipc/reserved"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/vdl/vdlroot/src/signature"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/ipc/reserved"
+	"v.io/v23/naming"
+	"v.io/v23/vdl"
+	"v.io/v23/vdl/vdlroot/src/signature"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
 )
 
 func startSigServer(ctx *context.T, sig sigImpl) (string, func(), error) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		return "", nil, fmt.Errorf("failed to start sig server: %v", err)
 	}
-	eps, err := server.Listen(veyron2.GetListenSpec(ctx))
+	eps, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		return "", nil, fmt.Errorf("failed to listen: %v", err)
 	}
diff --git a/runtimes/google/ipc/simple_test.go b/runtimes/google/ipc/simple_test.go
index f8546e8..b393244 100644
--- a/runtimes/google/ipc/simple_test.go
+++ b/runtimes/google/ipc/simple_test.go
@@ -5,8 +5,8 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
+	"v.io/v23"
+	"v.io/v23/ipc"
 )
 
 type simple struct {
@@ -71,7 +71,7 @@
 	name, fn := initServer(t, ctx)
 	defer fn()
 
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "Ping", nil)
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
@@ -92,7 +92,7 @@
 	defer fn()
 
 	inc := 1
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, name, "Inc", []interface{}{inc})
+	call, err := v23.GetClient(ctx).StartCall(ctx, name, "Inc", []interface{}{inc})
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
diff --git a/runtimes/google/ipc/sort_endpoints.go b/runtimes/google/ipc/sort_endpoints.go
index 53817fa..29d738f 100644
--- a/runtimes/google/ipc/sort_endpoints.go
+++ b/runtimes/google/ipc/sort_endpoints.go
@@ -5,8 +5,8 @@
 	"net"
 	"sort"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/naming"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/netstate"
 	"v.io/core/veyron/runtimes/google/ipc/version"
diff --git a/runtimes/google/ipc/sort_internal_test.go b/runtimes/google/ipc/sort_internal_test.go
index f7a1419..cdf3bd8 100644
--- a/runtimes/google/ipc/sort_internal_test.go
+++ b/runtimes/google/ipc/sort_internal_test.go
@@ -6,8 +6,8 @@
 	"strings"
 	"testing"
 
-	"v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/ipc/version"
+	"v.io/v23/naming"
 )
 
 func servers2names(servers []naming.MountedServer) []string {
diff --git a/runtimes/google/ipc/stats.go b/runtimes/google/ipc/stats.go
index dbcdda4..f07561e 100644
--- a/runtimes/google/ipc/stats.go
+++ b/runtimes/google/ipc/stats.go
@@ -8,7 +8,7 @@
 	"v.io/core/veyron/lib/stats/counter"
 	"v.io/core/veyron/lib/stats/histogram"
 
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 )
 
 type ipcStats struct {
diff --git a/runtimes/google/ipc/stream/benchmark/dial_vc.go b/runtimes/google/ipc/stream/benchmark/dial_vc.go
index 387e392..489be38 100644
--- a/runtimes/google/ipc/stream/benchmark/dial_vc.go
+++ b/runtimes/google/ipc/stream/benchmark/dial_vc.go
@@ -8,8 +8,8 @@
 	_ "v.io/core/veyron/profiles/static"
 	"v.io/core/veyron/runtimes/google/ipc/stream/manager"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
+	"v.io/v23/naming"
+	"v.io/v23/options"
 )
 
 // benchmarkDialVC measures VC creation time over the underlying VIF.
diff --git a/runtimes/google/ipc/stream/benchmark/dial_vif.go b/runtimes/google/ipc/stream/benchmark/dial_vif.go
index 6413925..62b6bd5 100644
--- a/runtimes/google/ipc/stream/benchmark/dial_vif.go
+++ b/runtimes/google/ipc/stream/benchmark/dial_vif.go
@@ -8,8 +8,8 @@
 	"v.io/core/veyron/lib/testutil/benchmark"
 	"v.io/core/veyron/runtimes/google/ipc/stream/vif"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
+	"v.io/v23/naming"
+	"v.io/v23/options"
 )
 
 // benchmarkDialVIF measures VIF creation time over the underlying net connection.
diff --git a/runtimes/google/ipc/stream/benchmark/throughput_flow.go b/runtimes/google/ipc/stream/benchmark/throughput_flow.go
index 0aa00fe..8ab5def 100644
--- a/runtimes/google/ipc/stream/benchmark/throughput_flow.go
+++ b/runtimes/google/ipc/stream/benchmark/throughput_flow.go
@@ -7,8 +7,8 @@
 	"v.io/core/veyron/runtimes/google/ipc/stream/manager"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
+	"v.io/v23/naming"
+	"v.io/v23/options"
 )
 
 const (
diff --git a/runtimes/google/ipc/stream/manager/listener.go b/runtimes/google/ipc/stream/manager/listener.go
index be0a658..7b89f71 100644
--- a/runtimes/google/ipc/stream/manager/listener.go
+++ b/runtimes/google/ipc/stream/manager/listener.go
@@ -13,10 +13,10 @@
 	inaming "v.io/core/veyron/runtimes/google/naming"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/naming"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
+	"v.io/v23/vom"
 )
 
 var errListenerIsClosed = errors.New("Listener has been Closed")
diff --git a/runtimes/google/ipc/stream/manager/manager.go b/runtimes/google/ipc/stream/manager/manager.go
index 8e1d16e..ca08ba1 100644
--- a/runtimes/google/ipc/stream/manager/manager.go
+++ b/runtimes/google/ipc/stream/manager/manager.go
@@ -9,10 +9,10 @@
 	"sync"
 	"time"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/stats"
 	"v.io/core/veyron/runtimes/google/ipc/stream"
diff --git a/runtimes/google/ipc/stream/manager/manager_test.go b/runtimes/google/ipc/stream/manager/manager_test.go
index cd8ac68..2947930 100644
--- a/runtimes/google/ipc/stream/manager/manager_test.go
+++ b/runtimes/google/ipc/stream/manager/manager_test.go
@@ -13,10 +13,10 @@
 	"time"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/modules"
diff --git a/runtimes/google/ipc/stream/message/control.go b/runtimes/google/ipc/stream/message/control.go
index e7f3f1a..6cdf9f8 100644
--- a/runtimes/google/ipc/stream/message/control.go
+++ b/runtimes/google/ipc/stream/message/control.go
@@ -8,7 +8,7 @@
 	"v.io/core/veyron/runtimes/google/ipc/stream/id"
 	"v.io/core/veyron/runtimes/google/ipc/version"
 	inaming "v.io/core/veyron/runtimes/google/naming"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 )
 
 // Control is the interface implemented by all control messages.
diff --git a/runtimes/google/ipc/stream/message/message.go b/runtimes/google/ipc/stream/message/message.go
index 9746efb..0015964 100644
--- a/runtimes/google/ipc/stream/message/message.go
+++ b/runtimes/google/ipc/stream/message/message.go
@@ -67,7 +67,7 @@
 	"v.io/core/veyron/runtimes/google/ipc/stream/crypto"
 	"v.io/core/veyron/runtimes/google/ipc/stream/id"
 	"v.io/core/veyron/runtimes/google/lib/iobuf"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 const (
diff --git a/runtimes/google/ipc/stream/message/message_test.go b/runtimes/google/ipc/stream/message/message_test.go
index d4433eb..dd8bc1c 100644
--- a/runtimes/google/ipc/stream/message/message_test.go
+++ b/runtimes/google/ipc/stream/message/message_test.go
@@ -8,7 +8,7 @@
 
 	"v.io/core/veyron/runtimes/google/ipc/version"
 	"v.io/core/veyron/runtimes/google/lib/iobuf"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 )
 
 // testControlCipher is a super-simple cipher that xor's each byte of the
diff --git a/runtimes/google/ipc/stream/model.go b/runtimes/google/ipc/stream/model.go
index a7c4f08..b98e3db 100644
--- a/runtimes/google/ipc/stream/model.go
+++ b/runtimes/google/ipc/stream/model.go
@@ -3,8 +3,8 @@
 import (
 	"io"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
+	"v.io/v23/naming"
+	"v.io/v23/security"
 )
 
 // Flow is the interface for a flow-controlled channel multiplexed on a Virtual
diff --git a/runtimes/google/ipc/stream/proxy/protocol.vdl.go b/runtimes/google/ipc/stream/proxy/protocol.vdl.go
index 818fc20..5a85fb1 100644
--- a/runtimes/google/ipc/stream/proxy/protocol.vdl.go
+++ b/runtimes/google/ipc/stream/proxy/protocol.vdl.go
@@ -5,7 +5,7 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2/vdl"
+	"v.io/v23/vdl"
 )
 
 // Request is the message sent by a server to request that the proxy route
diff --git a/runtimes/google/ipc/stream/proxy/proxy.go b/runtimes/google/ipc/stream/proxy/proxy.go
index 5c2f9c7..c1fbd18 100644
--- a/runtimes/google/ipc/stream/proxy/proxy.go
+++ b/runtimes/google/ipc/stream/proxy/proxy.go
@@ -6,12 +6,12 @@
 	"net"
 	"sync"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
+	"v.io/v23/vom"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream/crypto"
 	"v.io/core/veyron/runtimes/google/ipc/stream/id"
diff --git a/runtimes/google/ipc/stream/proxy/proxy_test.go b/runtimes/google/ipc/stream/proxy/proxy_test.go
index 86920f7..3c8c283 100644
--- a/runtimes/google/ipc/stream/proxy/proxy_test.go
+++ b/runtimes/google/ipc/stream/proxy/proxy_test.go
@@ -9,7 +9,7 @@
 	"testing"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 
 	tsecurity "v.io/core/veyron/lib/testutil/security"
 	_ "v.io/core/veyron/profiles"
diff --git a/runtimes/google/ipc/stream/vc/auth.go b/runtimes/google/ipc/stream/vc/auth.go
index a176017..bb7a256 100644
--- a/runtimes/google/ipc/stream/vc/auth.go
+++ b/runtimes/google/ipc/stream/vc/auth.go
@@ -9,10 +9,10 @@
 	"v.io/core/veyron/runtimes/google/ipc/stream/crypto"
 	"v.io/core/veyron/runtimes/google/lib/iobuf"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/context"
+	"v.io/v23/ipc/version"
+	"v.io/v23/security"
+	"v.io/v23/vom"
 )
 
 var (
diff --git a/runtimes/google/ipc/stream/vc/errors.vdl b/runtimes/google/ipc/stream/vc/errors.vdl
index fe6e864..9f4814f 100644
--- a/runtimes/google/ipc/stream/vc/errors.vdl
+++ b/runtimes/google/ipc/stream/vc/errors.vdl
@@ -1,7 +1,7 @@
 package vc
 
 import (
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 error (
diff --git a/runtimes/google/ipc/stream/vc/errors.vdl.go b/runtimes/google/ipc/stream/vc/errors.vdl.go
index 08fb82f..a7de1e4 100644
--- a/runtimes/google/ipc/stream/vc/errors.vdl.go
+++ b/runtimes/google/ipc/stream/vc/errors.vdl.go
@@ -5,12 +5,12 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/i18n"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/context"
+	"v.io/v23/i18n"
+	"v.io/v23/verror"
 
 	// VDL user imports
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 var (
diff --git a/runtimes/google/ipc/stream/vc/flow.go b/runtimes/google/ipc/stream/vc/flow.go
index f2cd456..b86ffba 100644
--- a/runtimes/google/ipc/stream/vc/flow.go
+++ b/runtimes/google/ipc/stream/vc/flow.go
@@ -2,8 +2,8 @@
 
 import (
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
+	"v.io/v23/naming"
+	"v.io/v23/security"
 )
 
 type flow struct {
diff --git a/runtimes/google/ipc/stream/vc/init.go b/runtimes/google/ipc/stream/vc/init.go
index 2655b9b..efa0cab 100644
--- a/runtimes/google/ipc/stream/vc/init.go
+++ b/runtimes/google/ipc/stream/vc/init.go
@@ -6,8 +6,8 @@
 	"crypto/rand"
 	"fmt"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 )
 
 var AnonymousPrincipal security.Principal
diff --git a/runtimes/google/ipc/stream/vc/listener_test.go b/runtimes/google/ipc/stream/vc/listener_test.go
index 1ebb9e7..6cabc70 100644
--- a/runtimes/google/ipc/stream/vc/listener_test.go
+++ b/runtimes/google/ipc/stream/vc/listener_test.go
@@ -4,8 +4,8 @@
 	"testing"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
+	"v.io/v23/naming"
+	"v.io/v23/security"
 )
 
 type noopFlow struct{}
diff --git a/runtimes/google/ipc/stream/vc/vc.go b/runtimes/google/ipc/stream/vc/vc.go
index 074bc72..5c45530 100644
--- a/runtimes/google/ipc/stream/vc/vc.go
+++ b/runtimes/google/ipc/stream/vc/vc.go
@@ -18,13 +18,13 @@
 	vsync "v.io/core/veyron/runtimes/google/lib/sync"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/context"
+	"v.io/v23/ipc/version"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
+	"v.io/v23/vtrace"
 )
 
 var (
diff --git a/runtimes/google/ipc/stream/vc/vc_test.go b/runtimes/google/ipc/stream/vc/vc_test.go
index 382dcc4..8d401b8 100644
--- a/runtimes/google/ipc/stream/vc/vc_test.go
+++ b/runtimes/google/ipc/stream/vc/vc_test.go
@@ -22,11 +22,11 @@
 	"v.io/core/veyron/runtimes/google/lib/iobuf"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
+	"v.io/v23/context"
+	"v.io/v23/ipc/version"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
 )
 
 //go:generate v23 test generate
diff --git a/runtimes/google/ipc/stream/vif/auth.go b/runtimes/google/ipc/stream/vif/auth.go
index b14069b..f02d085 100644
--- a/runtimes/google/ipc/stream/vif/auth.go
+++ b/runtimes/google/ipc/stream/vif/auth.go
@@ -14,10 +14,10 @@
 	"v.io/core/veyron/runtimes/google/ipc/stream/vc"
 	"v.io/core/veyron/runtimes/google/ipc/version"
 	"v.io/core/veyron/runtimes/google/lib/iobuf"
-	"v.io/core/veyron2/context"
-	ipcversion "v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
+	"v.io/v23/context"
+	ipcversion "v.io/v23/ipc/version"
+	"v.io/v23/options"
+	"v.io/v23/security"
 )
 
 var (
diff --git a/runtimes/google/ipc/stream/vif/set_test.go b/runtimes/google/ipc/stream/vif/set_test.go
index d2ee78f..274f8c7 100644
--- a/runtimes/google/ipc/stream/vif/set_test.go
+++ b/runtimes/google/ipc/stream/vif/set_test.go
@@ -9,7 +9,7 @@
 	"testing"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream/vif"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 )
 
 func TestSetWithPipes(t *testing.T) {
diff --git a/runtimes/google/ipc/stream/vif/vif.go b/runtimes/google/ipc/stream/vif/vif.go
index f65189a..68e93ed 100644
--- a/runtimes/google/ipc/stream/vif/vif.go
+++ b/runtimes/google/ipc/stream/vif/vif.go
@@ -26,10 +26,10 @@
 	"v.io/core/veyron/runtimes/google/lib/pcqueue"
 	vsync "v.io/core/veyron/runtimes/google/lib/sync"
 	"v.io/core/veyron/runtimes/google/lib/upcqueue"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/naming"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
+	"v.io/v23/vtrace"
 )
 
 const pkgPath = "v.io/core/veyron/runtimes/google/ipc/stream/vif"
diff --git a/runtimes/google/ipc/stream/vif/vif_test.go b/runtimes/google/ipc/stream/vif/vif_test.go
index 8b7a06d..738c416 100644
--- a/runtimes/google/ipc/stream/vif/vif_test.go
+++ b/runtimes/google/ipc/stream/vif/vif_test.go
@@ -23,8 +23,8 @@
 	iversion "v.io/core/veyron/runtimes/google/ipc/version"
 
 	"v.io/core/veyron/runtimes/google/ipc/stream"
-	"v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/ipc/version"
+	"v.io/v23/naming"
 )
 
 //go:generate v23 test generate
diff --git a/runtimes/google/ipc/testutil_test.go b/runtimes/google/ipc/testutil_test.go
index 280b33f..6c43a06 100644
--- a/runtimes/google/ipc/testutil_test.go
+++ b/runtimes/google/ipc/testutil_test.go
@@ -4,8 +4,8 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/security"
+	"v.io/v23/verror"
 )
 
 func makeResultPtrs(ins []interface{}) []interface{} {
diff --git a/runtimes/google/ipc/version/version.go b/runtimes/google/ipc/version/version.go
index 542fd63..16d8395 100644
--- a/runtimes/google/ipc/version/version.go
+++ b/runtimes/google/ipc/version/version.go
@@ -5,8 +5,8 @@
 
 	inaming "v.io/core/veyron/runtimes/google/naming"
 
-	"v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/ipc/version"
+	"v.io/v23/naming"
 )
 
 // Range represents a range of IPC versions.
diff --git a/runtimes/google/ipc/version/version_test.go b/runtimes/google/ipc/version/version_test.go
index dcc388a..5b6d850 100644
--- a/runtimes/google/ipc/version/version_test.go
+++ b/runtimes/google/ipc/version/version_test.go
@@ -5,8 +5,8 @@
 
 	inaming "v.io/core/veyron/runtimes/google/naming"
 
-	"v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/ipc/version"
+	"v.io/v23/naming"
 )
 
 func TestCommonVersion(t *testing.T) {
diff --git a/runtimes/google/lib/iobuf/allocator.go b/runtimes/google/lib/iobuf/allocator.go
index 4483159..e2bc82a 100644
--- a/runtimes/google/lib/iobuf/allocator.go
+++ b/runtimes/google/lib/iobuf/allocator.go
@@ -1,6 +1,6 @@
 package iobuf
 
-import "v.io/core/veyron2/vlog"
+import "v.io/v23/vlog"
 
 // Allocator is an allocator for Slices that tries to allocate
 // contiguously.  That is, sequential allocations will tend to be contiguous,
diff --git a/runtimes/google/lib/iobuf/iobuf.go b/runtimes/google/lib/iobuf/iobuf.go
index 918ddba..3698ca2 100644
--- a/runtimes/google/lib/iobuf/iobuf.go
+++ b/runtimes/google/lib/iobuf/iobuf.go
@@ -27,7 +27,7 @@
 	"sync"
 	"sync/atomic"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 // A iobuf is a storage space for memory read from the network.  The data should
diff --git a/runtimes/google/lib/pcqueue/pcqueue_test.go b/runtimes/google/lib/pcqueue/pcqueue_test.go
index bf88179..db61f8e 100644
--- a/runtimes/google/lib/pcqueue/pcqueue_test.go
+++ b/runtimes/google/lib/pcqueue/pcqueue_test.go
@@ -6,7 +6,7 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 //go:generate v23 test generate
diff --git a/runtimes/google/lib/publisher/publisher.go b/runtimes/google/lib/publisher/publisher.go
index fd4310c..f9599b6 100644
--- a/runtimes/google/lib/publisher/publisher.go
+++ b/runtimes/google/lib/publisher/publisher.go
@@ -9,10 +9,10 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/vlog"
 )
 
 // Publisher manages the publishing of servers in mounttable.
diff --git a/runtimes/google/lib/publisher/publisher_test.go b/runtimes/google/lib/publisher/publisher_test.go
index 3143d26..e0c7fbf 100644
--- a/runtimes/google/lib/publisher/publisher_test.go
+++ b/runtimes/google/lib/publisher/publisher_test.go
@@ -7,9 +7,9 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/flags"
 	"v.io/core/veyron/runtimes/google/lib/publisher"
diff --git a/runtimes/google/lib/upcqueue/upcqueue_test.go b/runtimes/google/lib/upcqueue/upcqueue_test.go
index 0ffad94..0fbb51e 100644
--- a/runtimes/google/lib/upcqueue/upcqueue_test.go
+++ b/runtimes/google/lib/upcqueue/upcqueue_test.go
@@ -7,7 +7,7 @@
 	"time"
 
 	vsync "v.io/core/veyron/runtimes/google/lib/sync"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 //go:generate v23 test generate
diff --git a/runtimes/google/naming/endpoint.go b/runtimes/google/naming/endpoint.go
index 5390008..daba3b1 100644
--- a/runtimes/google/naming/endpoint.go
+++ b/runtimes/google/naming/endpoint.go
@@ -7,8 +7,8 @@
 	"strconv"
 	"strings"
 
-	"v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/ipc/version"
+	"v.io/v23/naming"
 )
 
 const (
diff --git a/runtimes/google/naming/endpoint_test.go b/runtimes/google/naming/endpoint_test.go
index c1e1bf7..303d3fe 100644
--- a/runtimes/google/naming/endpoint_test.go
+++ b/runtimes/google/naming/endpoint_test.go
@@ -5,8 +5,8 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2/ipc/version"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/ipc/version"
+	"v.io/v23/naming"
 )
 
 func TestEndpoint(t *testing.T) {
diff --git a/runtimes/google/naming/namespace/all_test.go b/runtimes/google/naming/namespace/all_test.go
index 29e7bcc..0a0d41a 100644
--- a/runtimes/google/naming/namespace/all_test.go
+++ b/runtimes/google/naming/namespace/all_test.go
@@ -8,14 +8,14 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	tsecurity "v.io/core/veyron/lib/testutil/security"
@@ -41,10 +41,10 @@
 	if err := pc.AddToRoots(psc.BlessingStore().Default()); err != nil {
 		t.Fatal(err)
 	}
-	if sc, err = veyron2.SetPrincipal(ctx, psc); err != nil {
+	if sc, err = v23.SetPrincipal(ctx, psc); err != nil {
 		t.Fatal(err)
 	}
-	if c, err = veyron2.SetPrincipal(ctx, pc); err != nil {
+	if c, err = v23.SetPrincipal(ctx, pc); err != nil {
 		t.Fatal(err)
 	}
 	return sc, c, shutdown
@@ -130,7 +130,7 @@
 }
 
 func knockKnock(t *testing.T, ctx *context.T, name string) {
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "KnockKnock", nil)
 	if err != nil {
 		boom(t, "StartCall failed: %s", err)
@@ -188,13 +188,13 @@
 }
 
 func run(t *testing.T, ctx *context.T, disp ipc.Dispatcher, mountPoint string, mt bool) *serverEntry {
-	s, err := veyron2.NewServer(ctx, options.ServesMountTable(mt))
+	s, err := v23.NewServer(ctx, options.ServesMountTable(mt))
 	if err != nil {
 		boom(t, "r.NewServer: %s", err)
 	}
 	// Add a mount table server.
 	// Start serving on a loopback address.
-	eps, err := s.Listen(veyron2.GetListenSpec(ctx))
+	eps, err := s.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		boom(t, "Failed to Listen: %s", err)
 	}
@@ -221,7 +221,7 @@
 // in it: mt{1,2,3,4,5}
 func runMountTables(t *testing.T, ctx *context.T) (*serverEntry, map[string]*serverEntry) {
 	root := runMT(t, ctx, "")
-	veyron2.GetNamespace(ctx).SetRoots(root.name)
+	v23.GetNamespace(ctx).SetRoots(root.name)
 	t.Logf("mountTable %q -> %s", root.mountPoint, root.endpoint)
 
 	mps := make(map[string]*serverEntry)
@@ -261,7 +261,7 @@
 // created by createNamespace as follows:
 // /mt4/foo, /mt4/foo/bar and /mt4/baz where foo, bar and baz are mount tables.
 func runNestedMountTables(t *testing.T, ctx *context.T, mts map[string]*serverEntry) {
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 	// Set up some nested mounts and verify resolution.
 	for _, m := range []string{"mt4/foo", "mt4/foo/bar"} {
 		mts[m] = runMT(t, ctx, m)
@@ -284,7 +284,7 @@
 
 	root, mts, jokes, stopper := createNamespace(t, c)
 	defer stopper()
-	ns := veyron2.GetNamespace(c)
+	ns := v23.GetNamespace(c)
 
 	// All of the initial mounts are served by the root mounttable
 	// and hence ResolveToMountTable should return the root mountable
@@ -317,7 +317,7 @@
 	root, mts, _, stopper := createNamespace(t, sc)
 	defer stopper()
 
-	ns := veyron2.GetNamespace(c)
+	ns := v23.GetNamespace(c)
 	ns.SetRoots(root.name)
 
 	// /mt2 is not an endpoint. Thus, the example below will fail.
@@ -372,7 +372,7 @@
 	runNestedMountTables(t, sc, mts)
 	defer stopper()
 
-	ns := veyron2.GetNamespace(c)
+	ns := v23.GetNamespace(c)
 	ns.SetRoots(root.name)
 
 	// Set up some nested mounts and verify resolution.
@@ -395,7 +395,7 @@
 
 	root, mts, jokes, stopper := createNamespace(t, sc)
 	defer stopper()
-	ns := veyron2.GetNamespace(c)
+	ns := v23.GetNamespace(c)
 	ns.SetRoots(root.name)
 
 	// Let's run some non-mount table services
@@ -421,7 +421,7 @@
 	root, mts, _, stopper := createNamespace(t, sc)
 	runNestedMountTables(t, sc, mts)
 	defer stopper()
-	ns := veyron2.GetNamespace(c)
+	ns := v23.GetNamespace(c)
 	ns.SetRoots(root.name)
 
 	tln := []string{"baz", "mt1", "mt2", "mt3", "mt4", "mt5", "joke1", "joke2", "joke3"}
@@ -498,7 +498,7 @@
 	runningGlobServer := runServer(t, c, testutil.LeafDispatcher(globServer, nil), name)
 	defer runningGlobServer.server.Stop()
 
-	ns := veyron2.GetNamespace(c)
+	ns := v23.GetNamespace(c)
 	ns.SetRoots(root.name)
 
 	tests := []struct {
@@ -531,7 +531,7 @@
 
 	root, _, _, stopper := createNamespace(t, sc)
 	defer stopper()
-	ns := veyron2.GetNamespace(c)
+	ns := v23.GetNamespace(c)
 	ns.SetRoots(root.name)
 
 	c1 := runMT(t, c, "c1")
@@ -622,8 +622,8 @@
 	}
 	proot.BlessingStore().SetDefault(b)
 
-	sprincipal := veyron2.GetPrincipal(c)
-	cprincipal := veyron2.GetPrincipal(cc)
+	sprincipal := v23.GetPrincipal(c)
+	cprincipal := v23.GetPrincipal(cc)
 	bless(proot, sprincipal, "server")
 	bless(proot, cprincipal, "client")
 	cprincipal.AddToRoots(proot.BlessingStore().Default())
@@ -631,7 +631,7 @@
 
 	root, mts, _, stopper := createNamespace(t, c)
 	defer stopper()
-	ns := veyron2.GetNamespace(c)
+	ns := v23.GetNamespace(c)
 
 	name := naming.Join(root.name, mt2MP)
 	// First check with a non-matching blessing pattern.
@@ -653,39 +653,39 @@
 }
 
 func TestAuthenticationDuringResolve(t *testing.T) {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	var (
-		rootMtCtx, _ = veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal()) // root mounttable
-		mtCtx, _     = veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal()) // intermediate mounttable
-		serverCtx, _ = veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal()) // end server
-		clientCtx, _ = veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal()) // client process (doing Resolves).
-		idp          = tsecurity.NewIDProvider("idp")                      // identity provider
+		rootMtCtx, _ = v23.SetPrincipal(ctx, tsecurity.NewPrincipal()) // root mounttable
+		mtCtx, _     = v23.SetPrincipal(ctx, tsecurity.NewPrincipal()) // intermediate mounttable
+		serverCtx, _ = v23.SetPrincipal(ctx, tsecurity.NewPrincipal()) // end server
+		clientCtx, _ = v23.SetPrincipal(ctx, tsecurity.NewPrincipal()) // client process (doing Resolves).
+		idp          = tsecurity.NewIDProvider("idp")                  // identity provider
 		ep1          = naming.FormatEndpoint("tcp", "127.0.0.1:14141")
 
 		resolve = func(name string, opts ...naming.ResolveOpt) (*naming.MountEntry, error) {
-			return veyron2.GetNamespace(clientCtx).Resolve(clientCtx, name, opts...)
+			return v23.GetNamespace(clientCtx).Resolve(clientCtx, name, opts...)
 		}
 
 		mount = func(name, server string, ttl time.Duration, opts ...naming.MountOpt) error {
-			return veyron2.GetNamespace(serverCtx).Mount(serverCtx, name, server, ttl, opts...)
+			return v23.GetNamespace(serverCtx).Mount(serverCtx, name, server, ttl, opts...)
 		}
 	)
 	// Setup default blessings for the processes.
-	idp.Bless(veyron2.GetPrincipal(rootMtCtx), "rootmt")
-	idp.Bless(veyron2.GetPrincipal(serverCtx), "server")
-	idp.Bless(veyron2.GetPrincipal(mtCtx), "childmt")
-	idp.Bless(veyron2.GetPrincipal(clientCtx), "client")
+	idp.Bless(v23.GetPrincipal(rootMtCtx), "rootmt")
+	idp.Bless(v23.GetPrincipal(serverCtx), "server")
+	idp.Bless(v23.GetPrincipal(mtCtx), "childmt")
+	idp.Bless(v23.GetPrincipal(clientCtx), "client")
 
 	// Setup the namespace root for all the "processes".
 	rootmt := runMT(t, rootMtCtx, "")
 	for _, ctx := range []*context.T{mtCtx, serverCtx, clientCtx} {
-		veyron2.GetNamespace(ctx).SetRoots(rootmt.name)
+		v23.GetNamespace(ctx).SetRoots(rootmt.name)
 	}
 	// Disable caching in the client so that any Mount calls by the server
 	// are noticed immediately.
-	veyron2.GetNamespace(clientCtx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(clientCtx).CacheCtl(naming.DisableCache(true))
 
 	// Server mounting without an explicitly specified MountedServerBlessingsOpt,
 	// will automatically fill the Default blessings in.
@@ -723,7 +723,7 @@
 	// Imagine that the network address of "mt" has been taken over by an attacker. However, this attacker cannot
 	// mess with the mount entry for "mt". This would result in "mt" and its mount entry (in the global mounttable)
 	// having inconsistent blessings. Simulate this by explicitly changing the mount entry for "mt".
-	if err := veyron2.GetNamespace(mtCtx).Mount(mtCtx, "mt", mt.name, time.Minute, naming.ServesMountTableOpt(true), naming.MountedServerBlessingsOpt{"realmounttable"}, naming.ReplaceMountOpt(true)); err != nil {
+	if err := v23.GetNamespace(mtCtx).Mount(mtCtx, "mt", mt.name, time.Minute, naming.ServesMountTableOpt(true), naming.MountedServerBlessingsOpt{"realmounttable"}, naming.ReplaceMountOpt(true)); err != nil {
 		t.Error(err)
 	}
 
diff --git a/runtimes/google/naming/namespace/cache.go b/runtimes/google/naming/namespace/cache.go
index 502b367..3d212a2 100644
--- a/runtimes/google/naming/namespace/cache.go
+++ b/runtimes/google/naming/namespace/cache.go
@@ -6,9 +6,9 @@
 	"sync"
 	"time"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/naming"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 // maxCacheEntries is the max number of cache entries to keep.  It exists only so that we
diff --git a/runtimes/google/naming/namespace/cache_test.go b/runtimes/google/naming/namespace/cache_test.go
index 6516780..7534854 100644
--- a/runtimes/google/naming/namespace/cache_test.go
+++ b/runtimes/google/naming/namespace/cache_test.go
@@ -5,7 +5,7 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 )
 
 func compatible(server string, servers []naming.MountedServer) bool {
diff --git a/runtimes/google/naming/namespace/glob.go b/runtimes/google/naming/namespace/glob.go
index 4ca4695..174d701 100644
--- a/runtimes/google/naming/namespace/glob.go
+++ b/runtimes/google/naming/namespace/glob.go
@@ -6,13 +6,13 @@
 
 	"v.io/core/veyron/lib/glob"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 // task is a sub-glob that has to be performed against a mount table.  Tasks are
@@ -35,7 +35,7 @@
 			replies <- t
 		}
 	}()
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	pstr := t.pattern.String()
 	vlog.VI(2).Infof("globAtServer(%v, %v)", *t.me, pstr)
 
diff --git a/runtimes/google/naming/namespace/glob_test.go b/runtimes/google/naming/namespace/glob_test.go
index 6d51bd1..7d6ff2c 100644
--- a/runtimes/google/naming/namespace/glob_test.go
+++ b/runtimes/google/naming/namespace/glob_test.go
@@ -3,7 +3,7 @@
 import (
 	"testing"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 func TestDepth(t *testing.T) {
diff --git a/runtimes/google/naming/namespace/mount.go b/runtimes/google/naming/namespace/mount.go
index f1abe25..dfe7e8b 100644
--- a/runtimes/google/naming/namespace/mount.go
+++ b/runtimes/google/naming/namespace/mount.go
@@ -6,13 +6,13 @@
 
 	inaming "v.io/core/veyron/runtimes/google/naming"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 )
 
 type status struct {
@@ -125,7 +125,7 @@
 		// No patterns explicitly provided. Take the conservative
 		// approach that the server being mounted is run by this local
 		// process.
-		p := veyron2.GetPrincipal(ctx)
+		p := v23.GetPrincipal(ctx)
 		b := p.BlessingStore().Default()
 		if b == nil {
 			return fmt.Errorf("must provide a MountedServerBlessingsOpt")
@@ -136,7 +136,7 @@
 		vlog.VI(2).Infof("Mount(%s, %s): No MountedServerBlessingsOpt provided using %v", name, server, patterns)
 	}
 
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	// Mount the server in all the returned mount tables.
 	f := func(ctx *context.T, mt, id string) status {
 		return mountIntoMountTable(ctx, client, mt, server, str2pattern(patterns), ttl, flags, id)
@@ -149,7 +149,7 @@
 func (ns *namespace) Unmount(ctx *context.T, name, server string) error {
 	defer vlog.LogCall()()
 	// Unmount the server from all the mount tables.
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	f := func(context *context.T, mt, id string) status {
 		return unmountFromMountTable(ctx, client, mt, server, id)
 	}
diff --git a/runtimes/google/naming/namespace/namespace.go b/runtimes/google/naming/namespace/namespace.go
index 7b176ac..ea22227 100644
--- a/runtimes/google/naming/namespace/namespace.go
+++ b/runtimes/google/naming/namespace/namespace.go
@@ -7,10 +7,10 @@
 
 	inaming "v.io/core/veyron/runtimes/google/naming"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 const defaultMaxResolveDepth = 32
diff --git a/runtimes/google/naming/namespace/resolve.go b/runtimes/google/naming/namespace/resolve.go
index 3ff22bb..6b43033 100644
--- a/runtimes/google/naming/namespace/resolve.go
+++ b/runtimes/google/naming/namespace/resolve.go
@@ -4,14 +4,14 @@
 	"errors"
 	"runtime"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 func (ns *namespace) resolveAgainstMountTable(ctx *context.T, client ipc.Client, e *naming.MountEntry, opts ...ipc.CallOpt) (*naming.MountEntry, error) {
@@ -77,7 +77,7 @@
 	if len(e.Servers) == 0 {
 		return nil, verror.New(naming.ErrNoSuchName, ctx, name)
 	}
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	callOpts := getCallOpts(opts)
 
 	// Iterate walking through mount table servers.
@@ -121,7 +121,7 @@
 		return nil, verror.New(naming.ErrNoMountTable, ctx)
 	}
 	callOpts := getCallOpts(opts)
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	last := e
 	for remaining := ns.maxResolveDepth; remaining > 0; remaining-- {
 		vlog.VI(2).Infof("ResolveToMountTable(%s) loop %v", name, e)
diff --git a/runtimes/google/naming/namespace/stub.go b/runtimes/google/naming/namespace/stub.go
index a513e56..50b4f09 100644
--- a/runtimes/google/naming/namespace/stub.go
+++ b/runtimes/google/naming/namespace/stub.go
@@ -3,7 +3,7 @@
 import (
 	"time"
 
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 )
 
 func convertServersToStrings(servers []naming.MountedServer, suffix string) (ret []string) {
diff --git a/runtimes/google/rt/ipc_test.go b/runtimes/google/rt/ipc_test.go
index 42e3d57..ff80214 100644
--- a/runtimes/google/rt/ipc_test.go
+++ b/runtimes/google/rt/ipc_test.go
@@ -6,16 +6,16 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
 
 	"v.io/core/veyron/lib/testutil"
 	tsecurity "v.io/core/veyron/lib/testutil/security"
 	_ "v.io/core/veyron/profiles"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/verror"
 )
 
 //go:generate v23 test generate
@@ -45,7 +45,7 @@
 }
 
 func newCtx(rootCtx *context.T) *context.T {
-	ctx, err := veyron2.SetPrincipal(rootCtx, tsecurity.NewPrincipal("defaultBlessings"))
+	ctx, err := v23.SetPrincipal(rootCtx, tsecurity.NewPrincipal("defaultBlessings"))
 	if err != nil {
 		panic(err)
 	}
@@ -89,11 +89,11 @@
 }
 
 func startServer(ctx *context.T, s interface{}) (ipc.Server, string, error) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		return nil, "", err
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		return nil, "", err
 	}
@@ -111,8 +111,8 @@
 	var (
 		rootAlpha, rootBeta, rootUnrecognized = tsecurity.NewIDProvider("alpha"), tsecurity.NewIDProvider("beta"), tsecurity.NewIDProvider("unrecognized")
 		clientCtx, serverCtx                  = newCtx(ctx), newCtx(ctx)
-		pclient                               = veyron2.GetPrincipal(clientCtx)
-		pserver                               = veyron2.GetPrincipal(serverCtx)
+		pclient                               = v23.GetPrincipal(clientCtx)
+		pserver                               = v23.GetPrincipal(serverCtx)
 
 		// A bunch of blessings
 		alphaClient        = mkBlessings(rootAlpha.NewBlessings(pclient, "client"))
@@ -155,7 +155,7 @@
 	// Have the client and server both trust both the root principals.
 	for _, ctx := range []*context.T{clientCtx, serverCtx} {
 		for _, b := range []security.Blessings{alphaClient, betaClient} {
-			p := veyron2.GetPrincipal(ctx)
+			p := v23.GetPrincipal(ctx)
 			if err := p.AddToRoots(b); err != nil {
 				t.Fatal(err)
 			}
@@ -171,7 +171,7 @@
 		if err != nil {
 			t.Fatal(err)
 		}
-		ctx, client, err := veyron2.SetNewClient(clientCtx)
+		ctx, client, err := v23.SetNewClient(clientCtx)
 		if err != nil {
 			panic(err)
 		}
@@ -198,9 +198,9 @@
 
 	var (
 		dischargerCtx, clientCtx, serverCtx = newCtx(ctx), newCtx(ctx), newCtx(ctx)
-		pdischarger                         = veyron2.GetPrincipal(dischargerCtx)
-		pclient                             = veyron2.GetPrincipal(clientCtx)
-		pserver                             = veyron2.GetPrincipal(serverCtx)
+		pdischarger                         = v23.GetPrincipal(dischargerCtx)
+		pclient                             = v23.GetPrincipal(clientCtx)
+		pserver                             = v23.GetPrincipal(serverCtx)
 		root                                = tsecurity.NewIDProvider("root")
 	)
 
@@ -242,7 +242,7 @@
 	var gotClient []string
 
 	// Create a new client.
-	clientCtx, client, err := veyron2.SetNewClient(clientCtx)
+	clientCtx, client, err := v23.SetNewClient(clientCtx)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -258,7 +258,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 = veyron2.SetNewClient(clientCtx)
+	clientCtx, client, err = v23.SetNewClient(clientCtx)
 	if err != nil {
 		t.Fatal(err)
 	}
diff --git a/runtimes/google/rt/mgmt.go b/runtimes/google/rt/mgmt.go
index 54926a7..8830113 100644
--- a/runtimes/google/rt/mgmt.go
+++ b/runtimes/google/rt/mgmt.go
@@ -4,12 +4,12 @@
 	"fmt"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/mgmt"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/mgmt"
+	"v.io/v23/naming"
+	"v.io/v23/options"
 
 	"v.io/core/veyron/lib/exec"
 )
@@ -49,7 +49,7 @@
 	if err != nil {
 		return err
 	}
-	if err := server.Serve("", veyron2.GetAppCycle(ctx).Remote(), nil); err != nil {
+	if err := server.Serve("", v23.GetAppCycle(ctx).Remote(), nil); err != nil {
 		server.Stop()
 		return err
 	}
diff --git a/runtimes/google/rt/mgmt_test.go b/runtimes/google/rt/mgmt_test.go
index cb825d9..084f618 100644
--- a/runtimes/google/rt/mgmt_test.go
+++ b/runtimes/google/rt/mgmt_test.go
@@ -9,12 +9,12 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/mgmt"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/appcycle"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/mgmt"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/appcycle"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/modules"
@@ -38,12 +38,12 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	m := veyron2.GetAppCycle(ctx)
+	m := v23.GetAppCycle(ctx)
 	ch := make(chan string, 1)
 	m.WaitForStop(ch)
 	for i := 0; i < 10; i++ {
 		m.Stop()
-		if want, got := veyron2.LocalStop, <-ch; want != got {
+		if want, got := v23.LocalStop, <-ch; want != got {
 			t.Errorf("WaitForStop want %q got %q", want, got)
 		}
 		select {
@@ -60,17 +60,17 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	m := veyron2.GetAppCycle(ctx)
+	m := v23.GetAppCycle(ctx)
 	ch1 := make(chan string, 1)
 	m.WaitForStop(ch1)
 	ch2 := make(chan string, 1)
 	m.WaitForStop(ch2)
 	for i := 0; i < 10; i++ {
 		m.Stop()
-		if want, got := veyron2.LocalStop, <-ch1; want != got {
+		if want, got := v23.LocalStop, <-ch1; want != got {
 			t.Errorf("WaitForStop want %q got %q", want, got)
 		}
-		if want, got := veyron2.LocalStop, <-ch2; want != got {
+		if want, got := v23.LocalStop, <-ch2; want != got {
 			t.Errorf("WaitForStop want %q got %q", want, got)
 		}
 	}
@@ -83,13 +83,13 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	m := veyron2.GetAppCycle(ctx)
+	m := v23.GetAppCycle(ctx)
 	ch := make(chan string, 1)
 	m.WaitForStop(ch)
 	for i := 0; i < 10; i++ {
 		m.Stop()
 	}
-	if want, got := veyron2.LocalStop, <-ch; want != got {
+	if want, got := v23.LocalStop, <-ch; want != got {
 		t.Errorf("WaitForStop want %q got %q", want, got)
 	}
 	select {
@@ -103,7 +103,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	m := veyron2.GetAppCycle(ctx)
+	m := v23.GetAppCycle(ctx)
 	fmt.Fprintf(stdout, "ready\n")
 	modules.WaitForEOF(stdin)
 	m.Stop()
@@ -124,7 +124,7 @@
 		t.Fatalf("unexpected error: %s", err)
 	}
 	expect.NewSession(t, h.Stdout(), time.Minute).Expect("ready")
-	want := fmt.Sprintf("exit status %d", veyron2.UnhandledStopExitCode)
+	want := fmt.Sprintf("exit status %d", v23.UnhandledStopExitCode)
 	if err = h.Shutdown(os.Stderr, os.Stderr); err == nil || err.Error() != want {
 		t.Errorf("got %v, want %s", err, want)
 	}
@@ -134,7 +134,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	m := veyron2.GetAppCycle(ctx)
+	m := v23.GetAppCycle(ctx)
 	fmt.Fprintf(stdout, "ready\n")
 	modules.WaitForEOF(stdin)
 	m.WaitForStop(make(chan string, 1))
@@ -158,19 +158,19 @@
 	s := expect.NewSession(t, h.Stdout(), time.Minute)
 	s.Expect("ready")
 	err = h.Shutdown(os.Stderr, os.Stderr)
-	want := fmt.Sprintf("exit status %d", veyron2.UnhandledStopExitCode)
+	want := fmt.Sprintf("exit status %d", v23.UnhandledStopExitCode)
 	if err == nil || err.Error() != want {
 		t.Errorf("got %v, want %s", err, want)
 	}
 }
 
-func checkProgress(t *testing.T, ch <-chan veyron2.Task, progress, goal int32) {
-	if want, got := (veyron2.Task{progress, goal}), <-ch; !reflect.DeepEqual(want, got) {
+func checkProgress(t *testing.T, ch <-chan v23.Task, progress, goal int32) {
+	if want, got := (v23.Task{progress, goal}), <-ch; !reflect.DeepEqual(want, got) {
 		t.Errorf("Unexpected progress: want %+v, got %+v", want, got)
 	}
 }
 
-func checkNoProgress(t *testing.T, ch <-chan veyron2.Task) {
+func checkNoProgress(t *testing.T, ch <-chan v23.Task) {
 	select {
 	case p := <-ch:
 		t.Errorf("channel expected to be empty, got %+v instead", p)
@@ -183,9 +183,9 @@
 func TestProgress(t *testing.T) {
 	ctx, shutdown := testutil.InitForTest()
 
-	m := veyron2.GetAppCycle(ctx)
+	m := v23.GetAppCycle(ctx)
 	m.AdvanceGoal(50)
-	ch := make(chan veyron2.Task, 1)
+	ch := make(chan v23.Task, 1)
 	m.TrackTask(ch)
 	checkNoProgress(t, ch)
 	m.AdvanceProgress(10)
@@ -215,9 +215,9 @@
 func TestProgressMultipleTrackers(t *testing.T) {
 	ctx, shutdown := testutil.InitForTest()
 
-	m := veyron2.GetAppCycle(ctx)
+	m := v23.GetAppCycle(ctx)
 	// ch1 is 1-buffered, ch2 is 2-buffered.
-	ch1, ch2 := make(chan veyron2.Task, 1), make(chan veyron2.Task, 2)
+	ch1, ch2 := make(chan v23.Task, 1), make(chan v23.Task, 2)
 	m.TrackTask(ch1)
 	m.TrackTask(ch2)
 	checkNoProgress(t, ch1)
@@ -251,7 +251,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	m := veyron2.GetAppCycle(ctx)
+	m := v23.GetAppCycle(ctx)
 	ch := make(chan string, 1)
 	m.WaitForStop(ch)
 	fmt.Fprintf(stdout, "Got %s\n", <-ch)
@@ -277,13 +277,13 @@
 }
 
 func createConfigServer(t *testing.T, ctx *context.T) (ipc.Server, string, <-chan string) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("Got error: %v", err)
 	}
 	ch := make(chan string)
 	var eps []naming.Endpoint
-	if eps, err = server.Listen(veyron2.GetListenSpec(ctx)); err != nil {
+	if eps, err = server.Listen(v23.GetListenSpec(ctx)); err != nil {
 		t.Fatalf("Got error: %v", err)
 	}
 	if err := server.Serve("", device.ConfigServer(&configServer{ch}), vflag.NewAuthorizerOrDie()); err != nil {
@@ -296,7 +296,7 @@
 	ctx, shutdown := testutil.InitForTest()
 
 	configServer, configServiceName, ch := createConfigServer(t, ctx)
-	sh, err := modules.NewShell(ctx, veyron2.GetPrincipal(ctx))
+	sh, err := modules.NewShell(ctx, v23.GetPrincipal(ctx))
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
@@ -332,7 +332,7 @@
 	s := expect.NewSession(t, h.Stdout(), time.Minute)
 	s.ExpectEOF()
 	err := h.Shutdown(os.Stderr, os.Stderr)
-	want := fmt.Sprintf("exit status %d", veyron2.ForceStopExitCode)
+	want := fmt.Sprintf("exit status %d", v23.ForceStopExitCode)
 	if err == nil || err.Error() != want {
 		t.Errorf("got %v, want %s", err, want)
 	}
@@ -367,7 +367,7 @@
 		t.Errorf("Got error %v", err)
 	}
 	s := expect.NewSession(t, h.Stdout(), time.Minute)
-	s.Expect(fmt.Sprintf("Got %s", veyron2.RemoteStop))
+	s.Expect(fmt.Sprintf("Got %s", v23.RemoteStop))
 	s.Expect("Doing some work")
 	s.Expect("Doing some more work")
 	s.ExpectEOF()
diff --git a/runtimes/google/rt/rt_test.go b/runtimes/google/rt/rt_test.go
index 6610a7c..3119e49 100644
--- a/runtimes/google/rt/rt_test.go
+++ b/runtimes/google/rt/rt_test.go
@@ -9,9 +9,9 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/flags/consts"
@@ -24,7 +24,7 @@
 
 func TestInit(t *testing.T) {
 	testutil.UnsetPrincipalEnvVars()
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	l := vlog.Log
@@ -34,7 +34,7 @@
 	if !expected.MatchString(args) {
 		t.Errorf("unexpected default args: %s", args)
 	}
-	p := veyron2.GetPrincipal(ctx)
+	p := v23.GetPrincipal(ctx)
 	if p == nil {
 		t.Fatalf("A new principal should have been created")
 	}
@@ -121,7 +121,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	p := veyron2.GetPrincipal(ctx)
+	p := v23.GetPrincipal(ctx)
 	if err := validatePrincipal(p); err != nil {
 		return err
 	}
@@ -135,7 +135,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	p := veyron2.GetPrincipal(ctx)
+	p := v23.GetPrincipal(ctx)
 	if err := validatePrincipal(p); err != nil {
 		return err
 	}
@@ -234,7 +234,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	agentSh, err := modules.NewShell(ctx, veyron2.GetPrincipal(ctx))
+	agentSh, err := modules.NewShell(ctx, v23.GetPrincipal(ctx))
 	if err != nil {
 		t.Fatalf("unexpected error: %s", err)
 	}
diff --git a/runtimes/google/rt/runtime.go b/runtimes/google/rt/runtime.go
index d31348c..b421871 100644
--- a/runtimes/google/rt/runtime.go
+++ b/runtimes/google/rt/runtime.go
@@ -9,16 +9,16 @@
 	"syscall"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/i18n"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/i18n"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/flags"
 	"v.io/core/veyron/lib/stats"
@@ -50,7 +50,7 @@
 
 type vtraceDependency struct{}
 
-// Runtime implements the veyron2.Runtime interface.
+// Runtime implements the v23.Runtime interface.
 // Please see the interface definition for documentation of the
 // individiual methods.
 type Runtime struct {
@@ -62,8 +62,8 @@
 	opts       []ipc.ServerOpt
 }
 
-func Init(ctx *context.T, appCycle veyron2.AppCycle, protocols []string, listenSpec *ipc.ListenSpec, flags flags.RuntimeFlags,
-	reservedDispatcher ipc.Dispatcher, dispatcherOpts ...ipc.ServerOpt) (*Runtime, *context.T, veyron2.Shutdown, error) {
+func Init(ctx *context.T, appCycle v23.AppCycle, protocols []string, listenSpec *ipc.ListenSpec, flags flags.RuntimeFlags,
+	reservedDispatcher ipc.Dispatcher, dispatcherOpts ...ipc.ServerOpt) (*Runtime, *context.T, v23.Shutdown, error) {
 	r := &Runtime{deps: dependency.NewGraph()}
 
 	err := vlog.ConfigureLibraryLoggerFromFlags()
@@ -383,8 +383,8 @@
 	return ns
 }
 
-func (*Runtime) GetAppCycle(ctx *context.T) veyron2.AppCycle {
-	appCycle, _ := ctx.Value(appCycleKey).(veyron2.AppCycle)
+func (*Runtime) GetAppCycle(ctx *context.T) v23.AppCycle {
+	appCycle, _ := ctx.Value(appCycleKey).(v23.AppCycle)
 	return appCycle
 }
 
diff --git a/runtimes/google/rt/runtime_test.go b/runtimes/google/rt/runtime_test.go
index ca78baf..f806678 100644
--- a/runtimes/google/rt/runtime_test.go
+++ b/runtimes/google/rt/runtime_test.go
@@ -3,9 +3,9 @@
 import (
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/naming"
 
 	"v.io/core/veyron/lib/flags"
 	tsecurity "v.io/core/veyron/lib/testutil/security"
@@ -14,7 +14,7 @@
 )
 
 // InitForTest creates a context for use in a test.
-func InitForTest(t *testing.T) (*rt.Runtime, *context.T, veyron2.Shutdown) {
+func InitForTest(t *testing.T) (*rt.Runtime, *context.T, v23.Shutdown) {
 	ctx, cancel := context.RootContext()
 	r, ctx, shutdown, err := rt.Init(ctx, nil, nil, nil, flags.RuntimeFlags{}, nil)
 	if err != nil {
diff --git a/runtimes/google/rt/security.go b/runtimes/google/rt/security.go
index fd3226a..63ed87e 100644
--- a/runtimes/google/rt/security.go
+++ b/runtimes/google/rt/security.go
@@ -7,10 +7,10 @@
 	"strconv"
 	"syscall"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/mgmt"
-	"v.io/core/veyron2/security"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/mgmt"
+	"v.io/v23/security"
 
 	"v.io/core/veyron/lib/exec"
 	vsecurity "v.io/core/veyron/security"
diff --git a/runtimes/google/rt/shutdown_servers_test.go b/runtimes/google/rt/shutdown_servers_test.go
index 0b27067..60f24b2 100644
--- a/runtimes/google/rt/shutdown_servers_test.go
+++ b/runtimes/google/rt/shutdown_servers_test.go
@@ -9,10 +9,10 @@
 	"sync"
 	"syscall"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/modules"
 	"v.io/core/veyron/lib/signals"
@@ -31,11 +31,11 @@
 
 // makeServer sets up a simple dummy server.
 func makeServer(ctx *context.T) ipc.Server {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Fatalf("r.NewServer error: %s", err)
 	}
-	if _, err := server.Listen(veyron2.GetListenSpec(ctx)); err != nil {
+	if _, err := server.Listen(v23.GetListenSpec(ctx)); err != nil {
 		vlog.Fatalf("server.Listen error: %s", err)
 	}
 	if err := server.Serve("", &dummy{}, nil); err != nil {
@@ -53,10 +53,10 @@
 		for scanner.Scan() {
 			switch scanner.Text() {
 			case "stop":
-				veyron2.GetAppCycle(ctx).Stop()
+				v23.GetAppCycle(ctx).Stop()
 			case "forcestop":
 				fmt.Println("straight exit")
-				veyron2.GetAppCycle(ctx).ForceStop()
+				v23.GetAppCycle(ctx).ForceStop()
 			case "close":
 				close(done)
 				return
@@ -99,7 +99,7 @@
 	// This is how to configure handling of stop commands to allow clean
 	// shutdown.
 	stopChan := make(chan string, 2)
-	veyron2.GetAppCycle(ctx).WaitForStop(stopChan)
+	v23.GetAppCycle(ctx).WaitForStop(stopChan)
 
 	// Blocking is used to prevent the process from exiting upon receiving a
 	// second signal or stop command while critical cleanup code is
diff --git a/runtimes/google/rt/shutdown_test.go b/runtimes/google/rt/shutdown_test.go
index eeec6e0..b2201e2 100644
--- a/runtimes/google/rt/shutdown_test.go
+++ b/runtimes/google/rt/shutdown_test.go
@@ -8,7 +8,7 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
+	"v.io/v23"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/modules"
@@ -58,7 +58,7 @@
 	s := expect.NewSession(t, h.Stdout(), time.Minute)
 	s.Expect("Ready")
 	fmt.Fprintln(h.Stdin(), "stop")
-	s.Expect(fmt.Sprintf("Received signal %s", veyron2.LocalStop))
+	s.Expect(fmt.Sprintf("Received signal %s", v23.LocalStop))
 	s.Expect("Interruptible cleanup")
 	s.Expect("Deferred cleanup")
 	fmt.Fprintln(h.Stdin(), "close")
@@ -100,7 +100,7 @@
 	if err == nil {
 		t.Fatalf("expected an error")
 	}
-	if got, want := err.Error(), fmt.Sprintf("exit status %d", veyron2.ForceStopExitCode); got != want {
+	if got, want := err.Error(), fmt.Sprintf("exit status %d", v23.ForceStopExitCode); got != want {
 		t.Errorf("got %q, want %q", got, want)
 	}
 }
@@ -157,7 +157,7 @@
 	s.Expect("Ready")
 
 	fmt.Fprintln(h.Stdin(), "stop")
-	s.Expect(fmt.Sprintf("Stop %s", veyron2.LocalStop))
+	s.Expect(fmt.Sprintf("Stop %s", v23.LocalStop))
 	s.ExpectSetRE(
 		"Sequential blocking cleanup",
 		"Sequential interruptible cleanup",
@@ -212,7 +212,7 @@
 	if err == nil {
 		t.Fatalf("expected an error")
 	}
-	if got, want := err.Error(), fmt.Sprintf("exit status %d", veyron2.ForceStopExitCode); got != want {
+	if got, want := err.Error(), fmt.Sprintf("exit status %d", v23.ForceStopExitCode); got != want {
 		t.Errorf("got %q, want %q", got, want)
 	}
 }
diff --git a/runtimes/google/testing/concurrency/mutex_test.go b/runtimes/google/testing/concurrency/mutex_test.go
index f12af16..84bae53 100644
--- a/runtimes/google/testing/concurrency/mutex_test.go
+++ b/runtimes/google/testing/concurrency/mutex_test.go
@@ -11,7 +11,7 @@
 
 	"v.io/core/veyron/runtimes/google/testing/concurrency"
 	"v.io/core/veyron/runtimes/google/testing/concurrency/sync"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 var m sync.Mutex
diff --git a/runtimes/google/testing/concurrency/rwmutex_test.go b/runtimes/google/testing/concurrency/rwmutex_test.go
index 0d6a52d..2f7d9d6 100644
--- a/runtimes/google/testing/concurrency/rwmutex_test.go
+++ b/runtimes/google/testing/concurrency/rwmutex_test.go
@@ -11,7 +11,7 @@
 
 	"v.io/core/veyron/runtimes/google/testing/concurrency"
 	"v.io/core/veyron/runtimes/google/testing/concurrency/sync"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 var rw sync.RWMutex
diff --git a/runtimes/google/testing/mocks/ipc/simple_client.go b/runtimes/google/testing/mocks/ipc/simple_client.go
index 20235fb..0eeae54 100644
--- a/runtimes/google/testing/mocks/ipc/simple_client.go
+++ b/runtimes/google/testing/mocks/ipc/simple_client.go
@@ -5,12 +5,12 @@
 	"fmt"
 	"sync"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/vdl"
+	"v.io/v23/vlog"
+	"v.io/v23/vom"
 )
 
 type ClientWithTimesCalled interface {
diff --git a/runtimes/google/testing/mocks/ipc/simple_client_test.go b/runtimes/google/testing/mocks/ipc/simple_client_test.go
index f14eb7d..0e9bd15 100644
--- a/runtimes/google/testing/mocks/ipc/simple_client_test.go
+++ b/runtimes/google/testing/mocks/ipc/simple_client_test.go
@@ -3,7 +3,7 @@
 import (
 	"testing"
 
-	"v.io/core/veyron2/context"
+	"v.io/v23/context"
 )
 
 func testContext() *context.T {
diff --git a/runtimes/google/testing/mocks/naming/namespace.go b/runtimes/google/testing/mocks/naming/namespace.go
index 02927e8..d991fdb 100644
--- a/runtimes/google/testing/mocks/naming/namespace.go
+++ b/runtimes/google/testing/mocks/naming/namespace.go
@@ -6,10 +6,10 @@
 	"sync"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	vnamespace "v.io/core/veyron/runtimes/google/naming/namespace"
 )
diff --git a/runtimes/google/vtrace/store.go b/runtimes/google/vtrace/store.go
index 60b80de..b8d0f41 100644
--- a/runtimes/google/vtrace/store.go
+++ b/runtimes/google/vtrace/store.go
@@ -6,9 +6,9 @@
 	"sync"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/uniqueid"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/context"
+	"v.io/v23/uniqueid"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/flags"
 )
diff --git a/runtimes/google/vtrace/store_test.go b/runtimes/google/vtrace/store_test.go
index ac0cf61..81808e3 100644
--- a/runtimes/google/vtrace/store_test.go
+++ b/runtimes/google/vtrace/store_test.go
@@ -6,8 +6,8 @@
 	"sort"
 	"testing"
 
-	"v.io/core/veyron2/uniqueid"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/uniqueid"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/flags"
 )
diff --git a/runtimes/google/vtrace/vtrace.go b/runtimes/google/vtrace/vtrace.go
index 17db581..4787e3e 100644
--- a/runtimes/google/vtrace/vtrace.go
+++ b/runtimes/google/vtrace/vtrace.go
@@ -7,10 +7,10 @@
 	"fmt"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/uniqueid"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/context"
+	"v.io/v23/uniqueid"
+	"v.io/v23/vlog"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/flags"
 )
diff --git a/runtimes/google/vtrace/vtrace_test.go b/runtimes/google/vtrace/vtrace_test.go
index 8ef5ece..c06f654 100644
--- a/runtimes/google/vtrace/vtrace_test.go
+++ b/runtimes/google/vtrace/vtrace_test.go
@@ -5,13 +5,13 @@
 	"strings"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -94,7 +94,7 @@
 		return nil, err
 	}
 
-	if _, err := s.Listen(veyron2.GetListenSpec(ctx)); err != nil {
+	if _, err := s.Listen(v23.GetListenSpec(ctx)); err != nil {
 		return nil, err
 	}
 
