diff --git a/lib/appcycle/appcycle.go b/lib/appcycle/appcycle.go
index fe5d392..11adb5e 100644
--- a/lib/appcycle/appcycle.go
+++ b/lib/appcycle/appcycle.go
@@ -5,18 +5,18 @@
 	"os"
 	"sync"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/vlog"
 
-	stub "v.io/core/veyron2/services/mgmt/appcycle"
+	stub "v.io/v23/services/mgmt/appcycle"
 )
 
 type AppCycle struct {
 	sync.RWMutex
 	waiters      []chan<- string
-	taskTrackers []chan<- veyron2.Task
-	task         veyron2.Task
+	taskTrackers []chan<- v23.Task
+	task         v23.Task
 	shutDown     bool
 	disp         *invoker
 }
@@ -49,7 +49,7 @@
 	defer m.RUnlock()
 	if len(m.waiters) == 0 {
 		vlog.Infof("Unhandled stop. Exiting.")
-		os.Exit(veyron2.UnhandledStopExitCode)
+		os.Exit(v23.UnhandledStopExitCode)
 	}
 	for _, w := range m.waiters {
 		select {
@@ -60,11 +60,11 @@
 }
 
 func (m *AppCycle) Stop() {
-	m.stop(veyron2.LocalStop)
+	m.stop(v23.LocalStop)
 }
 
 func (*AppCycle) ForceStop() {
-	os.Exit(veyron2.ForceStopExitCode)
+	os.Exit(v23.ForceStopExitCode)
 }
 
 func (m *AppCycle) WaitForStop(ch chan<- string) {
@@ -73,7 +73,7 @@
 	m.waiters = append(m.waiters, ch)
 }
 
-func (m *AppCycle) TrackTask(ch chan<- veyron2.Task) {
+func (m *AppCycle) TrackTask(ch chan<- v23.Task) {
 	m.Lock()
 	defer m.Unlock()
 	if m.shutDown {
@@ -123,10 +123,10 @@
 	vlog.Infof("AppCycle Stop request from %v", blessings)
 	// The size of the channel should be reasonably sized to expect not to
 	// miss updates while we're waiting for the stream to unblock.
-	ch := make(chan veyron2.Task, 10)
+	ch := make(chan v23.Task, 10)
 	d.ac.TrackTask(ch)
 	// TODO(caprita): Include identity of Stop issuer in message.
-	d.ac.stop(veyron2.RemoteStop)
+	d.ac.stop(v23.RemoteStop)
 	for {
 		task, ok := <-ch
 		if !ok {
diff --git a/lib/exec/config.go b/lib/exec/config.go
index f6eae2e..e505b17 100644
--- a/lib/exec/config.go
+++ b/lib/exec/config.go
@@ -3,8 +3,8 @@
 import (
 	"sync"
 
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/verror"
+	"v.io/v23/vom"
 )
 
 // Config defines a simple key-value configuration.  Keys and values are
diff --git a/lib/exec/config_test.go b/lib/exec/config_test.go
index cdda17f..6e131c5 100644
--- a/lib/exec/config_test.go
+++ b/lib/exec/config_test.go
@@ -4,7 +4,7 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2/verror"
+	"v.io/v23/verror"
 )
 
 func checkPresent(t *testing.T, c Config, k, wantV string) {
diff --git a/lib/exec/parent.go b/lib/exec/parent.go
index 229f44e..927de09 100644
--- a/lib/exec/parent.go
+++ b/lib/exec/parent.go
@@ -14,7 +14,7 @@
 	"syscall"
 	"time"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/exec/consts"
 	"v.io/core/veyron/lib/timekeeper"
diff --git a/lib/expect/expect.go b/lib/expect/expect.go
index 8388d99..ced77bc 100644
--- a/lib/expect/expect.go
+++ b/lib/expect/expect.go
@@ -49,7 +49,7 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 var (
diff --git a/lib/filelocker/locker.go b/lib/filelocker/locker.go
index 36765bc..81e417c 100644
--- a/lib/filelocker/locker.go
+++ b/lib/filelocker/locker.go
@@ -6,7 +6,7 @@
 	"os"
 	"syscall"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 // Unlocker is the interface to unlock a locked file.
diff --git a/lib/modules/core/core_test.go b/lib/modules/core/core_test.go
index 90a8a4e..45ac050 100644
--- a/lib/modules/core/core_test.go
+++ b/lib/modules/core/core_test.go
@@ -10,7 +10,7 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/flags/consts"
diff --git a/lib/modules/core/echo.go b/lib/modules/core/echo.go
index 04b7e60..37e86c3 100644
--- a/lib/modules/core/echo.go
+++ b/lib/modules/core/echo.go
@@ -6,9 +6,9 @@
 	"os"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
 
 	"v.io/core/veyron/lib/modules"
 )
@@ -47,17 +47,17 @@
 }
 
 func echoServer(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	id, mp := args[0], args[1]
 	disp := &treeDispatcher{id: id}
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		return err
 	}
 	defer server.Stop()
-	eps, err := server.Listen(veyron2.GetListenSpec(ctx))
+	eps, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		return err
 	}
@@ -73,12 +73,12 @@
 }
 
 func echoClient(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	name := args[0]
 	args = args[1:]
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	for _, a := range args {
 		h, err := client.StartCall(ctx, name, "Echo", []interface{}{a})
 		if err != nil {
diff --git a/lib/modules/core/mounttable.go b/lib/modules/core/mounttable.go
index f102b2f..1e95b34 100644
--- a/lib/modules/core/mounttable.go
+++ b/lib/modules/core/mounttable.go
@@ -7,9 +7,9 @@
 	"os"
 	"strings"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
+	"v.io/v23"
+	"v.io/v23/naming"
+	"v.io/v23/options"
 
 	"v.io/core/veyron/lib/modules"
 	mounttable "v.io/core/veyron/services/mounttable/lib"
@@ -37,11 +37,11 @@
 }
 
 func runMT(root bool, stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	lspec := veyron2.GetListenSpec(ctx)
-	server, err := veyron2.NewServer(ctx, options.ServesMountTable(true))
+	lspec := v23.GetListenSpec(ctx)
+	server, err := v23.NewServer(ctx, options.ServesMountTable(true))
 	if err != nil {
 		return fmt.Errorf("root failed: %v", err)
 	}
@@ -72,10 +72,10 @@
 }
 
 func ls(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 	entry := 0
 	output := ""
 	for _, pattern := range args {
diff --git a/lib/modules/core/proxy.go b/lib/modules/core/proxy.go
index 691d1ca..2cfbd04 100644
--- a/lib/modules/core/proxy.go
+++ b/lib/modules/core/proxy.go
@@ -6,8 +6,8 @@
 	"os"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
+	"v.io/v23"
+	"v.io/v23/naming"
 
 	"v.io/core/veyron/lib/modules"
 	"v.io/core/veyron/runtimes/google/ipc/stream/proxy"
@@ -19,7 +19,7 @@
 }
 
 func proxyServer(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	expected := len(args)
@@ -28,11 +28,11 @@
 		return err
 	}
 
-	listenSpec := veyron2.GetListenSpec(ctx)
+	listenSpec := v23.GetListenSpec(ctx)
 	protocol := listenSpec.Addrs[0].Protocol
 	addr := listenSpec.Addrs[0].Address
 
-	proxy, err := proxy.New(rid, veyron2.GetPrincipal(ctx), protocol, addr, "")
+	proxy, err := proxy.New(rid, v23.GetPrincipal(ctx), protocol, addr, "")
 	if err != nil {
 		return err
 	}
@@ -40,7 +40,7 @@
 
 	fmt.Fprintf(stdout, "PID=%d\n", os.Getpid())
 	if expected > 0 {
-		pub := publisher.New(ctx, veyron2.GetNamespace(ctx), time.Minute)
+		pub := publisher.New(ctx, v23.GetNamespace(ctx), time.Minute)
 		defer pub.WaitForStop()
 		defer pub.Stop()
 		pub.AddServer(proxy.Endpoint().String(), false)
diff --git a/lib/modules/core/test_identityd.go b/lib/modules/core/test_identityd.go
index 87fe38a..080fe6d 100644
--- a/lib/modules/core/test_identityd.go
+++ b/lib/modules/core/test_identityd.go
@@ -8,7 +8,7 @@
 	"strconv"
 	"time"
 
-	"v.io/core/veyron2"
+	"v.io/v23"
 
 	"v.io/core/veyron/lib/modules"
 
@@ -35,7 +35,7 @@
 	// Duration to use for tls cert and blessing duration.
 	duration := 365 * 24 * time.Hour
 
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	// If no tlsconfig has been provided, generate new cert and key and use them.
@@ -79,7 +79,7 @@
 		caveats.NewMockCaveatSelector(),
 		nil)
 
-	l := veyron2.GetListenSpec(ctx)
+	l := v23.GetListenSpec(ctx)
 
 	_, veyronEPs, externalHttpaddress := s.Listen(ctx, &l, *host, *httpaddr, *tlsconfig)
 
diff --git a/lib/modules/core/wspr.go b/lib/modules/core/wspr.go
index 8e38a84..8388f48 100644
--- a/lib/modules/core/wspr.go
+++ b/lib/modules/core/wspr.go
@@ -8,7 +8,7 @@
 	"v.io/core/veyron/lib/modules"
 	"v.io/wspr/veyron/services/wsprd/wspr"
 
-	"v.io/core/veyron2"
+	"v.io/v23"
 )
 
 var (
@@ -21,10 +21,10 @@
 }
 
 func startWSPR(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	l := veyron2.GetListenSpec(ctx)
+	l := v23.GetListenSpec(ctx)
 	proxy := wspr.NewWSPR(ctx, *port, &l, *identd, nil)
 	defer proxy.Shutdown()
 
diff --git a/lib/modules/exec.go b/lib/modules/exec.go
index 9775a71..12698a6 100644
--- a/lib/modules/exec.go
+++ b/lib/modules/exec.go
@@ -11,8 +11,8 @@
 	"time"
 
 	vexec "v.io/core/veyron/lib/exec"
-	"v.io/core/veyron2/mgmt"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/mgmt"
+	"v.io/v23/vlog"
 )
 
 // execHandle implements both the command and Handle interfaces.
diff --git a/lib/modules/func.go b/lib/modules/func.go
index 24f1fde..4ed9a44 100644
--- a/lib/modules/func.go
+++ b/lib/modules/func.go
@@ -7,7 +7,7 @@
 	"sync"
 	"time"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 type pipe struct {
diff --git a/lib/modules/modules_test.go b/lib/modules/modules_test.go
index 87f5cba..847b828 100644
--- a/lib/modules/modules_test.go
+++ b/lib/modules/modules_test.go
@@ -22,7 +22,7 @@
 	"v.io/core/veyron/lib/testutil/security"
 	_ "v.io/core/veyron/profiles"
 
-	"v.io/core/veyron2"
+	"v.io/v23"
 )
 
 const credentialsEnvPrefix = "\"" + consts.VeyronCredentials + "="
@@ -71,7 +71,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	blessing := veyron2.GetPrincipal(ctx).BlessingStore().Default()
+	blessing := v23.GetPrincipal(ctx).BlessingStore().Default()
 	fmt.Fprintf(stdout, "%s", blessing)
 	return nil
 }
diff --git a/lib/modules/registry.go b/lib/modules/registry.go
index 555c1a2..93669e9 100644
--- a/lib/modules/registry.go
+++ b/lib/modules/registry.go
@@ -9,7 +9,7 @@
 	"sync"
 	"time"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 
 	vexec "v.io/core/veyron/lib/exec"
 )
diff --git a/lib/modules/shell.go b/lib/modules/shell.go
index 071a08e..243914c 100644
--- a/lib/modules/shell.go
+++ b/lib/modules/shell.go
@@ -46,14 +46,14 @@
 	"syscall"
 	"time"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 
 	"v.io/core/veyron/lib/exec"
 	"v.io/core/veyron/lib/flags/consts"
 	"v.io/core/veyron/security/agent"
 	"v.io/core/veyron/security/agent/keymgr"
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 )
 
 const (
@@ -97,7 +97,7 @@
 	}
 	var err error
 	ctx, sh.cancelCtx = context.WithCancel(ctx)
-	if ctx, err = veyron2.SetNewStreamManager(ctx); err != nil {
+	if ctx, err = v23.SetNewStreamManager(ctx); err != nil {
 		return nil, err
 	}
 	sh.ctx = ctx
@@ -110,7 +110,7 @@
 	}
 	sh.principal = p
 	if sh.principal == nil {
-		sh.principal = veyron2.GetPrincipal(ctx)
+		sh.principal = v23.GetPrincipal(ctx)
 	}
 	return sh, nil
 }
@@ -136,7 +136,7 @@
 	}()
 	ctx, cancel := context.WithCancel(sh.ctx)
 	defer cancel()
-	if ctx, err = veyron2.SetNewStreamManager(ctx); err != nil {
+	if ctx, err = v23.SetNewStreamManager(ctx); err != nil {
 		return nil, err
 	}
 	syscall.ForkLock.RLock()
@@ -147,7 +147,7 @@
 	}
 	syscall.CloseOnExec(fd)
 	syscall.ForkLock.RUnlock()
-	p, err := agent.NewAgentPrincipal(ctx, fd, veyron2.GetClient(ctx))
+	p, err := agent.NewAgentPrincipal(ctx, fd, v23.GetClient(ctx))
 	if err != nil {
 		syscall.Close(fd)
 		return nil, err
diff --git a/lib/modules/util.go b/lib/modules/util.go
index 6379255..c14ccce 100644
--- a/lib/modules/util.go
+++ b/lib/modules/util.go
@@ -10,8 +10,8 @@
 
 	vsecurity "v.io/core/veyron/security"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 )
 
 func newLogfile(prefix, name string) (*os.File, error) {
diff --git a/lib/netconfig/ipaux_bsd.go b/lib/netconfig/ipaux_bsd.go
index 64924a0..83c8463 100644
--- a/lib/netconfig/ipaux_bsd.go
+++ b/lib/netconfig/ipaux_bsd.go
@@ -15,7 +15,7 @@
 	"syscall"
 	"time"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 /*
diff --git a/lib/netconfig/ipaux_linux.go b/lib/netconfig/ipaux_linux.go
index 9afc7dd..19faa99 100644
--- a/lib/netconfig/ipaux_linux.go
+++ b/lib/netconfig/ipaux_linux.go
@@ -15,7 +15,7 @@
 	"time"
 	"unsafe"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 /*
diff --git a/lib/netstate/netstate.go b/lib/netstate/netstate.go
index e13a62f..673168c 100644
--- a/lib/netstate/netstate.go
+++ b/lib/netstate/netstate.go
@@ -52,7 +52,7 @@
 	"net"
 	"strings"
 
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 
 	"v.io/core/veyron/lib/netconfig"
 )
diff --git a/lib/netstate/netstate_test.go b/lib/netstate/netstate_test.go
index 71d3596..a774ec9 100644
--- a/lib/netstate/netstate_test.go
+++ b/lib/netstate/netstate_test.go
@@ -5,7 +5,7 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 
 	"v.io/core/veyron/lib/netconfig"
 	"v.io/core/veyron/lib/netstate"
diff --git a/lib/netstate/route.go b/lib/netstate/route.go
index f430147..58515b9 100644
--- a/lib/netstate/route.go
+++ b/lib/netstate/route.go
@@ -5,7 +5,7 @@
 	"net"
 	"strings"
 
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 
 	"v.io/core/veyron/lib/netconfig"
 )
diff --git a/lib/signals/signals.go b/lib/signals/signals.go
index 564c6c6..2401413 100644
--- a/lib/signals/signals.go
+++ b/lib/signals/signals.go
@@ -6,8 +6,8 @@
 	"syscall"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 )
 
 type stopSignal string
@@ -68,7 +68,7 @@
 				sawStop = true
 				if ctx != nil {
 					stopWaiter := make(chan string, 1)
-					veyron2.GetAppCycle(ctx).WaitForStop(stopWaiter)
+					v23.GetAppCycle(ctx).WaitForStop(stopWaiter)
 					go func() {
 						for {
 							ch <- stopSignal(<-stopWaiter)
diff --git a/lib/signals/signals_test.go b/lib/signals/signals_test.go
index e427ca9..7be3b58 100644
--- a/lib/signals/signals_test.go
+++ b/lib/signals/signals_test.go
@@ -11,13 +11,13 @@
 	"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/core/veyron2/vtrace"
+	"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/v23/vtrace"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/modules"
@@ -46,7 +46,7 @@
 	ctx, shutdown := testutil.InitForTest()
 
 	closeStopLoop := make(chan struct{})
-	go stopLoop(veyron2.GetAppCycle(ctx).Stop, stdin, closeStopLoop)
+	go stopLoop(v23.GetAppCycle(ctx).Stop, stdin, closeStopLoop)
 	wait := ShutdownOnSignals(ctx, signals...)
 	fmt.Fprintf(stdout, "ready\n")
 	fmt.Fprintf(stdout, "received signal %s\n", <-wait)
@@ -74,7 +74,7 @@
 	defer shutdown()
 
 	closeStopLoop := make(chan struct{})
-	go stopLoop(veyron2.GetAppCycle(ctx).Stop, stdin, closeStopLoop)
+	go stopLoop(v23.GetAppCycle(ctx).Stop, stdin, closeStopLoop)
 	ShutdownOnSignals(ctx)
 	fmt.Fprintf(stdout, "ready\n")
 	<-closeStopLoop
@@ -143,7 +143,7 @@
 	defer sh.Cleanup(os.Stderr, os.Stderr)
 	s.Expect("ready")
 	fmt.Fprintf(h.Stdin(), "stop\n")
-	s.Expectf("received signal %s", veyron2.LocalStop)
+	s.Expectf("received signal %s", v23.LocalStop)
 	fmt.Fprintf(h.Stdin(), "close\n")
 	s.ExpectEOF()
 
@@ -160,7 +160,7 @@
 	defer sh.Cleanup(os.Stderr, os.Stderr)
 	s.Expect("ready")
 	fmt.Fprintf(h.Stdin(), "stop\n")
-	s.Expectf("received signal %s", veyron2.LocalStop)
+	s.Expectf("received signal %s", v23.LocalStop)
 	fmt.Fprintf(h.Stdin(), "close\n")
 	s.ExpectEOF()
 }
@@ -184,7 +184,7 @@
 	defer sh.Cleanup(os.Stderr, os.Stderr)
 	s.Expect("ready")
 	fmt.Fprintf(h.Stdin(), "stop\n")
-	testExitStatus(t, h, s, veyron2.UnhandledStopExitCode)
+	testExitStatus(t, h, s, v23.UnhandledStopExitCode)
 }
 
 // TestDoubleSignal verifies that sending a succession of two signals to a child
@@ -233,7 +233,7 @@
 	defer sh.Cleanup(os.Stderr, os.Stderr)
 	s.Expect("ready")
 	fmt.Fprintf(h.Stdin(), "stop\n")
-	s.Expectf("received signal %s", veyron2.LocalStop)
+	s.Expectf("received signal %s", v23.LocalStop)
 	fmt.Fprintf(h.Stdin(), "stop\n")
 	testExitStatus(t, h, s, DoubleStopExitCode)
 }
@@ -335,13 +335,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 ep []naming.Endpoint
-	if ep, err = server.Listen(veyron2.GetListenSpec(ctx)); err != nil {
+	if ep, 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 {
@@ -386,7 +386,7 @@
 	if err := stream.Finish(); err != nil {
 		t.Fatalf("Got error: %v", err)
 	}
-	s.Expectf("received signal %s", veyron2.RemoteStop)
+	s.Expectf("received signal %s", v23.RemoteStop)
 	fmt.Fprintf(h.Stdin(), "close\n")
 	s.ExpectEOF()
 }
diff --git a/lib/testutil/dispatcher.go b/lib/testutil/dispatcher.go
index 9516794..0b1d3ae 100644
--- a/lib/testutil/dispatcher.go
+++ b/lib/testutil/dispatcher.go
@@ -1,8 +1,8 @@
 package testutil
 
 import (
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
 )
 
 // LeafDispatcher returns a dispatcher for a single object obj, using
diff --git a/lib/testutil/glob.go b/lib/testutil/glob.go
index 90cdd5c..2bed5df 100644
--- a/lib/testutil/glob.go
+++ b/lib/testutil/glob.go
@@ -4,16 +4,16 @@
 	"io"
 	"sort"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
 )
 
 // GlobName calls __Glob on the given object with the given pattern and returns
 // a sorted list of matching object names, or an error.
 func GlobName(ctx *context.T, name, pattern string) ([]string, error) {
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, ipc.GlobMethod, []interface{}{pattern})
 	if err != nil {
 		return nil, err
diff --git a/lib/testutil/init.go b/lib/testutil/init.go
index 277d1b3..34eaeb3 100644
--- a/lib/testutil/init.go
+++ b/lib/testutil/init.go
@@ -20,9 +20,9 @@
 
 	tsecurity "v.io/core/veyron/lib/testutil/security"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/vlog"
 )
 
 const (
@@ -118,13 +118,13 @@
 // InitForTest initializes a new context.T and sets a freshly created principal
 // (with a single self-signed blessing) on it. The principal setting step is skipped
 // if this function is invoked from a process run using the modules package.
-func InitForTest() (*context.T, veyron2.Shutdown) {
-	ctx, shutdown := veyron2.Init()
+func InitForTest() (*context.T, v23.Shutdown) {
+	ctx, shutdown := v23.Init()
 	if len(os.Getenv("VEYRON_SHELL_HELPER_PROCESS_ENTRY_POINT")) != 0 {
 		return ctx, shutdown
 	}
 	var err error
-	if ctx, err = veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal(TestBlessing)); err != nil {
+	if ctx, err = v23.SetPrincipal(ctx, tsecurity.NewPrincipal(TestBlessing)); err != nil {
 		panic(err)
 	}
 	return ctx, shutdown
diff --git a/lib/testutil/security/util.go b/lib/testutil/security/util.go
index 9a93530..148e70e 100644
--- a/lib/testutil/security/util.go
+++ b/lib/testutil/security/util.go
@@ -28,8 +28,8 @@
 
 	vsecurity "v.io/core/veyron/security"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
 )
 
 func newCredentials() (string, security.Principal) {
diff --git a/lib/testutil/security/util_test.go b/lib/testutil/security/util_test.go
index a1e2927..b8bd2d9 100644
--- a/lib/testutil/security/util_test.go
+++ b/lib/testutil/security/util_test.go
@@ -7,8 +7,8 @@
 	"sort"
 	"testing"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
 
 	_ "v.io/core/veyron/profiles"
 	vsecurity "v.io/core/veyron/security"
diff --git a/lib/testutil/v23tests/v23tests.go b/lib/testutil/v23tests/v23tests.go
index 2b77e43..d223688 100644
--- a/lib/testutil/v23tests/v23tests.go
+++ b/lib/testutil/v23tests/v23tests.go
@@ -87,9 +87,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/modules"
@@ -123,7 +123,7 @@
 	TB
 
 	// The function to shutdown the context used to create the environment.
-	shutdown veyron2.Shutdown
+	shutdown v23.Shutdown
 
 	// The shell to use to start commands.
 	shell *modules.Shell
@@ -746,11 +746,11 @@
 //     ...
 //   }
 func New(t TB) *T {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 
 	vlog.Infof("creating root principal")
 	principal := tsecurity.NewPrincipal("root")
-	ctx, err := veyron2.SetPrincipal(ctx, principal)
+	ctx, err := v23.SetPrincipal(ctx, principal)
 	if err != nil {
 		t.Fatalf("failed to set principal: %v", err)
 	}
diff --git a/lib/testutil/v23tests/v23tests_test.go b/lib/testutil/v23tests/v23tests_test.go
index c792e1f..eba5db6 100644
--- a/lib/testutil/v23tests/v23tests_test.go
+++ b/lib/testutil/v23tests/v23tests_test.go
@@ -12,8 +12,8 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/naming"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/modules"
diff --git a/lib/unixfd/unixfd.go b/lib/unixfd/unixfd.go
index 8f73871..c5dd0c4 100644
--- a/lib/unixfd/unixfd.go
+++ b/lib/unixfd/unixfd.go
@@ -14,7 +14,7 @@
 	"time"
 	"unsafe"
 
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 )
 
 const Network string = "unixfd"
diff --git a/lib/websocket/listener.go b/lib/websocket/listener.go
index 087c0d6..71f4167 100644
--- a/lib/websocket/listener.go
+++ b/lib/websocket/listener.go
@@ -12,7 +12,7 @@
 
 	"github.com/gorilla/websocket"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/tcputil"
 	"v.io/core/veyron/runtimes/google/lib/upcqueue"
diff --git a/lib/websocket/util_test.go b/lib/websocket/util_test.go
index fe06ec1..e94c9bf 100644
--- a/lib/websocket/util_test.go
+++ b/lib/websocket/util_test.go
@@ -11,7 +11,7 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 )
 
 //go:generate v23 test generate
diff --git a/lib/websocket/ws_test.go b/lib/websocket/ws_test.go
index 9c7d8a9..172a68d 100644
--- a/lib/websocket/ws_test.go
+++ b/lib/websocket/ws_test.go
@@ -5,7 +5,7 @@
 	"sync"
 	"testing"
 
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/ipc"
 
 	"v.io/core/veyron/lib/websocket"
 )
diff --git a/profiles/chrome/chromeinit.go b/profiles/chrome/chromeinit.go
index e0740c1..004e245 100644
--- a/profiles/chrome/chromeinit.go
+++ b/profiles/chrome/chromeinit.go
@@ -5,10 +5,10 @@
 import (
 	"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"
 
 	"v.io/core/veyron/lib/flags"
 	"v.io/core/veyron/lib/websocket"
@@ -21,12 +21,12 @@
 var commonFlags *flags.Flags
 
 func init() {
-	veyron2.RegisterProfileInit(Init)
+	v23.RegisterProfileInit(Init)
 	ipc.RegisterUnknownProtocol("wsh", websocket.Dial, websocket.Listener)
 	commonFlags = flags.CreateAndRegister(flag.CommandLine, flags.Runtime)
 }
 
-func Init(ctx *context.T) (veyron2.Runtime, *context.T, veyron2.Shutdown, error) {
+func Init(ctx *context.T) (v23.Runtime, *context.T, v23.Shutdown, error) {
 	if err := internal.ParseFlags(commonFlags); err != nil {
 		return nil, nil, nil, err
 	}
diff --git a/profiles/doc.go b/profiles/doc.go
index 5f5920b..205cf69 100644
--- a/profiles/doc.go
+++ b/profiles/doc.go
@@ -1,5 +1,5 @@
 // Package Profiles, and its children, provide implementations of the
-// veyron2.Profile interface. These implementations should import all of the
+// v23.Profile interface. These implementations should import all of the
 // packages that they require to implement Profile-specific functionality.
 //
 // The taxonomy used to organise Profiles may be arbitrary and the directory
diff --git a/profiles/fake/fake.go b/profiles/fake/fake.go
index ab90ff3..0837993 100644
--- a/profiles/fake/fake.go
+++ b/profiles/fake/fake.go
@@ -1,16 +1,16 @@
 package fake
 
 import (
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	"v.io/core/veyron/runtimes/fake"
 )
 
 func init() {
-	veyron2.RegisterProfileInit(Init)
+	v23.RegisterProfileInit(Init)
 }
 
-func Init(ctx *context.T) (veyron2.Runtime, *context.T, veyron2.Shutdown, error) {
+func Init(ctx *context.T) (v23.Runtime, *context.T, v23.Shutdown, error) {
 	return fake.Init(ctx)
 }
diff --git a/profiles/gce/init.go b/profiles/gce/init.go
index 23d3480..0b1c462 100644
--- a/profiles/gce/init.go
+++ b/profiles/gce/init.go
@@ -9,10 +9,10 @@
 	"fmt"
 	"net"
 
-	"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/appcycle"
 	"v.io/core/veyron/lib/flags"
@@ -29,12 +29,12 @@
 var commonFlags *flags.Flags
 
 func init() {
-	veyron2.RegisterProfileInit(Init)
+	v23.RegisterProfileInit(Init)
 	ipc.RegisterUnknownProtocol("wsh", websocket.HybridDial, websocket.HybridListener)
 	commonFlags = flags.CreateAndRegister(flag.CommandLine, flags.Runtime, flags.Listen)
 }
 
-func Init(ctx *context.T) (veyron2.Runtime, *context.T, veyron2.Shutdown, error) {
+func Init(ctx *context.T) (v23.Runtime, *context.T, v23.Shutdown, error) {
 	if !gce.RunningOnGCE() {
 		return nil, nil, nil, fmt.Errorf("GCE profile used on a non-GCE system")
 	}
diff --git a/profiles/genericinit.go b/profiles/genericinit.go
index 7bdcf9f..4e6f352 100644
--- a/profiles/genericinit.go
+++ b/profiles/genericinit.go
@@ -3,10 +3,10 @@
 import (
 	"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"
 
 	"v.io/core/veyron/lib/appcycle"
 	"v.io/core/veyron/lib/flags"
@@ -21,14 +21,14 @@
 var commonFlags *flags.Flags
 
 func init() {
-	veyron2.RegisterProfileInit(Init)
+	v23.RegisterProfileInit(Init)
 	ipc.RegisterUnknownProtocol("wsh", websocket.HybridDial, websocket.HybridListener)
 	flags.SetDefaultProtocol("tcp")
 	flags.SetDefaultHostPort("127.0.0.1:0")
 	commonFlags = flags.CreateAndRegister(flag.CommandLine, flags.Runtime, flags.Listen)
 }
 
-func Init(ctx *context.T) (veyron2.Runtime, *context.T, veyron2.Shutdown, error) {
+func Init(ctx *context.T) (v23.Runtime, *context.T, v23.Shutdown, error) {
 	if err := internal.ParseFlags(commonFlags); err != nil {
 		return nil, nil, nil, err
 	}
diff --git a/profiles/internal/gce_linux.go b/profiles/internal/gce_linux.go
index fbf9ac3..492ef46 100644
--- a/profiles/internal/gce_linux.go
+++ b/profiles/internal/gce_linux.go
@@ -5,7 +5,7 @@
 import (
 	"net"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/profiles/internal/gce"
 )
diff --git a/profiles/internal/gce_other.go b/profiles/internal/gce_other.go
index 1a4c2bc..c8d67da 100644
--- a/profiles/internal/gce_other.go
+++ b/profiles/internal/gce_other.go
@@ -5,7 +5,7 @@
 import (
 	"net"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 // GCEPublicAddress returns the public IP address of the GCE instance
diff --git a/profiles/internal/platform/platform_darwin.go b/profiles/internal/platform/platform_darwin.go
index e87eb77..c29dd6d 100644
--- a/profiles/internal/platform/platform_darwin.go
+++ b/profiles/internal/platform/platform_darwin.go
@@ -7,18 +7,18 @@
 import (
 	"fmt"
 
-	"v.io/core/veyron2"
+	"v.io/v23"
 )
 
 // Platform returns the description of the Platform this process is running on.
-// A default value for veyron2.Platform is provided even if an error is
+// A default value for v23.Platform is provided even if an error is
 // returned; nil is never returned for the first return result.
-func Platform() (*veyron2.Platform, error) {
+func Platform() (*v23.Platform, error) {
 	var t C.struct_utsname
 	if r, err := C.uname(&t); r != 0 {
-		return &veyron2.Platform{}, fmt.Errorf("uname failed: errno %d", err)
+		return &v23.Platform{}, fmt.Errorf("uname failed: errno %d", err)
 	}
-	d := &veyron2.Platform{
+	d := &v23.Platform{
 		Vendor:  "google",
 		Model:   "generic",
 		System:  C.GoString(&t.sysname[0]),
diff --git a/profiles/internal/platform/platform_linux.go b/profiles/internal/platform/platform_linux.go
index d70fbce..34a55ac 100644
--- a/profiles/internal/platform/platform_linux.go
+++ b/profiles/internal/platform/platform_linux.go
@@ -3,18 +3,18 @@
 import (
 	"syscall"
 
-	"v.io/core/veyron2"
+	"v.io/v23"
 )
 
 // Platform returns the description of the Platform this process is running on.
-// A default value for veyron2.Platform is provided even if an error is
+// A default value for v23.Platform is provided even if an error is
 // returned; nil is never returned for the first return result.
-func Platform() (*veyron2.Platform, error) {
+func Platform() (*v23.Platform, error) {
 	var uts syscall.Utsname
 	if err := syscall.Uname(&uts); err != nil {
-		return &veyron2.Platform{}, err
+		return &v23.Platform{}, err
 	}
-	d := &veyron2.Platform{
+	d := &v23.Platform{
 		Vendor:  "google",
 		Model:   "generic",
 		System:  utsStr(uts.Sysname[:]),
diff --git a/profiles/internal/platform/platform_nacl.go b/profiles/internal/platform/platform_nacl.go
index 3b2eb12..e9274bc 100644
--- a/profiles/internal/platform/platform_nacl.go
+++ b/profiles/internal/platform/platform_nacl.go
@@ -3,14 +3,14 @@
 package platform
 
 import (
-	"v.io/core/veyron2"
+	"v.io/v23"
 )
 
 // Platform returns the description of the Platform this process is running on.
-// A default value for veyron2.Platform is provided even if an error is
+// A default value for v23.Platform is provided even if an error is
 // returned; nil is never returned for the first return result.
-func Platform() (*veyron2.Platform, error) {
-	d := &veyron2.Platform{
+func Platform() (*v23.Platform, error) {
+	d := &v23.Platform{
 		Vendor:  "google",
 		Model:   "generic",
 		System:  "nacl",
diff --git a/profiles/internal/util.go b/profiles/internal/util.go
index 4c03b6e..05de7e0 100644
--- a/profiles/internal/util.go
+++ b/profiles/internal/util.go
@@ -5,8 +5,8 @@
 	"os"
 	"strings"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/exec"
 	"v.io/core/veyron/lib/flags"
diff --git a/profiles/roaming/net_watcher.go b/profiles/roaming/net_watcher.go
index 2784430..79271b4 100644
--- a/profiles/roaming/net_watcher.go
+++ b/profiles/roaming/net_watcher.go
@@ -6,15 +6,15 @@
 	"fmt"
 	"strings"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/config"
+	"v.io/v23"
+	"v.io/v23/config"
 
 	"v.io/core/veyron/lib/netstate"
 	"v.io/core/veyron/profiles/roaming"
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	profileName := "roaming"
@@ -24,7 +24,7 @@
 	routes := netstate.GetRoutes()
 	fmt.Printf("Routes:\n%s\n", strings.Replace(routes.String(), ")", ")\n", -1))
 
-	listenSpec := veyron2.GetListenSpec(ctx)
+	listenSpec := v23.GetListenSpec(ctx)
 	chooser := listenSpec.AddressChooser
 	if chooser != nil {
 		if gce, err := chooser("", nil); err == nil {
@@ -40,7 +40,7 @@
 	}
 
 	ch := make(chan config.Setting, 10)
-	settings, err := veyron2.GetPublisher(ctx).ForkStream(roaming.SettingsStreamName, ch)
+	settings, err := v23.GetPublisher(ctx).ForkStream(roaming.SettingsStreamName, ch)
 	if err != nil {
 		r.Logger().Infof("failed to fork stream: %s", err)
 	}
diff --git a/profiles/roaming/roaming_server.go b/profiles/roaming/roaming_server.go
index e6b6276..5f927eb 100644
--- a/profiles/roaming/roaming_server.go
+++ b/profiles/roaming/roaming_server.go
@@ -6,23 +6,23 @@
 	"fmt"
 	"log"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/vlog"
 
 	_ "v.io/core/veyron/profiles/roaming"
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Fatalf("unexpected error: %q", err)
 	}
 
-	listenSpec := veyron2.GetListenSpec(ctx)
+	listenSpec := v23.GetListenSpec(ctx)
 	fmt.Printf("listen spec: %v\n", listenSpec)
 
 	_, err = server.Listen(listenSpec)
diff --git a/profiles/roaming/roaminginit.go b/profiles/roaming/roaminginit.go
index 3e6de0b..fb37a18 100644
--- a/profiles/roaming/roaminginit.go
+++ b/profiles/roaming/roaminginit.go
@@ -13,11 +13,11 @@
 import (
 	"flag"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/config"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/config"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/appcycle"
 	"v.io/core/veyron/lib/flags"
@@ -42,12 +42,12 @@
 var commonFlags *flags.Flags
 
 func init() {
-	veyron2.RegisterProfileInit(Init)
+	v23.RegisterProfileInit(Init)
 	ipc.RegisterUnknownProtocol("wsh", websocket.HybridDial, websocket.HybridListener)
 	commonFlags = flags.CreateAndRegister(flag.CommandLine, flags.Runtime, flags.Listen)
 }
 
-func Init(ctx *context.T) (veyron2.Runtime, *context.T, veyron2.Shutdown, error) {
+func Init(ctx *context.T) (v23.Runtime, *context.T, v23.Shutdown, error) {
 	if err := internal.ParseFlags(commonFlags); err != nil {
 		return nil, nil, nil, err
 	}
diff --git a/profiles/static/staticinit.go b/profiles/static/staticinit.go
index 966b0dc..b3d15a9 100644
--- a/profiles/static/staticinit.go
+++ b/profiles/static/staticinit.go
@@ -3,10 +3,10 @@
 import (
 	"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"
 
 	"v.io/core/veyron/lib/appcycle"
 	"v.io/core/veyron/lib/flags"
@@ -26,12 +26,12 @@
 var commonFlags *flags.Flags
 
 func init() {
-	veyron2.RegisterProfileInit(Init)
+	v23.RegisterProfileInit(Init)
 	ipc.RegisterUnknownProtocol("wsh", websocket.HybridDial, websocket.HybridListener)
 	commonFlags = flags.CreateAndRegister(flag.CommandLine, flags.Runtime, flags.Listen)
 }
 
-func Init(ctx *context.T) (veyron2.Runtime, *context.T, veyron2.Shutdown, error) {
+func Init(ctx *context.T) (v23.Runtime, *context.T, v23.Shutdown, error) {
 	if err := internal.ParseFlags(commonFlags); err != nil {
 		return nil, nil, nil, err
 	}
diff --git a/runtimes/GO.PACKAGE b/runtimes/GO.PACKAGE
index 7b02a22..b128dc2 100644
--- a/runtimes/GO.PACKAGE
+++ b/runtimes/GO.PACKAGE
@@ -2,7 +2,7 @@
 	"dependencies": {
 		"incoming": [
 			{"allow": "v.io/core/veyron/runtimes/..."},
-			{"allow": "v.io/core/veyron2/rt/..."},
+			{"allow": "v.io/v23/rt/..."},
 			{"allow": "v.io/core/veyron/lib/...", "comment":"temporarily allowing dependency from lib"},
 			{"allow": "v.io/core/veyron/profiles/...", "comment":"temporarily allowing dependency from profiles"},
 			{"allow": "v.io/core/veyron/services/...", "comment": "temporarily allowing dependency from services"},
diff --git a/runtimes/fake/fake_test.go b/runtimes/fake/fake_test.go
index c61a963..c81fc16 100644
--- a/runtimes/fake/fake_test.go
+++ b/runtimes/fake/fake_test.go
@@ -3,14 +3,14 @@
 import (
 	"testing"
 
-	"v.io/core/veyron2"
+	"v.io/v23"
 
 	_ "v.io/core/veyron/profiles/fake"
 )
 
 // Ensure that the fake profile can be used to initialize a fake runtime.
 func TestInit(t *testing.T) {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	if !ctx.Initialized() {
diff --git a/runtimes/fake/ipc.go b/runtimes/fake/ipc.go
index 5470a5a..d6902eb 100644
--- a/runtimes/fake/ipc.go
+++ b/runtimes/fake/ipc.go
@@ -1,8 +1,8 @@
 package fake
 
 import (
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
 )
 
 // SetClient can be used to inject a mock client implementation into the context.
diff --git a/runtimes/fake/naming.go b/runtimes/fake/naming.go
index 4028324..cae4553 100644
--- a/runtimes/fake/naming.go
+++ b/runtimes/fake/naming.go
@@ -1,8 +1,8 @@
 package fake
 
 import (
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/context"
+	"v.io/v23/naming"
 )
 
 func (r *Runtime) NewEndpoint(ep string) (naming.Endpoint, error) {
diff --git a/runtimes/fake/runtime.go b/runtimes/fake/runtime.go
index 4f5bd29..94ed44f 100644
--- a/runtimes/fake/runtime.go
+++ b/runtimes/fake/runtime.go
@@ -4,9 +4,9 @@
 package fake
 
 import (
-	"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"
 
 	tsecurity "v.io/core/veyron/lib/testutil/security"
 )
@@ -22,7 +22,7 @@
 
 type Runtime struct{}
 
-func Init(ctx *context.T) (*Runtime, *context.T, veyron2.Shutdown, error) {
+func Init(ctx *context.T) (*Runtime, *context.T, v23.Shutdown, error) {
 	ctx = context.WithValue(ctx, principalKey, tsecurity.NewPrincipal())
 	return &Runtime{}, ctx, func() {}, nil
 }
@@ -40,7 +40,7 @@
 	return p
 }
 
-func (r *Runtime) GetAppCycle(ctx *context.T) veyron2.AppCycle {
+func (r *Runtime) GetAppCycle(ctx *context.T) v23.AppCycle {
 	panic("unimplemented")
 }
 
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
 	}
 
diff --git a/security/agent/agent_test.go b/security/agent/agent_test.go
index b2061dd..dbb7226 100644
--- a/security/agent/agent_test.go
+++ b/security/agent/agent_test.go
@@ -18,9 +18,9 @@
 	"v.io/core/veyron/security/agent"
 	"v.io/core/veyron/security/agent/server"
 
-	"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"
 )
 
 //go:generate v23 test generate
@@ -29,7 +29,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	p := veyron2.GetPrincipal(ctx)
+	p := v23.GetPrincipal(ctx)
 	fmt.Fprintf(stdout, "DEFAULT_BLESSING=%s\n", p.BlessingStore().Default())
 	ioutil.ReadAll(stdin)
 	return nil
@@ -41,9 +41,9 @@
 		return nil, err
 	}
 	if cached {
-		return agent.NewAgentPrincipal(ctx, fd, veyron2.GetClient(ctx))
+		return agent.NewAgentPrincipal(ctx, fd, v23.GetClient(ctx))
 	} else {
-		return agent.NewUncachedPrincipal(ctx, fd, veyron2.GetClient(ctx))
+		return agent.NewUncachedPrincipal(ctx, fd, v23.GetClient(ctx))
 	}
 }
 
@@ -67,7 +67,7 @@
 }
 
 func setupAgent(ctx *context.T, caching bool) security.Principal {
-	sock, err := server.RunAnonymousAgent(ctx, veyron2.GetPrincipal(ctx))
+	sock, err := server.RunAnonymousAgent(ctx, v23.GetPrincipal(ctx))
 	if err != nil {
 		panic(err)
 	}
@@ -220,7 +220,7 @@
 func BenchmarkSignNoAgent(b *testing.B) {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	runSignBenchmark(b, veyron2.GetPrincipal(ctx))
+	runSignBenchmark(b, v23.GetPrincipal(ctx))
 }
 
 func BenchmarkSignCachedAgent(b *testing.B) {
@@ -238,7 +238,7 @@
 func BenchmarkDefaultNoAgent(b *testing.B) {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	runDefaultBenchmark(b, veyron2.GetPrincipal(ctx))
+	runDefaultBenchmark(b, v23.GetPrincipal(ctx))
 }
 
 func BenchmarkDefaultCachedAgent(b *testing.B) {
@@ -256,7 +256,7 @@
 func BenchmarkRecognizedNegativeNoAgent(b *testing.B) {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	runRecognizedNegativeBenchmark(b, veyron2.GetPrincipal(ctx))
+	runRecognizedNegativeBenchmark(b, v23.GetPrincipal(ctx))
 }
 
 func BenchmarkRecognizedNegativeCachedAgent(b *testing.B) {
@@ -274,7 +274,7 @@
 func BenchmarkRecognizedNoAgent(b *testing.B) {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	runRecognizedBenchmark(b, veyron2.GetPrincipal(ctx))
+	runRecognizedBenchmark(b, v23.GetPrincipal(ctx))
 }
 
 func BenchmarkRecognizedCachedAgent(b *testing.B) {
diff --git a/security/agent/agentd/main.go b/security/agent/agentd/main.go
index 6f004e3..fae28b2 100644
--- a/security/agent/agentd/main.go
+++ b/security/agent/agentd/main.go
@@ -19,9 +19,9 @@
 	"v.io/core/veyron/security/agent"
 	"v.io/core/veyron/security/agent/server"
 
-	"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"
 )
 
 var (
@@ -71,7 +71,7 @@
 	var dir string
 	if f := flag.Lookup("veyron.credentials").Value; true {
 		dir = f.String()
-		// Clear out the flag value to prevent veyron2.Init from
+		// Clear out the flag value to prevent v23.Init from
 		// trying to load this password protected principal.
 		f.Set("")
 	}
@@ -84,14 +84,14 @@
 		vlog.Fatalf("failed to create new principal from dir(%s): %v", dir, err)
 	}
 
-	// Clear out the environment variable before veyron2.Init.
+	// Clear out the environment variable before v23.Init.
 	if err = os.Setenv(consts.VeyronCredentials, ""); err != nil {
 		vlog.Fatalf("setenv: %v", err)
 	}
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	if ctx, err = veyron2.SetPrincipal(ctx, p); err != nil {
+	if ctx, err = v23.SetPrincipal(ctx, p); err != nil {
 		vlog.Panic("failed to set principal for ctx: %v", err)
 	}
 
diff --git a/security/agent/cache/cache.go b/security/agent/cache/cache.go
index 73865dd..67c4d85 100644
--- a/security/agent/cache/cache.go
+++ b/security/agent/cache/cache.go
@@ -7,10 +7,10 @@
 	"sync"
 
 	"v.io/core/veyron/security/agent/lru"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 )
 
 const (
diff --git a/security/agent/cache/cache_test.go b/security/agent/cache/cache_test.go
index 1321657..2093f29 100644
--- a/security/agent/cache/cache_test.go
+++ b/security/agent/cache/cache_test.go
@@ -7,7 +7,7 @@
 	"testing"
 	tsecurity "v.io/core/veyron/lib/testutil/security"
 	isecurity "v.io/core/veyron/security"
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 func createRoots() (security.PublicKey, security.BlessingRoots, *cachedRoots) {
diff --git a/security/agent/client.go b/security/agent/client.go
index dc47c95..85f379a 100644
--- a/security/agent/client.go
+++ b/security/agent/client.go
@@ -9,13 +9,13 @@
 
 	"v.io/core/veyron/lib/unixfd"
 	"v.io/core/veyron/security/agent/cache"
-	"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/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/vlog"
+	"v.io/v23/vtrace"
 )
 
 // FdVarName is the name of the environment variable containing
diff --git a/security/agent/keymgr/client.go b/security/agent/keymgr/client.go
index 28f1601..219cea1 100644
--- a/security/agent/keymgr/client.go
+++ b/security/agent/keymgr/client.go
@@ -10,8 +10,8 @@
 
 	"v.io/core/veyron/lib/unixfd"
 	"v.io/core/veyron/security/agent/server"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/context"
+	"v.io/v23/verror"
 )
 
 const pkgPath = "v.io/core/veyron/security/agent/keymgr"
diff --git a/security/agent/keymgr/keymgr_test.go b/security/agent/keymgr/keymgr_test.go
index 40ca1af..91525e6 100644
--- a/security/agent/keymgr/keymgr_test.go
+++ b/security/agent/keymgr/keymgr_test.go
@@ -13,9 +13,9 @@
 	"v.io/core/veyron/security/agent"
 	"v.io/core/veyron/security/agent/server"
 
-	"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 createAgent(ctx *context.T, path string) (*Agent, func(), error) {
@@ -68,7 +68,7 @@
 		return nil, err
 	}
 
-	return agent.NewAgentPrincipal(ctx, fd, veyron2.GetClient(ctx))
+	return agent.NewAgentPrincipal(ctx, fd, v23.GetClient(ctx))
 }
 
 func TestSigning(t *testing.T) {
diff --git a/security/agent/peer_test.go b/security/agent/peer_test.go
index 23e1d12..5d10d89 100644
--- a/security/agent/peer_test.go
+++ b/security/agent/peer_test.go
@@ -1,9 +1,9 @@
 package agent
 
 import (
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
 )
 
 func NewUncachedPrincipal(ctx *context.T, fd int, insecureClient ipc.Client) (security.Principal, error) {
diff --git a/security/agent/pingpong/main.go b/security/agent/pingpong/main.go
index a77a7a5..eb77d08 100644
--- a/security/agent/pingpong/main.go
+++ b/security/agent/pingpong/main.go
@@ -4,12 +4,12 @@
 	"flag"
 	"fmt"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"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/options"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/signals"
 	"v.io/core/veyron/lib/testutil"
@@ -36,7 +36,7 @@
 }
 
 func serverMain(ctx *context.T) {
-	s, err := veyron2.NewServer(ctx)
+	s, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Fatal("failure creating server: ", err)
 	}
diff --git a/security/agent/pingpong/wire.vdl.go b/security/agent/pingpong/wire.vdl.go
index acf1a5a..0520e95 100644
--- a/security/agent/pingpong/wire.vdl.go
+++ b/security/agent/pingpong/wire.vdl.go
@@ -5,9 +5,9 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
 )
 
 // PingPongClientMethods is the client interface
@@ -44,7 +44,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implPingPongClientStub) Ping(ctx *context.T, i0 string, opts ...ipc.CallOpt) (o0 string, err error) {
diff --git a/security/agent/server/server.go b/security/agent/server/server.go
index c397152..0842b6b 100644
--- a/security/agent/server/server.go
+++ b/security/agent/server/server.go
@@ -16,13 +16,13 @@
 
 	"v.io/core/veyron/lib/unixfd"
 	vsecurity "v.io/core/veyron/security"
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"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/options"
+	"v.io/v23/security"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 const PrincipalHandleByteSize = sha512.Size
@@ -246,7 +246,7 @@
 				// Also, VCSecurityNone implies that s (ipc.Server) created below does not
 				// authenticate to clients, so runtime.Principal is irrelevant for the agent.
 				// TODO(ribrdb): Shutdown these servers when the connection is closed.
-				s, err := veyron2.NewServer(ctx, options.VCSecurityNone)
+				s, err := v23.NewServer(ctx, options.VCSecurityNone)
 				if err != nil {
 					vlog.Infof("Error creating server: %v", err)
 					ack()
diff --git a/security/agent/server/wire.vdl b/security/agent/server/wire.vdl
index d1736d1..9202cd7 100644
--- a/security/agent/server/wire.vdl
+++ b/security/agent/server/wire.vdl
@@ -31,7 +31,7 @@
 package server
 
 import (
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 type Agent interface {
diff --git a/security/agent/server/wire.vdl.go b/security/agent/server/wire.vdl.go
index 9d0933a..27d61aa 100644
--- a/security/agent/server/wire.vdl.go
+++ b/security/agent/server/wire.vdl.go
@@ -6,12 +6,12 @@
 import (
 	// VDL system imports
 	"io"
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
 
 	// VDL user imports
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // AgentClientMethods is the client interface
@@ -67,7 +67,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implAgentClientStub) Bless(ctx *context.T, i0 []byte, i1 security.WireBlessings, i2 string, i3 security.Caveat, i4 []security.Caveat, opts ...ipc.CallOpt) (o0 security.WireBlessings, err error) {
diff --git a/security/agent/test_principal/main.go b/security/agent/test_principal/main.go
index d7fa60e..c5126f3 100644
--- a/security/agent/test_principal/main.go
+++ b/security/agent/test_principal/main.go
@@ -11,8 +11,8 @@
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/security"
+	"v.io/v23"
+	"v.io/v23/security"
 )
 
 func newKey() security.PublicKey {
@@ -43,7 +43,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	p := veyron2.GetPrincipal(ctx)
+	p := v23.GetPrincipal(ctx)
 
 	// BlessSelf
 	b, err := p.BlessSelf("batman")
diff --git a/security/audit/principal.go b/security/audit/principal.go
index 54656f8..530b1b2 100644
--- a/security/audit/principal.go
+++ b/security/audit/principal.go
@@ -4,7 +4,7 @@
 	"fmt"
 	"time"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // NewPrincipal returns a security.Principal implementation that logs
diff --git a/security/audit/principal_test.go b/security/audit/principal_test.go
index 6aaeea3..1c06253 100644
--- a/security/audit/principal_test.go
+++ b/security/audit/principal_test.go
@@ -11,7 +11,7 @@
 	"time"
 
 	"v.io/core/veyron/security/audit"
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 func TestAuditingPrincipal(t *testing.T) {
diff --git a/security/blessingroots.go b/security/blessingroots.go
index e2318e2..c06fe6a 100644
--- a/security/blessingroots.go
+++ b/security/blessingroots.go
@@ -9,7 +9,7 @@
 
 	"v.io/core/veyron/security/serialization"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // blessingRoots implements security.BlessingRoots.
diff --git a/security/blessingroots_test.go b/security/blessingroots_test.go
index c27f86d..143ccec 100644
--- a/security/blessingroots_test.go
+++ b/security/blessingroots_test.go
@@ -6,7 +6,7 @@
 	"os"
 	"testing"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 type rootsTester [3]security.PublicKey
diff --git a/security/blessingstore.go b/security/blessingstore.go
index 74ed21c..a683dd8 100644
--- a/security/blessingstore.go
+++ b/security/blessingstore.go
@@ -10,8 +10,8 @@
 
 	"v.io/core/veyron/security/serialization"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 )
 
 var errStoreAddMismatch = errors.New("blessing's public key does not match store's public key")
diff --git a/security/blessingstore_test.go b/security/blessingstore_test.go
index a9c5581..f855419 100644
--- a/security/blessingstore_test.go
+++ b/security/blessingstore_test.go
@@ -7,7 +7,7 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 type storeTester struct {
diff --git a/security/flag/flag.go b/security/flag/flag.go
index 88c913e..54dbf8e 100644
--- a/security/flag/flag.go
+++ b/security/flag/flag.go
@@ -8,8 +8,8 @@
 	"flag"
 	"os"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
 
 	"v.io/core/veyron/lib/flags"
 )
diff --git a/security/flag/flag_test.go b/security/flag/flag_test.go
index 8419343..68095fc 100644
--- a/security/flag/flag_test.go
+++ b/security/flag/flag_test.go
@@ -9,8 +9,8 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
 
 	"v.io/core/veyron/lib/modules"
 	tsecurity "v.io/core/veyron/lib/testutil/security"
diff --git a/security/principal.go b/security/principal.go
index 35fe248..2a420dc 100644
--- a/security/principal.go
+++ b/security/principal.go
@@ -6,7 +6,7 @@
 	"os"
 	"path"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 const (
diff --git a/security/principal_test.go b/security/principal_test.go
index 99e512f..54d1721 100644
--- a/security/principal_test.go
+++ b/security/principal_test.go
@@ -10,7 +10,7 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 func TestLoadPersistentPrincipal(t *testing.T) {
diff --git a/security/serialization/serialization_test.go b/security/serialization/serialization_test.go
index b280f0c..0b3cfd6 100644
--- a/security/serialization/serialization_test.go
+++ b/security/serialization/serialization_test.go
@@ -17,7 +17,7 @@
 	"v.io/core/veyron/lib/testutil"
 	"v.io/core/veyron/security/serialization"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // We call our own TestMain here because v23 test generate causes an import cycle
diff --git a/security/serialization/signing_writer.go b/security/serialization/signing_writer.go
index ea9ce43..716a99b 100644
--- a/security/serialization/signing_writer.go
+++ b/security/serialization/signing_writer.go
@@ -8,8 +8,8 @@
 	"hash"
 	"io"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/security"
+	"v.io/v23/vom"
 )
 
 const defaultChunkSizeBytes = 1 << 20
diff --git a/security/serialization/types.vdl b/security/serialization/types.vdl
index e185799..feb80b2 100644
--- a/security/serialization/types.vdl
+++ b/security/serialization/types.vdl
@@ -1,6 +1,6 @@
 package serialization
 
-import "v.io/core/veyron2/security"
+import "v.io/v23/security"
 
 type SignedHeader struct {
   ChunkSizeBytes int64
diff --git a/security/serialization/types.vdl.go b/security/serialization/types.vdl.go
index dc1df3e..db10bba 100644
--- a/security/serialization/types.vdl.go
+++ b/security/serialization/types.vdl.go
@@ -5,10 +5,10 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2/vdl"
+	"v.io/v23/vdl"
 
 	// VDL user imports
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 type SignedHeader struct {
diff --git a/security/serialization/verifying_reader.go b/security/serialization/verifying_reader.go
index 0ec5853..4da95c2 100644
--- a/security/serialization/verifying_reader.go
+++ b/security/serialization/verifying_reader.go
@@ -8,8 +8,8 @@
 	"fmt"
 	"io"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/security"
+	"v.io/v23/vom"
 )
 
 // verifyingReader implements io.Reader.
diff --git a/security/storage.go b/security/storage.go
index 308b238..80cbcc7 100644
--- a/security/storage.go
+++ b/security/storage.go
@@ -5,8 +5,8 @@
 	"io"
 
 	"v.io/core/veyron/security/serialization"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/security"
+	"v.io/v23/vom"
 )
 
 func encodeAndStore(obj interface{}, data, signature io.WriteCloser, signer serialization.Signer) error {
diff --git a/security/testutil_test.go b/security/testutil_test.go
index ff04043..973d753 100644
--- a/security/testutil_test.go
+++ b/security/testutil_test.go
@@ -4,7 +4,7 @@
 	"fmt"
 	"strings"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 func matchesError(got error, want string) error {
diff --git a/security/util.go b/security/util.go
index f7cff3f..48ed167 100644
--- a/security/util.go
+++ b/security/util.go
@@ -11,7 +11,7 @@
 	"io"
 	"io/ioutil"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 const ecPrivateKeyPEMType = "EC PRIVATE KEY"
diff --git a/services/config/lib/config.go b/services/config/lib/config.go
index d2aa0da..c80ffda 100644
--- a/services/config/lib/config.go
+++ b/services/config/lib/config.go
@@ -17,8 +17,8 @@
 	"strings"
 	"sync"
 
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"github.com/presotto/go-mdns-sd"
 	"github.com/presotto/go-mdns-sd/go_dns"
diff --git a/services/identity/auditor/blessing_auditor.go b/services/identity/auditor/blessing_auditor.go
index d6858ae..631fdbd 100644
--- a/services/identity/auditor/blessing_auditor.go
+++ b/services/identity/auditor/blessing_auditor.go
@@ -7,8 +7,8 @@
 	"time"
 
 	"v.io/core/veyron/security/audit"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/security"
+	"v.io/v23/vom"
 )
 
 // BlessingLogReader provides the Read method to read audit logs.
diff --git a/services/identity/auditor/blessing_auditor_test.go b/services/identity/auditor/blessing_auditor_test.go
index ab0dadc..28ba42e 100644
--- a/services/identity/auditor/blessing_auditor_test.go
+++ b/services/identity/auditor/blessing_auditor_test.go
@@ -7,7 +7,7 @@
 
 	vsecurity "v.io/core/veyron/security"
 	"v.io/core/veyron/security/audit"
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 func TestBlessingAuditor(t *testing.T) {
diff --git a/services/identity/auditor/sql_database.go b/services/identity/auditor/sql_database.go
index ac7eadd..11bb841 100644
--- a/services/identity/auditor/sql_database.go
+++ b/services/identity/auditor/sql_database.go
@@ -5,7 +5,7 @@
 	"fmt"
 	"time"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 type database interface {
diff --git a/services/identity/blesser/macaroon.go b/services/identity/blesser/macaroon.go
index e7a85be..c31b28f 100644
--- a/services/identity/blesser/macaroon.go
+++ b/services/identity/blesser/macaroon.go
@@ -8,9 +8,9 @@
 	"v.io/core/veyron/services/identity/oauth"
 	"v.io/core/veyron/services/identity/util"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/vom"
 )
 
 type macaroonBlesser struct {
diff --git a/services/identity/blesser/macaroon_test.go b/services/identity/blesser/macaroon_test.go
index 910aa66..acbd53b 100644
--- a/services/identity/blesser/macaroon_test.go
+++ b/services/identity/blesser/macaroon_test.go
@@ -9,8 +9,8 @@
 	"v.io/core/veyron/services/identity/oauth"
 	"v.io/core/veyron/services/identity/util"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/security"
+	"v.io/v23/vom"
 )
 
 func TestMacaroonBlesser(t *testing.T) {
diff --git a/services/identity/blesser/oauth.go b/services/identity/blesser/oauth.go
index 504173a..4329cba 100644
--- a/services/identity/blesser/oauth.go
+++ b/services/identity/blesser/oauth.go
@@ -10,8 +10,8 @@
 	"v.io/core/veyron/services/identity/revocation"
 	"v.io/core/veyron/services/identity/util"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
 )
 
 type oauthBlesser struct {
diff --git a/services/identity/blesser/oauth_test.go b/services/identity/blesser/oauth_test.go
index 12c3edc..9add34d 100644
--- a/services/identity/blesser/oauth_test.go
+++ b/services/identity/blesser/oauth_test.go
@@ -7,7 +7,7 @@
 
 	"v.io/core/veyron/services/identity/oauth"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 func TestOAuthBlesser(t *testing.T) {
diff --git a/services/identity/blesser/util_test.go b/services/identity/blesser/util_test.go
index b20ef76..4a3590b 100644
--- a/services/identity/blesser/util_test.go
+++ b/services/identity/blesser/util_test.go
@@ -3,8 +3,8 @@
 import (
 	vsecurity "v.io/core/veyron/security"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
 )
 
 type serverCall struct {
diff --git a/services/identity/caveats/caveat_factory.go b/services/identity/caveats/caveat_factory.go
index 79f1c4d..8083dc0 100644
--- a/services/identity/caveats/caveat_factory.go
+++ b/services/identity/caveats/caveat_factory.go
@@ -6,7 +6,7 @@
 
 	"v.io/core/veyron/services/identity/revocation"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 type CaveatFactory interface {
diff --git a/services/identity/handlers/blessing_root.go b/services/identity/handlers/blessing_root.go
index 3e5869c..fd0e3b7 100644
--- a/services/identity/handlers/blessing_root.go
+++ b/services/identity/handlers/blessing_root.go
@@ -7,7 +7,7 @@
 	"net/http"
 
 	"v.io/core/veyron/services/identity/util"
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // BlessingRoot is an http.Handler implementation that renders the server's
diff --git a/services/identity/handlers/handlers_test.go b/services/identity/handlers/handlers_test.go
index 2fac754..8ec7577 100644
--- a/services/identity/handlers/handlers_test.go
+++ b/services/identity/handlers/handlers_test.go
@@ -9,7 +9,7 @@
 	"sort"
 	"testing"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 
 	tsecurity "v.io/core/veyron/lib/testutil/security"
 )
diff --git a/services/identity/identity.vdl b/services/identity/identity.vdl
index 5c7d16b..8f0a722 100644
--- a/services/identity/identity.vdl
+++ b/services/identity/identity.vdl
@@ -1,7 +1,7 @@
 // Package identity defines services for identity providers in the veyron ecosystem.
 package identity
 
-import "v.io/core/veyron2/security"
+import "v.io/v23/security"
 
 // OAuthBlesser exchanges OAuth access tokens for
 // an email address from an OAuth-based identity provider and uses the email
diff --git a/services/identity/identity.vdl.go b/services/identity/identity.vdl.go
index 7a3bd45..1333080 100644
--- a/services/identity/identity.vdl.go
+++ b/services/identity/identity.vdl.go
@@ -6,12 +6,12 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
 
 	// VDL user imports
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // OAuthBlesserClientMethods is the client interface
@@ -62,7 +62,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implOAuthBlesserClientStub) BlessUsingAccessToken(ctx *context.T, i0 string, opts ...ipc.CallOpt) (o0 security.WireBlessings, o1 string, err error) {
@@ -202,7 +202,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implMacaroonBlesserClientStub) Bless(ctx *context.T, i0 string, opts ...ipc.CallOpt) (o0 security.WireBlessings, err error) {
diff --git a/services/identity/identityd/main.go b/services/identity/identityd/main.go
index d93ba4e..b4bcadd 100644
--- a/services/identity/identityd/main.go
+++ b/services/identity/identityd/main.go
@@ -10,8 +10,8 @@
 	"os"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/vlog"
 
 	_ "v.io/core/veyron/profiles/static"
 	"v.io/core/veyron/services/identity/auditor"
@@ -39,7 +39,7 @@
 func main() {
 	flag.Var(&emailClassifier, "email_classifier", "A comma-separated list of <domain>=<prefix> pairs. For example 'google.com=internal,v.io=trusted'. When specified, then the blessings generated for email address of <domain> will use the extension <prefix>/<email> instead of the default extension of users/<email>.")
 	flag.Usage = usage
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	var sqlDB *sql.DB
@@ -65,7 +65,7 @@
 		vlog.Fatalf("Failed to start RevocationManager: %v", err)
 	}
 
-	listenSpec := veyron2.GetListenSpec(ctx)
+	listenSpec := v23.GetListenSpec(ctx)
 	s := server.NewIdentityServer(
 		googleoauth,
 		auditor,
diff --git a/services/identity/identityd_test/main.go b/services/identity/identityd_test/main.go
index 72dfa70..3bc1055 100644
--- a/services/identity/identityd_test/main.go
+++ b/services/identity/identityd_test/main.go
@@ -7,8 +7,8 @@
 	"os"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/vlog"
 
 	_ "v.io/core/veyron/profiles/static"
 	"v.io/core/veyron/services/identity/auditor"
@@ -55,10 +55,10 @@
 		RevocationManager: revocationManager,
 	}
 
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	listenSpec := veyron2.GetListenSpec(ctx)
+	listenSpec := v23.GetListenSpec(ctx)
 	s := server.NewIdentityServer(
 		oauthProvider,
 		auditor,
diff --git a/services/identity/oauth/googleoauth.go b/services/identity/oauth/googleoauth.go
index 1cbf32c..c743af0 100644
--- a/services/identity/oauth/googleoauth.go
+++ b/services/identity/oauth/googleoauth.go
@@ -7,7 +7,7 @@
 	"net/http"
 	"os"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 // googleOAuth implements the OAuthProvider interface with google oauth 2.0.
diff --git a/services/identity/oauth/handler.go b/services/identity/oauth/handler.go
index 5ae52ae..b4b9184 100644
--- a/services/identity/oauth/handler.go
+++ b/services/identity/oauth/handler.go
@@ -34,9 +34,9 @@
 	"v.io/core/veyron/services/identity/caveats"
 	"v.io/core/veyron/services/identity/revocation"
 	"v.io/core/veyron/services/identity/util"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
+	"v.io/v23/vom"
 )
 
 const (
diff --git a/services/identity/revocation/caveat.vdl b/services/identity/revocation/caveat.vdl
index 673e29f..a3f46f4 100644
--- a/services/identity/revocation/caveat.vdl
+++ b/services/identity/revocation/caveat.vdl
@@ -1,8 +1,8 @@
 package revocation
 
 import (
-	"v.io/core/veyron2/uniqueid"
-	"v.io/core/veyron2/security"
+	"v.io/v23/uniqueid"
+	"v.io/v23/security"
 )
 
 // NotRevokedCaveat is used to implement revocation.
diff --git a/services/identity/revocation/caveat.vdl.go b/services/identity/revocation/caveat.vdl.go
index 7f440da..ad9c504 100644
--- a/services/identity/revocation/caveat.vdl.go
+++ b/services/identity/revocation/caveat.vdl.go
@@ -5,11 +5,11 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2/vdl"
+	"v.io/v23/vdl"
 
 	// VDL user imports
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/uniqueid"
+	"v.io/v23/security"
+	"v.io/v23/uniqueid"
 )
 
 // NotRevokedCaveat is used to implement revocation.
diff --git a/services/identity/revocation/revocation_manager.go b/services/identity/revocation/revocation_manager.go
index 16a56f7..9dbd491 100644
--- a/services/identity/revocation/revocation_manager.go
+++ b/services/identity/revocation/revocation_manager.go
@@ -8,7 +8,7 @@
 	"sync"
 	"time"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // RevocationManager persists information for revocation caveats to provided discharges and allow for future revocations.
diff --git a/services/identity/revocation/revocation_test.go b/services/identity/revocation/revocation_test.go
index 2aa0291..043f942 100644
--- a/services/identity/revocation/revocation_test.go
+++ b/services/identity/revocation/revocation_test.go
@@ -8,18 +8,18 @@
 	services "v.io/core/veyron/services/security"
 	"v.io/core/veyron/services/security/discharger"
 
-	"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 revokerSetup(t *testing.T, ctx *context.T) (dischargerKey security.PublicKey, dischargerEndpoint string, revoker RevocationManager, closeFunc func()) {
 	revokerService := NewMockRevocationManager()
-	dischargerServer, err := veyron2.NewServer(ctx)
+	dischargerServer, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("r.NewServer: %s", err)
 	}
-	dischargerEPs, err := dischargerServer.Listen(veyron2.GetListenSpec(ctx))
+	dischargerEPs, err := dischargerServer.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Fatalf("dischargerServer.Listen failed: %v", err)
 	}
@@ -27,7 +27,7 @@
 	if err := dischargerServer.Serve("", dischargerServiceStub, nil); err != nil {
 		t.Fatalf("dischargerServer.Serve revoker: %s", err)
 	}
-	return veyron2.GetPrincipal(ctx).PublicKey(),
+	return v23.GetPrincipal(ctx).PublicKey(),
 		dischargerEPs[0].Name(),
 		revokerService,
 		func() {
diff --git a/services/identity/server/identityd.go b/services/identity/server/identityd.go
index 52640f0..37a2be8 100644
--- a/services/identity/server/identityd.go
+++ b/services/identity/server/identityd.go
@@ -10,13 +10,13 @@
 	"reflect"
 	"strings"
 
-	"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/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"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/signals"
 	"v.io/core/veyron/security/audit"
@@ -71,8 +71,8 @@
 }
 
 func (s *IdentityServer) Serve(ctx *context.T, listenSpec *ipc.ListenSpec, host, httpaddr, tlsconfig string) {
-	ctx, err := veyron2.SetPrincipal(ctx, audit.NewPrincipal(
-		veyron2.GetPrincipal(ctx), s.auditor))
+	ctx, err := v23.SetPrincipal(ctx, audit.NewPrincipal(
+		v23.GetPrincipal(ctx), s.auditor))
 	if err != nil {
 		vlog.Panic(err)
 	}
@@ -84,7 +84,7 @@
 	// Setup handlers
 
 	// json-encoded public key and blessing names of this server
-	principal := veyron2.GetPrincipal(ctx)
+	principal := v23.GetPrincipal(ctx)
 	http.Handle("/blessing-root", handlers.BlessingRoot{principal})
 
 	macaroonKey := make([]byte, 32)
@@ -154,18 +154,18 @@
 
 // Starts the blessing services and the discharging service on the same port.
 func (s *IdentityServer) setupServices(ctx *context.T, listenSpec *ipc.ListenSpec, macaroonKey []byte) (ipc.Server, []string, error) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		return nil, nil, fmt.Errorf("failed to create new ipc.Server: %v", err)
 	}
 
-	principal := veyron2.GetPrincipal(ctx)
+	principal := v23.GetPrincipal(ctx)
 	objectAddr := naming.Join("identity", fmt.Sprintf("%v", principal.BlessingStore().Default()))
 	var rootedObjectAddr string
 	if eps, err := server.Listen(*listenSpec); err != nil {
 		defer server.Stop()
 		return nil, nil, fmt.Errorf("server.Listen(%v) failed: %v", *listenSpec, err)
-	} else if nsroots := veyron2.GetNamespace(ctx).Roots(); len(nsroots) >= 1 {
+	} else if nsroots := v23.GetNamespace(ctx).Roots(); len(nsroots) >= 1 {
 		rootedObjectAddr = naming.Join(nsroots[0], objectAddr)
 	} else {
 		rootedObjectAddr = eps[0].Name()
diff --git a/services/identity/util/csrf.go b/services/identity/util/csrf.go
index 1b7c49a..dea8933 100644
--- a/services/identity/util/csrf.go
+++ b/services/identity/util/csrf.go
@@ -9,8 +9,8 @@
 	"net/http"
 	"time"
 
-	"v.io/core/veyron2/vlog"
-	"v.io/core/veyron2/vom"
+	"v.io/v23/vlog"
+	"v.io/v23/vom"
 )
 
 const (
diff --git a/services/identity/util/write.go b/services/identity/util/write.go
index 8d7544c..4f265b8 100644
--- a/services/identity/util/write.go
+++ b/services/identity/util/write.go
@@ -5,7 +5,7 @@
 	"html/template"
 	"net/http"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 // HTTPBadRequest sends an HTTP 400 error on 'w' and renders a pretty page.
diff --git a/services/mgmt/application/applicationd/applicationd_v23_test.go b/services/mgmt/application/applicationd/applicationd_v23_test.go
index 7fa3406..7570990 100644
--- a/services/mgmt/application/applicationd/applicationd_v23_test.go
+++ b/services/mgmt/application/applicationd/applicationd_v23_test.go
@@ -8,8 +8,8 @@
 	libsecurity "v.io/core/veyron/lib/testutil/security"
 	"v.io/core/veyron/lib/testutil/v23tests"
 	vsecurity "v.io/core/veyron/security"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
+	"v.io/v23/naming"
+	"v.io/v23/security"
 )
 
 //go:generate v23 test generate
diff --git a/services/mgmt/application/applicationd/main.go b/services/mgmt/application/applicationd/main.go
index 7faae65..697e098 100644
--- a/services/mgmt/application/applicationd/main.go
+++ b/services/mgmt/application/applicationd/main.go
@@ -3,8 +3,8 @@
 import (
 	"flag"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/signals"
 	_ "v.io/core/veyron/profiles/roaming"
@@ -17,14 +17,14 @@
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	if *store == "" {
 		vlog.Fatalf("Specify a directory for storing application envelopes using --store=<name>")
 	}
 
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Fatalf("NewServer() failed: %v", err)
 	}
@@ -35,7 +35,7 @@
 		vlog.Fatalf("NewDispatcher() failed: %v", err)
 	}
 
-	ls := veyron2.GetListenSpec(ctx)
+	ls := v23.GetListenSpec(ctx)
 	endpoints, err := server.Listen(ls)
 	if err != nil {
 		vlog.Fatalf("Listen(%s) failed: %v", ls, err)
diff --git a/services/mgmt/application/impl/acl_test.go b/services/mgmt/application/impl/acl_test.go
index c86b6ff..ee70124 100644
--- a/services/mgmt/application/impl/acl_test.go
+++ b/services/mgmt/application/impl/acl_test.go
@@ -9,13 +9,13 @@
 	"syscall"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/signals"
 	"v.io/core/veyron/lib/testutil"
@@ -41,7 +41,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	defer fmt.Fprintf(stdout, "%v terminating\n", publishName)
 	defer vlog.VI(1).Infof("%v terminating", publishName)
@@ -68,18 +68,18 @@
 func TestApplicationUpdateACL(t *testing.T) {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	// By default, all principals in this test will have blessings
 	// generated based on the username/machine running this process. Give
 	// them recognizable names ("root/self" etc.), so the ACLs can be set
 	// deterministically.
 	idp := tsecurity.NewIDProvider("root")
-	if err := idp.Bless(veyron2.GetPrincipal(ctx), "self"); err != nil {
+	if err := idp.Bless(v23.GetPrincipal(ctx), "self"); err != nil {
 		t.Fatal(err)
 	}
 
-	sh, deferFn := mgmttest.CreateShellAndMountTable(t, ctx, veyron2.GetPrincipal(ctx))
+	sh, deferFn := mgmttest.CreateShellAndMountTable(t, ctx, v23.GetPrincipal(ctx))
 	defer deferFn()
 
 	// setup mock up directory to put state in
@@ -90,11 +90,11 @@
 	pid := mgmttest.ReadPID(t, nms)
 	defer syscall.Kill(pid, syscall.SIGINT)
 
-	otherCtx, err := veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal())
+	otherCtx, err := v23.SetPrincipal(ctx, tsecurity.NewPrincipal())
 	if err != nil {
 		t.Fatal(err)
 	}
-	if err := idp.Bless(veyron2.GetPrincipal(otherCtx), "other"); err != nil {
+	if err := idp.Bless(v23.GetPrincipal(otherCtx), "other"); err != nil {
 		t.Fatal(err)
 	}
 
@@ -198,28 +198,28 @@
 func TestPerAppACL(t *testing.T) {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 	// By default, all principals in this test will have blessings
 	// generated based on the username/machine running this process. Give
 	// them recognizable names ("root/self" etc.), so the ACLs can be set
 	// deterministically.
 	idp := tsecurity.NewIDProvider("root")
-	if err := idp.Bless(veyron2.GetPrincipal(ctx), "self"); err != nil {
+	if err := idp.Bless(v23.GetPrincipal(ctx), "self"); err != nil {
 		t.Fatal(err)
 	}
 
-	sh, deferFn := mgmttest.CreateShellAndMountTable(t, ctx, veyron2.GetPrincipal(ctx))
+	sh, deferFn := mgmttest.CreateShellAndMountTable(t, ctx, v23.GetPrincipal(ctx))
 	defer deferFn()
 
 	// setup mock up directory to put state in
 	storedir, cleanup := mgmttest.SetupRootDir(t, "application")
 	defer cleanup()
 
-	otherCtx, err := veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal())
+	otherCtx, err := v23.SetPrincipal(ctx, tsecurity.NewPrincipal())
 	if err != nil {
 		t.Fatal(err)
 	}
-	if err := idp.Bless(veyron2.GetPrincipal(otherCtx), "other"); err != nil {
+	if err := idp.Bless(v23.GetPrincipal(otherCtx), "other"); err != nil {
 		t.Fatal(err)
 	}
 
@@ -337,7 +337,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	sh, deferFn := mgmttest.CreateShellAndMountTable(t, ctx, nil)
 	defer deferFn()
@@ -349,7 +349,7 @@
 	idp := tsecurity.NewIDProvider("root")
 
 	// Make a recognizable principal name.
-	if err := idp.Bless(veyron2.GetPrincipal(ctx), "self"); err != nil {
+	if err := idp.Bless(v23.GetPrincipal(ctx), "self"); err != nil {
 		t.Fatal(err)
 	}
 
diff --git a/services/mgmt/application/impl/dispatcher.go b/services/mgmt/application/impl/dispatcher.go
index b08cddd..161002d 100644
--- a/services/mgmt/application/impl/dispatcher.go
+++ b/services/mgmt/application/impl/dispatcher.go
@@ -3,12 +3,12 @@
 import (
 	"path/filepath"
 
-	"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/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/security/flag"
 	"v.io/core/veyron/services/mgmt/lib/fs"
diff --git a/services/mgmt/application/impl/impl_test.go b/services/mgmt/application/impl/impl_test.go
index 705e601..da555e6 100644
--- a/services/mgmt/application/impl/impl_test.go
+++ b/services/mgmt/application/impl/impl_test.go
@@ -6,12 +6,12 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/verror"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/verror"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles/static"
@@ -23,7 +23,7 @@
 
 func newPublisherSignature(t *testing.T, ctx *context.T, msg []byte) (security.WireBlessings, security.Signature) {
 	// Generate publisher blessings
-	p := veyron2.GetPrincipal(ctx)
+	p := v23.GetPrincipal(ctx)
 	b, err := p.BlessSelf("publisher")
 	if err != nil {
 		t.Fatal(err)
diff --git a/services/mgmt/application/impl/service.go b/services/mgmt/application/impl/service.go
index 76638d4..5b5e77e 100644
--- a/services/mgmt/application/impl/service.go
+++ b/services/mgmt/application/impl/service.go
@@ -7,12 +7,12 @@
 	"v.io/core/veyron/services/mgmt/lib/fs"
 	"v.io/core/veyron/services/mgmt/repository"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 // appRepoService implements the Application repository interface.
diff --git a/services/mgmt/binary/binaryd/binaryd_v23_test.go b/services/mgmt/binary/binaryd/binaryd_v23_test.go
index 2ecdbf4..d7a188d 100644
--- a/services/mgmt/binary/binaryd/binaryd_v23_test.go
+++ b/services/mgmt/binary/binaryd/binaryd_v23_test.go
@@ -12,7 +12,7 @@
 	"v.io/core/veyron/lib/testutil"
 	"v.io/core/veyron/lib/testutil/security"
 	"v.io/core/veyron/lib/testutil/v23tests"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 )
 
 //go:generate v23 test generate
diff --git a/services/mgmt/binary/binaryd/main.go b/services/mgmt/binary/binaryd/main.go
index a5ff9eb..c317ff3 100644
--- a/services/mgmt/binary/binaryd/main.go
+++ b/services/mgmt/binary/binaryd/main.go
@@ -6,9 +6,9 @@
 	"net/http"
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/netstate"
 	"v.io/core/veyron/lib/signals"
@@ -37,7 +37,7 @@
 		host = "127.0.0.1"
 		ips, err := netstate.GetAccessibleIPs()
 		if err == nil {
-			ls := veyron2.GetListenSpec(ctx)
+			ls := v23.GetListenSpec(ctx)
 			if a, err := ls.AddressChooser("tcp", ips); err == nil && len(a) > 0 {
 				host = a[0].Address().String()
 			}
@@ -47,7 +47,7 @@
 }
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	rootDir, err := impl.SetupRootDir(*rootDirFlag)
@@ -75,20 +75,20 @@
 			os.Exit(1)
 		}
 	}()
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Errorf("NewServer() failed: %v", err)
 		return
 	}
 	defer server.Stop()
-	ls := veyron2.GetListenSpec(ctx)
+	ls := v23.GetListenSpec(ctx)
 	endpoints, err := server.Listen(ls)
 	if err != nil {
 		vlog.Errorf("Listen(%s) failed: %v", ls, err)
 		return
 	}
 
-	dis, err := impl.NewDispatcher(veyron2.GetPrincipal(ctx), state)
+	dis, err := impl.NewDispatcher(v23.GetPrincipal(ctx), state)
 	if err != nil {
 		vlog.Errorf("NewDispatcher() failed: %v\n", err)
 		return
diff --git a/services/mgmt/binary/impl/acl_test.go b/services/mgmt/binary/impl/acl_test.go
index 7f0be51..c1bbdaa 100644
--- a/services/mgmt/binary/impl/acl_test.go
+++ b/services/mgmt/binary/impl/acl_test.go
@@ -8,13 +8,13 @@
 	"syscall"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/signals"
 	"v.io/core/veyron/lib/testutil"
@@ -51,7 +51,7 @@
 	if err != nil {
 		vlog.Fatalf("NewState(%v, %v, %v) failed: %v", storedir, "", depth, err)
 	}
-	dispatcher, err := impl.NewDispatcher(veyron2.GetPrincipal(ctx), state)
+	dispatcher, err := impl.NewDispatcher(v23.GetPrincipal(ctx), state)
 	if err != nil {
 		vlog.Fatalf("Failed to create binaryd dispatcher: %v", err)
 	}
@@ -68,25 +68,25 @@
 func TestBinaryCreateACL(t *testing.T) {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	selfPrincipal := tsecurity.NewPrincipal("self")
-	selfCtx, err := veyron2.SetPrincipal(ctx, selfPrincipal)
+	selfCtx, err := v23.SetPrincipal(ctx, selfPrincipal)
 	if err != nil {
 		t.Fatalf("SetPrincipal failed: %v", err)
 	}
 	dir, childPrincipal := tsecurity.ForkCredentials(selfPrincipal, "child")
 	defer os.RemoveAll(dir)
-	childCtx, err := veyron2.SetPrincipal(ctx, childPrincipal)
+	childCtx, err := v23.SetPrincipal(ctx, childPrincipal)
 	if err != nil {
 		t.Fatalf("SetPrincipal failed: %v", err)
 	}
 
-	sh, deferFn := mgmttest.CreateShellAndMountTable(t, childCtx, veyron2.GetPrincipal(childCtx))
+	sh, deferFn := mgmttest.CreateShellAndMountTable(t, childCtx, v23.GetPrincipal(childCtx))
 	defer deferFn()
 	// make selfCtx and childCtx have the same Namespace Roots as set by
 	// CreateShellAndMountTable
-	veyron2.GetNamespace(selfCtx).SetRoots(veyron2.GetNamespace(childCtx).Roots()...)
+	v23.GetNamespace(selfCtx).SetRoots(v23.GetNamespace(childCtx).Roots()...)
 
 	// setup mock up directory to put state in
 	storedir, cleanup := mgmttest.SetupRootDir(t, "bindir")
@@ -127,14 +127,14 @@
 func TestBinaryRootACL(t *testing.T) {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	selfPrincipal := tsecurity.NewPrincipal("self")
-	selfCtx, err := veyron2.SetPrincipal(ctx, selfPrincipal)
+	selfCtx, err := v23.SetPrincipal(ctx, selfPrincipal)
 	if err != nil {
 		t.Fatalf("SetPrincipal failed: %v", err)
 	}
-	sh, deferFn := mgmttest.CreateShellAndMountTable(t, selfCtx, veyron2.GetPrincipal(selfCtx))
+	sh, deferFn := mgmttest.CreateShellAndMountTable(t, selfCtx, v23.GetPrincipal(selfCtx))
 	defer deferFn()
 
 	// setup mock up directory to put state in
@@ -146,7 +146,7 @@
 	if err := otherPrincipal.AddToRoots(selfPrincipal.BlessingStore().Default()); err != nil {
 		t.Fatalf("otherPrincipal.AddToRoots() failed: %v", err)
 	}
-	otherCtx, err := veyron2.SetPrincipal(selfCtx, otherPrincipal)
+	otherCtx, err := v23.SetPrincipal(selfCtx, otherPrincipal)
 	if err != nil {
 		t.Fatalf("SetPrincipal() failed: %v", err)
 	}
@@ -366,14 +366,14 @@
 func TestBinaryRationalStartingValueForGetACL(t *testing.T) {
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	selfPrincipal := tsecurity.NewPrincipal("self")
-	selfCtx, err := veyron2.SetPrincipal(ctx, selfPrincipal)
+	selfCtx, err := v23.SetPrincipal(ctx, selfPrincipal)
 	if err != nil {
 		t.Fatalf("SetPrincipal failed: %v", err)
 	}
-	sh, deferFn := mgmttest.CreateShellAndMountTable(t, selfCtx, veyron2.GetPrincipal(selfCtx))
+	sh, deferFn := mgmttest.CreateShellAndMountTable(t, selfCtx, v23.GetPrincipal(selfCtx))
 	defer deferFn()
 
 	// setup mock up directory to put state in
diff --git a/services/mgmt/binary/impl/dispatcher.go b/services/mgmt/binary/impl/dispatcher.go
index df9fc64..0f64747 100644
--- a/services/mgmt/binary/impl/dispatcher.go
+++ b/services/mgmt/binary/impl/dispatcher.go
@@ -5,11 +5,11 @@
 	"os"
 	"path/filepath"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/services/mgmt/lib/acls"
 )
diff --git a/services/mgmt/binary/impl/fs_utils.go b/services/mgmt/binary/impl/fs_utils.go
index c92d622..80c0f6d 100644
--- a/services/mgmt/binary/impl/fs_utils.go
+++ b/services/mgmt/binary/impl/fs_utils.go
@@ -8,8 +8,8 @@
 	"strconv"
 	"strings"
 
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 const (
diff --git a/services/mgmt/binary/impl/http.go b/services/mgmt/binary/impl/http.go
index 7da2a2c..46c28b3 100644
--- a/services/mgmt/binary/impl/http.go
+++ b/services/mgmt/binary/impl/http.go
@@ -6,8 +6,8 @@
 	"path/filepath"
 	"strings"
 
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/services/mgmt/binary/impl/multipart"
 )
diff --git a/services/mgmt/binary/impl/http_test.go b/services/mgmt/binary/impl/http_test.go
index ec0b411..03e4b73 100644
--- a/services/mgmt/binary/impl/http_test.go
+++ b/services/mgmt/binary/impl/http_test.go
@@ -8,9 +8,9 @@
 	"net/http"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/repository"
+	"v.io/v23"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/repository"
 
 	"v.io/core/veyron/lib/testutil"
 	"v.io/core/veyron/services/mgmt/binary/impl"
@@ -21,7 +21,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	// TODO(caprita): This is based on TestMultiPart (impl_test.go).  Share
 	// the code where possible.
diff --git a/services/mgmt/binary/impl/impl_test.go b/services/mgmt/binary/impl/impl_test.go
index 762a6de..e3be7b0 100644
--- a/services/mgmt/binary/impl/impl_test.go
+++ b/services/mgmt/binary/impl/impl_test.go
@@ -10,12 +10,12 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles/static"
@@ -49,7 +49,7 @@
 			vlog.Fatalf("Serve() failed: %v", err)
 		}
 	}()
-	dispatcher, err := impl.NewDispatcher(veyron2.GetPrincipal(ctx), state)
+	dispatcher, err := impl.NewDispatcher(v23.GetPrincipal(ctx), state)
 	if err != nil {
 		t.Fatalf("NewDispatcher failed: %v", err)
 	}
@@ -75,7 +75,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	for i := 0; i < md5.Size; i++ {
 		binary, ep, _, cleanup := startServer(t, ctx, i)
@@ -129,7 +129,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	for length := 2; length < 5; length++ {
 		binary, _, _, cleanup := startServer(t, ctx, 2)
@@ -183,7 +183,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	for length := 2; length < 5; length++ {
 		binary, _, _, cleanup := startServer(t, ctx, 2)
@@ -230,7 +230,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	binary, _, _, cleanup := startServer(t, ctx, 2)
 	defer cleanup()
@@ -297,7 +297,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	_, ep, _, cleanup := startServer(t, ctx, 2)
 	defer cleanup()
diff --git a/services/mgmt/binary/impl/service.go b/services/mgmt/binary/impl/service.go
index f2be7d8..d31994b 100644
--- a/services/mgmt/binary/impl/service.go
+++ b/services/mgmt/binary/impl/service.go
@@ -37,13 +37,13 @@
 	"syscall"
 
 	"v.io/core/veyron/services/mgmt/lib/acls"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/binary"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/binary"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 // binaryService implements the Binary server interface.
diff --git a/services/mgmt/binary/impl/setup.go b/services/mgmt/binary/impl/setup.go
index dbc1b92..1476fe2 100644
--- a/services/mgmt/binary/impl/setup.go
+++ b/services/mgmt/binary/impl/setup.go
@@ -5,7 +5,7 @@
 	"os"
 	"path/filepath"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 const defaultRootPrefix = "veyron_binary_repository"
diff --git a/services/mgmt/binary/impl/util_test.go b/services/mgmt/binary/impl/util_test.go
index d747dd7..356d7c7 100644
--- a/services/mgmt/binary/impl/util_test.go
+++ b/services/mgmt/binary/impl/util_test.go
@@ -6,8 +6,8 @@
 	"path/filepath"
 	"testing"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/services/mgmt/repository"
+	"v.io/v23/context"
+	"v.io/v23/services/mgmt/repository"
 
 	"v.io/core/veyron/lib/testutil"
 	"v.io/core/veyron/services/mgmt/binary/impl"
diff --git a/services/mgmt/build/buildd/main.go b/services/mgmt/build/buildd/main.go
index 52aa663..4426531 100644
--- a/services/mgmt/build/buildd/main.go
+++ b/services/mgmt/build/buildd/main.go
@@ -4,9 +4,9 @@
 	"flag"
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/services/mgmt/build"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/services/mgmt/build"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/signals"
 	_ "v.io/core/veyron/profiles/roaming"
@@ -21,15 +21,15 @@
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Errorf("NewServer() failed: %v", err)
 		return
 	}
-	ls := veyron2.GetListenSpec(ctx)
+	ls := v23.GetListenSpec(ctx)
 	endpoint, err := server.Listen(ls)
 	if err != nil {
 		vlog.Errorf("Listen(%s) failed: %v", ls, err)
diff --git a/services/mgmt/build/impl/impl_test.go b/services/mgmt/build/impl/impl_test.go
index 29edf2a..acc7151 100644
--- a/services/mgmt/build/impl/impl_test.go
+++ b/services/mgmt/build/impl/impl_test.go
@@ -8,9 +8,9 @@
 	"strings"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/services/mgmt/build"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/services/mgmt/build"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -46,11 +46,11 @@
 // startServer starts the build server.
 func startServer(t *testing.T, ctx *context.T) build.BuilderClientMethods {
 	gobin, goroot := findGoBinary(t, "go")
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer() failed: %v", err)
 	}
-	l := veyron2.GetListenSpec(ctx)
+	l := v23.GetListenSpec(ctx)
 	endpoints, err := server.Listen(l)
 	if err != nil {
 		t.Fatalf("Listen(%s) failed: %v", l, err)
diff --git a/services/mgmt/build/impl/service.go b/services/mgmt/build/impl/service.go
index 1a5173b..7c8dba0 100644
--- a/services/mgmt/build/impl/service.go
+++ b/services/mgmt/build/impl/service.go
@@ -9,11 +9,11 @@
 	"path/filepath"
 	"runtime"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/services/mgmt/binary"
-	"v.io/core/veyron2/services/mgmt/build"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/services/mgmt/binary"
+	"v.io/v23/services/mgmt/build"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 const pkgPath = "v.io/core/veyron/services/mgmt/build/impl"
diff --git a/services/mgmt/build/impl/util.go b/services/mgmt/build/impl/util.go
index d783b3f..3733a4e 100644
--- a/services/mgmt/build/impl/util.go
+++ b/services/mgmt/build/impl/util.go
@@ -3,7 +3,7 @@
 import (
 	"runtime"
 
-	"v.io/core/veyron2/services/mgmt/build"
+	"v.io/v23/services/mgmt/build"
 )
 
 func getArch() build.Architecture {
diff --git a/services/mgmt/debug/dispatcher.go b/services/mgmt/debug/dispatcher.go
index 4a8d9b0..96f3c2e 100644
--- a/services/mgmt/debug/dispatcher.go
+++ b/services/mgmt/debug/dispatcher.go
@@ -4,8 +4,8 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
 
 	logreaderimpl "v.io/core/veyron/services/mgmt/logreader/impl"
 	pprofimpl "v.io/core/veyron/services/mgmt/pprof/impl"
diff --git a/services/mgmt/debug/dispatcher_test.go b/services/mgmt/debug/dispatcher_test.go
index 8c59e3c..e92fd08 100644
--- a/services/mgmt/debug/dispatcher_test.go
+++ b/services/mgmt/debug/dispatcher_test.go
@@ -12,16 +12,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/services/mgmt/logreader"
-	"v.io/core/veyron2/services/mgmt/stats"
-	vtracesvc "v.io/core/veyron2/services/mgmt/vtrace"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/logreader"
+	"v.io/v23/services/mgmt/stats"
+	vtracesvc "v.io/v23/services/mgmt/vtrace"
+	"v.io/v23/vdl"
+	"v.io/v23/verror"
+	"v.io/v23/vtrace"
 
 	libstats "v.io/core/veyron/lib/stats"
 	"v.io/core/veyron/lib/testutil"
@@ -34,7 +34,7 @@
 		return "", nil, fmt.Errorf("logs directory missing")
 	}
 	disp := NewDispatcher(func() string { return logsDir }, nil)
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		return "", nil, fmt.Errorf("failed to start debug server: %v", err)
 	}
@@ -69,7 +69,7 @@
 		t.Fatalf("ioutil.WriteFile failed: %v", err)
 	}
 
-	endpoint, stop, err := startDebugServer(ctx, veyron2.GetListenSpec(ctx), workdir)
+	endpoint, stop, err := startDebugServer(ctx, v23.GetListenSpec(ctx), workdir)
 	if err != nil {
 		t.Fatalf("StartDebugServer failed: %v", err)
 	}
@@ -168,7 +168,7 @@
 		ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
 		defer cancel()
 
-		ns := veyron2.GetNamespace(ctx)
+		ns := v23.GetNamespace(ctx)
 		ns.SetRoots(naming.JoinAddressName(endpoint, "debug"))
 
 		c, err := ns.Glob(ctx, "logs/...")
diff --git a/services/mgmt/device/config.vdl.go b/services/mgmt/device/config.vdl.go
index 3f6a147..3e3ade1 100644
--- a/services/mgmt/device/config.vdl.go
+++ b/services/mgmt/device/config.vdl.go
@@ -5,9 +5,9 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
 )
 
 // ConfigClientMethods is the client interface
@@ -45,7 +45,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implConfigClientStub) Set(ctx *context.T, i0 string, i1 string, opts ...ipc.CallOpt) (err error) {
diff --git a/services/mgmt/device/config/config.go b/services/mgmt/device/config/config.go
index 8932f5d..fcf2105 100644
--- a/services/mgmt/device/config/config.go
+++ b/services/mgmt/device/config/config.go
@@ -25,7 +25,7 @@
 	"strings"
 
 	"v.io/core/veyron/lib/flags/consts"
-	"v.io/core/veyron2/services/mgmt/application"
+	"v.io/v23/services/mgmt/application"
 )
 
 // State specifies how the device manager is configured.  This should
diff --git a/services/mgmt/device/config/config_test.go b/services/mgmt/device/config/config_test.go
index 498c55d..d9d4277 100644
--- a/services/mgmt/device/config/config_test.go
+++ b/services/mgmt/device/config/config_test.go
@@ -9,7 +9,7 @@
 
 	"v.io/core/veyron/services/mgmt/device/config"
 
-	"v.io/core/veyron2/services/mgmt/application"
+	"v.io/v23/services/mgmt/application"
 )
 
 // TestState checks that encoding/decoding State to child/from parent works
diff --git a/services/mgmt/device/deviced/commands.go b/services/mgmt/device/deviced/commands.go
index 0360781..35a5771 100644
--- a/services/mgmt/device/deviced/commands.go
+++ b/services/mgmt/device/deviced/commands.go
@@ -7,8 +7,8 @@
 	"v.io/lib/cmdline"
 
 	"v.io/core/veyron/services/mgmt/device/impl"
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/vlog"
 )
 
 var (
@@ -127,7 +127,7 @@
 }
 
 func runStop(cmd *cmdline.Command, _ []string) error {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 	if err := impl.Stop(ctx, installationDir(), cmd.Stderr(), cmd.Stdout()); err != nil {
 		vlog.Errorf("Stop failed: %v", err)
diff --git a/services/mgmt/device/deviced/server.go b/services/mgmt/device/deviced/server.go
index 4ab39c9..393c30e 100644
--- a/services/mgmt/device/deviced/server.go
+++ b/services/mgmt/device/deviced/server.go
@@ -19,10 +19,10 @@
 	"v.io/core/veyron/services/mgmt/device/config"
 	"v.io/core/veyron/services/mgmt/device/starter"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/mgmt"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/mgmt"
+	"v.io/v23/vlog"
 )
 
 var (
@@ -37,7 +37,7 @@
 )
 
 func runServer(*cmdline.Command, []string) error {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	var testMode bool
@@ -71,7 +71,7 @@
 	if testMode {
 		ns.ListenSpec = ipc.ListenSpec{Addrs: ipc.ListenAddrs{{"tcp", "127.0.0.1:0"}}}
 	} else {
-		ns.ListenSpec = veyron2.GetListenSpec(ctx)
+		ns.ListenSpec = v23.GetListenSpec(ctx)
 		ns.Name = *publishAs
 	}
 	var pairingToken string
diff --git a/services/mgmt/device/impl/app_service.go b/services/mgmt/device/impl/app_service.go
index c8206f1..ebb3161 100644
--- a/services/mgmt/device/impl/app_service.go
+++ b/services/mgmt/device/impl/app_service.go
@@ -135,18 +135,18 @@
 	"text/template"
 	"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/security"
-	"v.io/core/veyron2/services/mgmt/appcycle"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/device"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/mgmt"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/appcycle"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	vexec "v.io/core/veyron/lib/exec"
 	"v.io/core/veyron/lib/flags/consts"
@@ -532,12 +532,12 @@
 func agentPrincipal(ctx *context.T, conn *os.File) (security.Principal, func(), error) {
 	agentctx, cancel := context.WithCancel(ctx)
 	var err error
-	if agentctx, err = veyron2.SetNewStreamManager(agentctx); err != nil {
+	if agentctx, err = v23.SetNewStreamManager(agentctx); err != nil {
 		cancel()
 		conn.Close()
 		return nil, nil, err
 	}
-	p, err := agent.NewAgentPrincipal(agentctx, int(conn.Fd()), veyron2.GetClient(agentctx))
+	p, err := agent.NewAgentPrincipal(agentctx, int(conn.Fd()), v23.GetClient(agentctx))
 	if err != nil {
 		cancel()
 		conn.Close()
diff --git a/services/mgmt/device/impl/app_state.go b/services/mgmt/device/impl/app_state.go
index 18b4db3..0a13676 100644
--- a/services/mgmt/device/impl/app_state.go
+++ b/services/mgmt/device/impl/app_state.go
@@ -6,8 +6,8 @@
 	"os"
 	"path/filepath"
 
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 // installationState describes the states that an installation can be in at any
diff --git a/services/mgmt/device/impl/association_instance.go b/services/mgmt/device/impl/association_instance.go
index 77e0df4..1be4967 100644
--- a/services/mgmt/device/impl/association_instance.go
+++ b/services/mgmt/device/impl/association_instance.go
@@ -7,8 +7,8 @@
 	"io/ioutil"
 	"path/filepath"
 
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 func saveSystemNameForInstance(dir, systemName string) error {
diff --git a/services/mgmt/device/impl/association_state.go b/services/mgmt/device/impl/association_state.go
index ddff7c3..45709a4 100644
--- a/services/mgmt/device/impl/association_state.go
+++ b/services/mgmt/device/impl/association_state.go
@@ -6,8 +6,8 @@
 	"path/filepath"
 	"sync"
 
-	"v.io/core/veyron2/services/mgmt/device"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/verror"
 )
 
 // BlessingSystemAssociationStore manages a persisted association between
diff --git a/services/mgmt/device/impl/association_state_test.go b/services/mgmt/device/impl/association_state_test.go
index 23f6013..ee44ef1 100644
--- a/services/mgmt/device/impl/association_state_test.go
+++ b/services/mgmt/device/impl/association_state_test.go
@@ -8,7 +8,7 @@
 	"testing"
 
 	"v.io/core/veyron/services/mgmt/device/impl"
-	"v.io/core/veyron2/services/mgmt/device"
+	"v.io/v23/services/mgmt/device"
 )
 
 // TestAssociationPersistance verifies correct operation of association
diff --git a/services/mgmt/device/impl/callback.go b/services/mgmt/device/impl/callback.go
index f785b61..4aea4a6 100644
--- a/services/mgmt/device/impl/callback.go
+++ b/services/mgmt/device/impl/callback.go
@@ -1,9 +1,9 @@
 package impl
 
 import (
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/mgmt"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/mgmt"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/exec"
 	"v.io/core/veyron/services/mgmt/device"
diff --git a/services/mgmt/device/impl/claim.go b/services/mgmt/device/impl/claim.go
index 8a885ce..a2af1b0 100644
--- a/services/mgmt/device/impl/claim.go
+++ b/services/mgmt/device/impl/claim.go
@@ -5,11 +5,11 @@
 	"sync"
 
 	"v.io/core/veyron/services/mgmt/lib/acls"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 // claimable implements the device.Claimable RPC interface and the
diff --git a/services/mgmt/device/impl/config_service.go b/services/mgmt/device/impl/config_service.go
index f2254fc..d28b20a 100644
--- a/services/mgmt/device/impl/config_service.go
+++ b/services/mgmt/device/impl/config_service.go
@@ -10,10 +10,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"
 )
 
 type callbackState struct {
diff --git a/services/mgmt/device/impl/device_installer.go b/services/mgmt/device/impl/device_installer.go
index 8e79741..61435ba 100644
--- a/services/mgmt/device/impl/device_installer.go
+++ b/services/mgmt/device/impl/device_installer.go
@@ -43,9 +43,9 @@
 	"syscall"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/application"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/application"
 
 	"v.io/core/veyron/lib/flags/consts"
 	"v.io/core/veyron/services/mgmt/device/config"
diff --git a/services/mgmt/device/impl/device_service.go b/services/mgmt/device/impl/device_service.go
index f168b10..0ebfa4d 100644
--- a/services/mgmt/device/impl/device_service.go
+++ b/services/mgmt/device/impl/device_service.go
@@ -47,18 +47,18 @@
 	"strings"
 	"sync"
 
-	"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/security"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/binary"
-	"v.io/core/veyron2/services/mgmt/device"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/mgmt"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/binary"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	vexec "v.io/core/veyron/lib/exec"
 	"v.io/core/veyron/lib/flags/consts"
@@ -220,7 +220,7 @@
 	if s.restartHandler != nil {
 		s.restartHandler()
 	}
-	veyron2.GetAppCycle(ctx).Stop()
+	v23.GetAppCycle(ctx).Stop()
 	return nil
 }
 
@@ -305,7 +305,7 @@
 		}
 		cmd.Env = append(cmd.Env, consts.VeyronCredentials+"="+credentialsDir)
 	}
-	dmPrincipal := veyron2.GetPrincipal(ctx)
+	dmPrincipal := v23.GetPrincipal(ctx)
 	dmBlessings, err := dmPrincipal.Bless(p.PublicKey(), dmPrincipal.BlessingStore().Default(), "testdm", security.UnconstrainedUse())
 	if err := p.BlessingStore().SetDefault(dmBlessings); err != nil {
 		vlog.Errorf("BlessingStore.SetDefault() failed: %v", err)
@@ -486,7 +486,7 @@
 	if s.restartHandler != nil {
 		s.restartHandler()
 	}
-	veyron2.GetAppCycle(ctx).Stop()
+	v23.GetAppCycle(ctx).Stop()
 	deferrer = nil
 	return nil
 }
@@ -531,7 +531,7 @@
 }
 
 func (*deviceService) Stop(call ipc.ServerContext, _ uint32) error {
-	veyron2.GetAppCycle(call.Context()).Stop()
+	v23.GetAppCycle(call.Context()).Stop()
 	return nil
 }
 
@@ -541,7 +541,7 @@
 	if s.restartHandler != nil {
 		s.restartHandler()
 	}
-	veyron2.GetAppCycle(call.Context()).Stop()
+	v23.GetAppCycle(call.Context()).Stop()
 	return nil
 }
 
diff --git a/services/mgmt/device/impl/dispatcher.go b/services/mgmt/device/impl/dispatcher.go
index 4432d7a..3c25ec1 100644
--- a/services/mgmt/device/impl/dispatcher.go
+++ b/services/mgmt/device/impl/dispatcher.go
@@ -15,17 +15,17 @@
 	"v.io/core/veyron/services/mgmt/lib/acls"
 	logsimpl "v.io/core/veyron/services/mgmt/logreader/impl"
 
-	"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/services/mgmt/device"
-	"v.io/core/veyron2/services/mgmt/pprof"
-	"v.io/core/veyron2/services/mgmt/stats"
-	"v.io/core/veyron2/services/security/access"
-	"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/security"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/services/mgmt/pprof"
+	"v.io/v23/services/mgmt/stats"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 // internalState wraps state shared between different device manager
@@ -87,7 +87,7 @@
 // It returns (nil, nil) if the device is no longer claimable.
 func NewClaimableDispatcher(ctx *context.T, config *config.State, pairingToken string) (ipc.Dispatcher, <-chan struct{}) {
 	var (
-		principal = veyron2.GetPrincipal(ctx)
+		principal = v23.GetPrincipal(ctx)
 		aclDir    = aclDir(config)
 		locks     = acls.NewLocks()
 	)
@@ -124,7 +124,7 @@
 		config:    config,
 		uat:       uat,
 		locks:     acls.NewLocks(),
-		principal: veyron2.GetPrincipal(ctx),
+		principal: v23.GetPrincipal(ctx),
 		mtAddress: mtAddress,
 		reap:      reap,
 	}
diff --git a/services/mgmt/device/impl/helper_manager.go b/services/mgmt/device/impl/helper_manager.go
index 5bd4f90..fd39378 100644
--- a/services/mgmt/device/impl/helper_manager.go
+++ b/services/mgmt/device/impl/helper_manager.go
@@ -4,9 +4,9 @@
 	"os"
 	"os/user"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 type suidHelperState string
diff --git a/services/mgmt/device/impl/impl_test.go b/services/mgmt/device/impl/impl_test.go
index 449c12a..6cda65a 100644
--- a/services/mgmt/device/impl/impl_test.go
+++ b/services/mgmt/device/impl/impl_test.go
@@ -27,21 +27,21 @@
 	"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/security"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/device"
-	"v.io/core/veyron2/services/mgmt/logreader"
-	"v.io/core/veyron2/services/mgmt/pprof"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/services/mgmt/stats"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/mgmt"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/services/mgmt/logreader"
+	"v.io/v23/services/mgmt/pprof"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/services/mgmt/stats"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/flags/consts"
@@ -150,7 +150,7 @@
 	defer fmt.Fprintf(stdout, "%v terminated\n", publishName)
 	defer vlog.VI(1).Infof("%v terminated", publishName)
 	defer shutdown()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	// Satisfy the contract described in doc.go by passing the config state
 	// through to the device manager dispatcher constructor.
@@ -186,7 +186,7 @@
 			Name:            publishName,
 			ListenSpec:      ipc.ListenSpec{Addrs: ipc.ListenAddrs{{"tcp", "127.0.0.1:0"}}},
 			ConfigState:     configState,
-			TestMode:        strings.HasSuffix(fmt.Sprint(veyron2.GetPrincipal(ctx).BlessingStore().Default()), "/testdm"),
+			TestMode:        strings.HasSuffix(fmt.Sprint(v23.GetPrincipal(ctx).BlessingStore().Default()), "/testdm"),
 			RestartCallback: func() { fmt.Println("restart handler") },
 			PairingToken:    pairingToken,
 		},
@@ -251,7 +251,7 @@
 		FlagValue: *flagValue,
 		EnvValue:  os.Getenv(testEnvVarName),
 	}
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	if call, err := client.StartCall(ctx, "pingserver", "Ping", []interface{}{args}); err != nil {
 		vlog.Fatalf("StartCall failed: %v", err)
 	} else if err := call.Finish(); err != nil {
@@ -262,7 +262,7 @@
 func cat(ctx *context.T, name, file string) (string, error) {
 	ctx, cancel := context.WithTimeout(ctx, time.Minute)
 	defer cancel()
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "Cat", []interface{}{file})
 	if err != nil {
 		return "", err
@@ -278,7 +278,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	if expected, got := 1, len(args); expected != got {
 		vlog.Fatalf("Unexpected number of arguments: expected %d, got %d", expected, got)
@@ -327,10 +327,10 @@
 	return path
 }
 
-func initForTest() (*context.T, veyron2.Shutdown) {
+func initForTest() (*context.T, v23.Shutdown) {
 	os.Unsetenv(consts.NamespaceRootPrefix)
 	ctx, shutdown := testutil.InitForTest()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 	return ctx, shutdown
 }
 
@@ -344,7 +344,7 @@
 	ctx, shutdown := initForTest()
 	defer shutdown()
 
-	sh, deferFn := mgmttest.CreateShellAndMountTable(t, ctx, veyron2.GetPrincipal(ctx))
+	sh, deferFn := mgmttest.CreateShellAndMountTable(t, ctx, v23.GetPrincipal(ctx))
 	defer deferFn()
 
 	// Set up mock application and binary repositories.
@@ -817,7 +817,7 @@
 		t.Fatalf("binaryimpl.NewState failed: %v", err)
 	}
 	server, _ := mgmttest.NewServer(ctx)
-	d, err := binaryimpl.NewDispatcher(veyron2.GetPrincipal(ctx), state)
+	d, err := binaryimpl.NewDispatcher(v23.GetPrincipal(ctx), state)
 	if err != nil {
 		t.Fatalf("server.NewDispatcher failed: %v", err)
 	}
@@ -843,7 +843,7 @@
 	// root blessing provider so that the principals of all the contexts
 	// recognize each other.
 	idp := tsecurity.NewIDProvider("root")
-	if err := idp.Bless(veyron2.GetPrincipal(ctx), "ctx"); err != nil {
+	if err := idp.Bless(v23.GetPrincipal(ctx), "ctx"); err != nil {
 		t.Fatal(err)
 	}
 
@@ -870,7 +870,7 @@
 	*envelope = envelopeFromShell(sh, nil, appCmd, "google naps", "trapp")
 
 	claimantCtx := ctxWithNewPrincipal(t, ctx, idp, "claimant")
-	octx, err := veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal("other"))
+	octx, err := v23.SetPrincipal(ctx, tsecurity.NewPrincipal("other"))
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -896,7 +896,7 @@
 	installAppExpectError(t, octx, verror.ErrNotTrusted.ID)
 	// Even if it does recognize the device (by virtue of recognizing the
 	// claimant), the device will not allow it to install.
-	if err := veyron2.GetPrincipal(octx).AddToRoots(veyron2.GetPrincipal(claimantCtx).BlessingStore().Default()); err != nil {
+	if err := v23.GetPrincipal(octx).AddToRoots(v23.GetPrincipal(claimantCtx).BlessingStore().Default()); err != nil {
 		t.Fatal(err)
 	}
 	installAppExpectError(t, octx, verror.ErrNoAccess.ID)
@@ -1389,7 +1389,7 @@
 	// will appear in ACLs, give them recognizable names.
 	idp := tsecurity.NewIDProvider("root")
 	selfCtx := ctx
-	if err := idp.Bless(veyron2.GetPrincipal(selfCtx), "self"); err != nil {
+	if err := idp.Bless(v23.GetPrincipal(selfCtx), "self"); err != nil {
 		t.Fatal(err)
 	}
 	otherCtx := ctxWithNewPrincipal(t, selfCtx, idp, "other")
@@ -1470,7 +1470,7 @@
 	// Identity provider used to ensure that all processes recognize each
 	// others' blessings.
 	idp := tsecurity.NewIDProvider("root")
-	if err := idp.Bless(veyron2.GetPrincipal(ctx), "self"); err != nil {
+	if err := idp.Bless(v23.GetPrincipal(ctx), "self"); err != nil {
 		t.Fatal(err)
 	}
 
@@ -1646,7 +1646,7 @@
 	defer syscall.Kill(pid, syscall.SIGINT)
 	claimDevice(t, ctx, "dm", "mydevice", noPairingToken)
 
-	publisher, err := veyron2.GetPrincipal(ctx).BlessSelf("publisher")
+	publisher, err := v23.GetPrincipal(ctx).BlessSelf("publisher")
 	if err != nil {
 		t.Fatalf("Failed to generate publisher blessings:%v", err)
 	}
diff --git a/services/mgmt/device/impl/instance_reaping.go b/services/mgmt/device/impl/instance_reaping.go
index d59c927..045193a 100644
--- a/services/mgmt/device/impl/instance_reaping.go
+++ b/services/mgmt/device/impl/instance_reaping.go
@@ -7,11 +7,11 @@
 	"syscall"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/stats"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/stats"
+	"v.io/v23/vdl"
+	"v.io/v23/vlog"
 )
 
 type pidInstanceDirPair struct {
diff --git a/services/mgmt/device/impl/instance_reaping_test.go b/services/mgmt/device/impl/instance_reaping_test.go
index 17f376a..7e80f63 100644
--- a/services/mgmt/device/impl/instance_reaping_test.go
+++ b/services/mgmt/device/impl/instance_reaping_test.go
@@ -7,12 +7,12 @@
 	"syscall"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/stats"
-	"v.io/core/veyron2/vdl"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/stats"
+	"v.io/v23/vdl"
 
 	"v.io/core/veyron/lib/flags/consts"
 	"v.io/core/veyron/lib/modules"
@@ -24,7 +24,7 @@
 // and use it to reduce boiler plate across all tests here.
 func startupHelper(t *testing.T) (func(), *context.T, *modules.Shell, *application.Envelope, string, string) {
 	ctx, shutdown := testutil.InitForTest()
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	sh, deferFn := mgmttest.CreateShellAndMountTable(t, ctx, nil)
 
diff --git a/services/mgmt/device/impl/mock_repo_test.go b/services/mgmt/device/impl/mock_repo_test.go
index a288c5d..da24081 100644
--- a/services/mgmt/device/impl/mock_repo_test.go
+++ b/services/mgmt/device/impl/mock_repo_test.go
@@ -10,15 +10,15 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/binary"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/binary"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	mgmttest "v.io/core/veyron/services/mgmt/lib/testutil"
 )
diff --git a/services/mgmt/device/impl/only_for_test.go b/services/mgmt/device/impl/only_for_test.go
index 6f92afc..18a960d 100644
--- a/services/mgmt/device/impl/only_for_test.go
+++ b/services/mgmt/device/impl/only_for_test.go
@@ -6,9 +6,9 @@
 	"os"
 	"path/filepath"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/services/mgmt/device"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/vlog"
 )
 
 // This file contains code in the impl package that we only want built for tests
diff --git a/services/mgmt/device/impl/profile.go b/services/mgmt/device/impl/profile.go
index 1d2bd08..089242e 100644
--- a/services/mgmt/device/impl/profile.go
+++ b/services/mgmt/device/impl/profile.go
@@ -9,8 +9,8 @@
 
 	"v.io/core/veyron/services/mgmt/profile"
 
-	"v.io/core/veyron2/services/mgmt/build"
-	"v.io/core/veyron2/services/mgmt/device"
+	"v.io/v23/services/mgmt/build"
+	"v.io/v23/services/mgmt/device"
 )
 
 // ComputeDeviceProfile generates a description of the runtime
diff --git a/services/mgmt/device/impl/proxy_invoker.go b/services/mgmt/device/impl/proxy_invoker.go
index 96b7359..0c65d06 100644
--- a/services/mgmt/device/impl/proxy_invoker.go
+++ b/services/mgmt/device/impl/proxy_invoker.go
@@ -4,12 +4,12 @@
 	"fmt"
 	"io"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/vdl/vdlroot/src/signature"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vdl"
+	"v.io/v23/vdl/vdlroot/src/signature"
 )
 
 // proxyInvoker is an ipc.Invoker implementation that proxies all requests
@@ -57,7 +57,7 @@
 		args[i] = ap
 	}
 	ctx := inCall.Context()
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 
 	outCall, err := client.StartCall(ctx, p.remote, method, args)
 	if err != nil {
diff --git a/services/mgmt/device/impl/proxy_invoker_test.go b/services/mgmt/device/impl/proxy_invoker_test.go
index 237770b..ef5989e 100644
--- a/services/mgmt/device/impl/proxy_invoker_test.go
+++ b/services/mgmt/device/impl/proxy_invoker_test.go
@@ -4,13 +4,13 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/stats"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/stats"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 )
@@ -21,10 +21,10 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	// server1 is a normal server
-	server1, err := veyron2.NewServer(ctx)
+	server1, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer: %v", err)
 	}
@@ -38,7 +38,7 @@
 	}
 
 	// server2 proxies requests to <suffix> to server1/__debug/stats/<suffix>
-	server2, err := veyron2.NewServer(ctx)
+	server2, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer: %v", err)
 	}
diff --git a/services/mgmt/device/impl/util.go b/services/mgmt/device/impl/util.go
index 29d034c..ade3572 100644
--- a/services/mgmt/device/impl/util.go
+++ b/services/mgmt/device/impl/util.go
@@ -12,12 +12,12 @@
 	"v.io/core/veyron/services/mgmt/device/config"
 	"v.io/core/veyron/services/mgmt/lib/binary"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 // TODO(caprita): Set these timeout in a more principled manner.
diff --git a/services/mgmt/device/impl/util_test.go b/services/mgmt/device/impl/util_test.go
index fd07606..fdb1b64 100644
--- a/services/mgmt/device/impl/util_test.go
+++ b/services/mgmt/device/impl/util_test.go
@@ -11,16 +11,16 @@
 	"time"
 
 	tsecurity "v.io/core/veyron/lib/testutil/security"
-	"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/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/device"
-	"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/services/mgmt/application"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/modules"
 	"v.io/core/veyron/lib/testutil"
@@ -47,7 +47,7 @@
 
 // resolveExpectNotFound verifies that the given name is not in the mounttable.
 func resolveExpectNotFound(t *testing.T, ctx *context.T, name string) {
-	if me, err := veyron2.GetNamespace(ctx).Resolve(ctx, name); err == nil {
+	if me, err := v23.GetNamespace(ctx).Resolve(ctx, name); err == nil {
 		t.Fatalf(testutil.FormatLogLine(2, "Resolve(%v) succeeded with results %v when it was expected to fail", name, me.Names))
 	} else if expectErr := naming.ErrNoSuchName.ID; !verror.Is(err, expectErr) {
 		t.Fatalf(testutil.FormatLogLine(2, "Resolve(%v) failed with error %v, expected error ID %v", name, err, expectErr))
@@ -56,7 +56,7 @@
 
 // resolve looks up the given name in the mounttable.
 func resolve(t *testing.T, ctx *context.T, name string, replicas int) []string {
-	me, err := veyron2.GetNamespace(ctx).Resolve(ctx, name)
+	me, err := v23.GetNamespace(ctx).Resolve(ctx, name)
 	if err != nil {
 		t.Fatalf("Resolve(%v) failed: %v", name, err)
 	}
@@ -84,7 +84,7 @@
 
 func claimDevice(t *testing.T, ctx *context.T, name, extension, pairingToken string) {
 	// Setup blessings to be granted to the claimed device
-	g := &granter{p: veyron2.GetPrincipal(ctx), extension: extension}
+	g := &granter{p: v23.GetPrincipal(ctx), extension: extension}
 	s := options.SkipResolveAuthorization{}
 	// Call the Claim RPC: Skip server authorization because the unclaimed
 	// device presents nothing that can be used to recognize it.
@@ -110,7 +110,7 @@
 
 func claimDeviceExpectError(t *testing.T, ctx *context.T, name, extension, pairingToken string, errID verror.ID) {
 	// Setup blessings to be granted to the claimed device
-	g := &granter{p: veyron2.GetPrincipal(ctx), extension: extension}
+	g := &granter{p: v23.GetPrincipal(ctx), extension: extension}
 	s := options.SkipResolveAuthorization{}
 	// Call the Claim RPC
 	if err := device.ClaimableClient(name).Claim(ctx, pairingToken, g, s); !verror.Is(err, errID) {
@@ -208,7 +208,7 @@
 func startAppImpl(t *testing.T, ctx *context.T, appID, grant string) (string, error) {
 	var opts []ipc.CallOpt
 	if grant != "" {
-		opts = append(opts, &granter{p: veyron2.GetPrincipal(ctx), extension: grant})
+		opts = append(opts, &granter{p: v23.GetPrincipal(ctx), extension: grant})
 	}
 	if instanceIDs, err := appStub(appID).Start(ctx, opts...); err != nil {
 		return "", err
@@ -362,11 +362,11 @@
 }
 
 func ctxWithNewPrincipal(t *testing.T, ctx *context.T, idp *tsecurity.IDProvider, extension string) *context.T {
-	ret, err := veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal())
+	ret, err := v23.SetPrincipal(ctx, tsecurity.NewPrincipal())
 	if err != nil {
-		t.Fatalf(testutil.FormatLogLine(2, "veyron2.SetPrincipal failed: %v", err))
+		t.Fatalf(testutil.FormatLogLine(2, "v23.SetPrincipal failed: %v", err))
 	}
-	if err := idp.Bless(veyron2.GetPrincipal(ret), extension); err != nil {
+	if err := idp.Bless(v23.GetPrincipal(ret), extension); err != nil {
 		t.Fatalf(testutil.FormatLogLine(2, "idp.Bless(?, %q) failed: %v", extension, err))
 	}
 	return ret
diff --git a/services/mgmt/device/starter/starter.go b/services/mgmt/device/starter/starter.go
index b4e326f..4ce3b97 100644
--- a/services/mgmt/device/starter/starter.go
+++ b/services/mgmt/device/starter/starter.go
@@ -17,12 +17,12 @@
 	"v.io/core/veyron/services/mgmt/device/impl"
 	mounttable "v.io/core/veyron/services/mounttable/lib"
 
-	"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/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/vlog"
 )
 
 type NamespaceArgs struct {
@@ -119,7 +119,7 @@
 		cancel()
 		return nil, err
 	}
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		stopMT()
 		cancel()
@@ -140,7 +140,7 @@
 		shutdown()
 		return nil, err
 	}
-	publicKey, err := veyron2.GetPrincipal(ctx).PublicKey().MarshalBinary()
+	publicKey, err := v23.GetPrincipal(ctx).PublicKey().MarshalBinary()
 	if err != nil {
 		shutdown()
 		return nil, err
@@ -162,7 +162,7 @@
 	shutdown, err := startClaimedDevice(ctx, args)
 	if err != nil {
 		vlog.Errorf("Failed to start device service after it was claimed: %v", err)
-		veyron2.GetAppCycle(ctx).Stop()
+		v23.GetAppCycle(ctx).Stop()
 		return
 	}
 	defer shutdown()
@@ -224,7 +224,7 @@
 	// Attempt to get a publicly accessible address for the proxy to publish
 	// under.
 	var publishAddr string
-	ls := veyron2.GetListenSpec(ctx)
+	ls := v23.GetListenSpec(ctx)
 	if addrs, err := netstate.GetAccessibleIPs(); err == nil {
 		if ac := ls.AddressChooser; ac != nil {
 			if a, err := ac(protocol, addrs); err == nil && len(a) > 0 {
@@ -233,7 +233,7 @@
 		}
 		publishAddr = net.JoinHostPort(addrs[0].Address().String(), port)
 	}
-	proxy, err := proxy.New(rid, veyron2.GetPrincipal(ctx), protocol, addr, publishAddr)
+	proxy, err := proxy.New(rid, v23.GetPrincipal(ctx), protocol, addr, publishAddr)
 	if err != nil {
 		return nil, fmt.Errorf("Failed to create proxy: %v", err)
 	}
@@ -264,7 +264,7 @@
 // (1) Function to be called to force the service to shutdown
 // (2) Any errors in starting the service (in which case, (1) will be nil)
 func startDeviceServer(ctx *context.T, args DeviceArgs, mt string) (shutdown func(), err error) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		return nil, err
 	}
@@ -295,7 +295,7 @@
 }
 
 func mountGlobalNamespaceInLocalNamespace(ctx *context.T, localMT string) {
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 	for _, root := range ns.Roots() {
 		go func(r string) {
 			var blessings []string
@@ -325,7 +325,7 @@
 func findServerBlessings(ctx *context.T, server string) ([]string, error) {
 	ctx, cancel := context.WithCancel(ctx)
 	defer cancel()
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, server, ipc.ReservedSignature, nil, options.NoResolve{})
 	if err != nil {
 		return nil, err
diff --git a/services/mgmt/lib/acls/aclaccess.go b/services/mgmt/lib/acls/aclaccess.go
index 8bd11f1..3a9e1c9 100644
--- a/services/mgmt/lib/acls/aclaccess.go
+++ b/services/mgmt/lib/acls/aclaccess.go
@@ -10,10 +10,10 @@
 	"path/filepath"
 	"sync"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/security/serialization"
 )
diff --git a/services/mgmt/lib/acls/etag.go b/services/mgmt/lib/acls/etag.go
index ae8ab5f..ef45427 100644
--- a/services/mgmt/lib/acls/etag.go
+++ b/services/mgmt/lib/acls/etag.go
@@ -7,7 +7,7 @@
 	"crypto/md5"
 	"encoding/hex"
 
-	"v.io/core/veyron2/services/security/access"
+	"v.io/v23/services/security/access"
 )
 
 // ComputeEtag produces the tag value returned by access.GetACL() (per
diff --git a/services/mgmt/lib/binary/impl.go b/services/mgmt/lib/binary/impl.go
index 5d89295..c313319 100644
--- a/services/mgmt/lib/binary/impl.go
+++ b/services/mgmt/lib/binary/impl.go
@@ -17,13 +17,13 @@
 	"path/filepath"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/binary"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/binary"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/services/mgmt/lib/packages"
 )
@@ -312,7 +312,7 @@
 		}
 	}
 	uploadHash := h.Sum(nil)
-	sig, err := veyron2.GetPrincipal(ctx).Sign(uploadHash[:])
+	sig, err := v23.GetPrincipal(ctx).Sign(uploadHash[:])
 	if err != nil {
 		vlog.Errorf("Sign() of upload hash failed:%v", err)
 		return nil, err
diff --git a/services/mgmt/lib/binary/impl_test.go b/services/mgmt/lib/binary/impl_test.go
index 8dbd554..48fcf93 100644
--- a/services/mgmt/lib/binary/impl_test.go
+++ b/services/mgmt/lib/binary/impl_test.go
@@ -9,11 +9,11 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -37,7 +37,7 @@
 		vlog.Fatalf("WriteFile(%v, %v, %v) failed: %v", path, impl.Version, perm, err)
 	}
 	// Setup and start the binary repository server.
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer() failed: %v", err)
 	}
@@ -47,11 +47,11 @@
 		t.Fatalf("NewState(%v, %v) failed: %v", rootDir, depth, err)
 	}
 
-	dispatcher, err := impl.NewDispatcher(veyron2.GetPrincipal(ctx), state)
+	dispatcher, err := impl.NewDispatcher(v23.GetPrincipal(ctx), state)
 	if err != nil {
 		t.Fatalf("NewDispatcher() failed: %v\n", err)
 	}
-	l := veyron2.GetListenSpec(ctx)
+	l := v23.GetListenSpec(ctx)
 	endpoints, err := server.Listen(l)
 	if err != nil {
 		t.Fatalf("Listen(%s) failed: %v", l, err)
@@ -83,7 +83,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	von, cleanup := setupRepository(t, ctx)
 	defer cleanup()
@@ -93,7 +93,7 @@
 	if err != nil {
 		t.Fatalf("Upload(%v) failed: %v", von, err)
 	}
-	p := veyron2.GetPrincipal(ctx)
+	p := v23.GetPrincipal(ctx)
 	if sig != nil {
 		// verify the principal signature
 		h := sha256.Sum256(data)
@@ -127,7 +127,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	von, cleanup := setupRepository(t, ctx)
 	defer cleanup()
@@ -184,7 +184,7 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(true))
 
 	von, cleanup := setupRepository(t, ctx)
 	defer cleanup()
diff --git a/services/mgmt/lib/fs/only_for_test.go b/services/mgmt/lib/fs/only_for_test.go
index 2e1b214..a4f57db 100644
--- a/services/mgmt/lib/fs/only_for_test.go
+++ b/services/mgmt/lib/fs/only_for_test.go
@@ -1,7 +1,7 @@
 package fs
 
 import (
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 )
 
 // TP is a convenience function. It prepends the transactionNamePrefix
diff --git a/services/mgmt/lib/fs/simplestore.go b/services/mgmt/lib/fs/simplestore.go
index d2939d6..1006159 100644
--- a/services/mgmt/lib/fs/simplestore.go
+++ b/services/mgmt/lib/fs/simplestore.go
@@ -12,9 +12,9 @@
 
 	"v.io/core/veyron/services/mgmt/profile"
 
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
 )
 
 // TODO(rjkroege@google.com) Switch Memstore to the mid-August 2014
diff --git a/services/mgmt/lib/fs/simplestore_test.go b/services/mgmt/lib/fs/simplestore_test.go
index 60c96c5..d99b6c2 100644
--- a/services/mgmt/lib/fs/simplestore_test.go
+++ b/services/mgmt/lib/fs/simplestore_test.go
@@ -9,9 +9,9 @@
 
 	"v.io/core/veyron/services/mgmt/lib/fs"
 	_ "v.io/core/veyron/services/mgmt/profile"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/verror"
 )
 
 func tempFile(t *testing.T) string {
diff --git a/services/mgmt/lib/packages/packages.go b/services/mgmt/lib/packages/packages.go
index a1abc45..2b42ade 100644
--- a/services/mgmt/lib/packages/packages.go
+++ b/services/mgmt/lib/packages/packages.go
@@ -14,7 +14,7 @@
 	"path/filepath"
 	"strings"
 
-	"v.io/core/veyron2/services/mgmt/repository"
+	"v.io/v23/services/mgmt/repository"
 )
 
 const defaultType = "application/octet-stream"
diff --git a/services/mgmt/lib/packages/packages_test.go b/services/mgmt/lib/packages/packages_test.go
index 6e409cf..eb9ac71 100644
--- a/services/mgmt/lib/packages/packages_test.go
+++ b/services/mgmt/lib/packages/packages_test.go
@@ -12,7 +12,7 @@
 	"sort"
 	"testing"
 
-	"v.io/core/veyron2/services/mgmt/repository"
+	"v.io/v23/services/mgmt/repository"
 
 	"v.io/core/veyron/services/mgmt/lib/packages"
 )
diff --git a/services/mgmt/lib/testutil/modules.go b/services/mgmt/lib/testutil/modules.go
index db46ea5..708a0b8 100644
--- a/services/mgmt/lib/testutil/modules.go
+++ b/services/mgmt/lib/testutil/modules.go
@@ -7,11 +7,11 @@
 	"strconv"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/flags/consts"
@@ -46,13 +46,13 @@
 
 // CredentialsForChild creates credentials for a child process.
 func CredentialsForChild(ctx *context.T, blessing string) (string, []string) {
-	creds, _ := tsecurity.ForkCredentials(veyron2.GetPrincipal(ctx), blessing)
+	creds, _ := tsecurity.ForkCredentials(v23.GetPrincipal(ctx), blessing)
 	return creds, []string{consts.VeyronCredentials + "=" + creds}
 }
 
 // SetNSRoots sets the roots for the local runtime's namespace.
 func SetNSRoots(t *testing.T, ctx *context.T, roots ...string) {
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 	if err := ns.SetRoots(roots...); err != nil {
 		t.Fatalf(testutil.FormatLogLine(3, "SetRoots(%v) failed with %v", roots, err))
 	}
@@ -78,7 +78,7 @@
 	// TODO(caprita): Define a GetNamespaceRootsCommand in modules/core and
 	// use that?
 
-	oldNamespaceRoots := veyron2.GetNamespace(ctx).Roots()
+	oldNamespaceRoots := v23.GetNamespace(ctx).Roots()
 	fn := func() {
 		vlog.VI(1).Info("------------ CLEANUP ------------")
 		vlog.VI(1).Info("---------------------------------")
@@ -114,7 +114,7 @@
 
 // NewServer creates a new server.
 func NewServer(ctx *context.T) (ipc.Server, string) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Fatalf("NewServer() failed: %v", err)
 	}
diff --git a/services/mgmt/logreader/impl/logfile.go b/services/mgmt/logreader/impl/logfile.go
index d4eab94..9906d52 100644
--- a/services/mgmt/logreader/impl/logfile.go
+++ b/services/mgmt/logreader/impl/logfile.go
@@ -11,11 +11,11 @@
 	"path/filepath"
 	"strings"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/services/mgmt/logreader"
-	"v.io/core/veyron2/services/mgmt/logreader/types"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/services/mgmt/logreader"
+	"v.io/v23/services/mgmt/logreader/types"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 const pkgPath = "v.io/core/veyron/services/mgmt/logreader/impl"
diff --git a/services/mgmt/logreader/impl/logfile_test.go b/services/mgmt/logreader/impl/logfile_test.go
index 5447160..bc40c09 100644
--- a/services/mgmt/logreader/impl/logfile_test.go
+++ b/services/mgmt/logreader/impl/logfile_test.go
@@ -10,23 +10,23 @@
 	_ "v.io/core/veyron/profiles"
 	"v.io/core/veyron/services/mgmt/logreader/impl"
 
-	"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/services/mgmt/logreader"
-	"v.io/core/veyron2/services/mgmt/logreader/types"
-	"v.io/core/veyron2/verror"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/logreader"
+	"v.io/v23/services/mgmt/logreader/types"
+	"v.io/v23/verror"
 )
 
 func startServer(t *testing.T, ctx *context.T, disp ipc.Dispatcher) (ipc.Server, string, error) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer failed: %v", err)
 		return nil, "", err
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Fatalf("Listen failed: %v", err)
 		return nil, "", err
diff --git a/services/mgmt/logreader/impl/reader.go b/services/mgmt/logreader/impl/reader.go
index 906a530..83cd213 100644
--- a/services/mgmt/logreader/impl/reader.go
+++ b/services/mgmt/logreader/impl/reader.go
@@ -6,8 +6,8 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/ipc"
+	"v.io/v23/verror"
 )
 
 // followReader implements the functionality of io.Reader, plus:
diff --git a/services/mgmt/pprof/client/proxy.go b/services/mgmt/pprof/client/proxy.go
index 7ad3cfb..9ee924a 100644
--- a/services/mgmt/pprof/client/proxy.go
+++ b/services/mgmt/pprof/client/proxy.go
@@ -16,9 +16,9 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/services/mgmt/pprof"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/context"
+	"v.io/v23/services/mgmt/pprof"
+	"v.io/v23/vtrace"
 )
 
 // StartProxy starts the pprof proxy to a remote pprof object.
diff --git a/services/mgmt/pprof/client/proxy_test.go b/services/mgmt/pprof/client/proxy_test.go
index 2db0631..ab865d4 100644
--- a/services/mgmt/pprof/client/proxy_test.go
+++ b/services/mgmt/pprof/client/proxy_test.go
@@ -6,8 +6,8 @@
 	"net/http"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/security"
+	"v.io/v23"
+	"v.io/v23/security"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -27,12 +27,12 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	s, err := veyron2.NewServer(ctx)
+	s, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("failed to start server: %v", err)
 	}
 	defer s.Stop()
-	endpoints, err := s.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := s.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Fatalf("failed to listen: %v", err)
 	}
diff --git a/services/mgmt/pprof/impl/server.go b/services/mgmt/pprof/impl/server.go
index bd3594a..4dee156 100644
--- a/services/mgmt/pprof/impl/server.go
+++ b/services/mgmt/pprof/impl/server.go
@@ -7,9 +7,9 @@
 	"runtime/pprof"
 	"time"
 
-	"v.io/core/veyron2/ipc"
-	spprof "v.io/core/veyron2/services/mgmt/pprof"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/ipc"
+	spprof "v.io/v23/services/mgmt/pprof"
+	"v.io/v23/verror"
 )
 
 const pkgPath = "v.io/core/veyron/services/mgmt/pprof/impl"
diff --git a/services/mgmt/profile/impl/dispatcher.go b/services/mgmt/profile/impl/dispatcher.go
index 35396a1..80ed4bc 100644
--- a/services/mgmt/profile/impl/dispatcher.go
+++ b/services/mgmt/profile/impl/dispatcher.go
@@ -3,8 +3,8 @@
 import (
 	"path/filepath"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
 
 	"v.io/core/veyron/services/mgmt/lib/fs"
 	"v.io/core/veyron/services/mgmt/repository"
diff --git a/services/mgmt/profile/impl/impl_test.go b/services/mgmt/profile/impl/impl_test.go
index 8b7e735..eb0c2a5 100644
--- a/services/mgmt/profile/impl/impl_test.go
+++ b/services/mgmt/profile/impl/impl_test.go
@@ -6,9 +6,9 @@
 	"reflect"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/build"
+	"v.io/v23"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/build"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -35,7 +35,7 @@
 	defer shutdown()
 
 	// Setup and start the profile repository server.
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer() failed: %v", err)
 	}
@@ -51,7 +51,7 @@
 	if err != nil {
 		t.Fatalf("NewDispatcher() failed: %v", err)
 	}
-	l := veyron2.GetListenSpec(ctx)
+	l := v23.GetListenSpec(ctx)
 	endpoints, err := server.Listen(l)
 	if err != nil {
 		t.Fatalf("Listen(%s) failed: %v", l, err)
@@ -113,7 +113,7 @@
 	defer shutdown()
 
 	// Setup and start the profile repository server.
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer() failed: %v", err)
 	}
@@ -130,7 +130,7 @@
 	if err != nil {
 		t.Fatalf("NewDispatcher() failed: %v", err)
 	}
-	l := veyron2.GetListenSpec(ctx)
+	l := v23.GetListenSpec(ctx)
 	endpoints, err := server.Listen(l)
 	if err != nil {
 		t.Fatalf("Listen(%s) failed: %v", l, err)
@@ -160,7 +160,7 @@
 	server.Stop()
 
 	// Setup and start a second server.
-	server, err = veyron2.NewServer(ctx)
+	server, err = v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer() failed: %v", err)
 	}
diff --git a/services/mgmt/profile/impl/service.go b/services/mgmt/profile/impl/service.go
index f528d5a..2519397 100644
--- a/services/mgmt/profile/impl/service.go
+++ b/services/mgmt/profile/impl/service.go
@@ -7,9 +7,9 @@
 	"v.io/core/veyron/services/mgmt/profile"
 	"v.io/core/veyron/services/mgmt/repository"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/vlog"
 )
 
 // profileService implements the Profile server interface.
diff --git a/services/mgmt/profile/profile.vdl b/services/mgmt/profile/profile.vdl
index 63240ec..7da1abe 100644
--- a/services/mgmt/profile/profile.vdl
+++ b/services/mgmt/profile/profile.vdl
@@ -2,7 +2,7 @@
 // types used by the implementation of Veyron profiles.
 package profile
 
-import "v.io/core/veyron2/services/mgmt/build"
+import "v.io/v23/services/mgmt/build"
 
 // Library describes a shared library that applications may use.
 type Library struct {
diff --git a/services/mgmt/profile/profile.vdl.go b/services/mgmt/profile/profile.vdl.go
index 551f8e2..c700c18 100644
--- a/services/mgmt/profile/profile.vdl.go
+++ b/services/mgmt/profile/profile.vdl.go
@@ -7,10 +7,10 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2/vdl"
+	"v.io/v23/vdl"
 
 	// VDL user imports
-	"v.io/core/veyron2/services/mgmt/build"
+	"v.io/v23/services/mgmt/build"
 )
 
 // Library describes a shared library that applications may use.
diff --git a/services/mgmt/profile/profiled/main.go b/services/mgmt/profile/profiled/main.go
index 6a5938d..7368c38 100644
--- a/services/mgmt/profile/profiled/main.go
+++ b/services/mgmt/profile/profiled/main.go
@@ -3,8 +3,8 @@
 import (
 	"flag"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/signals"
 	_ "v.io/core/veyron/profiles/roaming"
@@ -18,14 +18,14 @@
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	if *store == "" {
 		vlog.Fatalf("Specify a directory for storing profiles using --store=<name>")
 	}
 
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Fatalf("NewServer() failed: %v", err)
 	}
@@ -35,7 +35,7 @@
 		vlog.Fatalf("NewDispatcher() failed: %v", err)
 	}
 
-	ls := veyron2.GetListenSpec(ctx)
+	ls := v23.GetListenSpec(ctx)
 	endpoint, err := server.Listen(ls)
 	if err != nil {
 		vlog.Fatalf("Listen(%s) failed: %v", ls, err)
diff --git a/services/mgmt/profile/profiled/profiled_v23_test.go b/services/mgmt/profile/profiled/profiled_v23_test.go
index f0d62c4..b0085fa 100644
--- a/services/mgmt/profile/profiled/profiled_v23_test.go
+++ b/services/mgmt/profile/profiled/profiled_v23_test.go
@@ -5,7 +5,7 @@
 	"strings"
 
 	"v.io/core/veyron/lib/testutil/v23tests"
-	"v.io/core/veyron2/naming"
+	"v.io/v23/naming"
 )
 
 //go:generate v23 test generate
diff --git a/services/mgmt/repository/repository.vdl b/services/mgmt/repository/repository.vdl
index 54b5a8e..1db5896 100644
--- a/services/mgmt/repository/repository.vdl
+++ b/services/mgmt/repository/repository.vdl
@@ -4,9 +4,9 @@
 
 import (
 	"v.io/core/veyron/services/mgmt/profile"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/security/access"
-	public "v.io/core/veyron2/services/mgmt/repository"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/security/access"
+	public "v.io/v23/services/mgmt/repository"
 )
 
 // Application describes an application repository internally. Besides
diff --git a/services/mgmt/repository/repository.vdl.go b/services/mgmt/repository/repository.vdl.go
index b2aab89..b966500 100644
--- a/services/mgmt/repository/repository.vdl.go
+++ b/services/mgmt/repository/repository.vdl.go
@@ -7,17 +7,17 @@
 
 import (
 	// VDL system imports
-	"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/veyron/services/mgmt/profile"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/services/security/access/object"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/services/security/access"
+	"v.io/v23/services/security/access/object"
 )
 
 // ApplicationClientMethods is the client interface
@@ -80,7 +80,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implApplicationClientStub) Put(ctx *context.T, i0 []string, i1 application.Envelope, opts ...ipc.CallOpt) (err error) {
@@ -195,7 +195,7 @@
 	PkgPath: "v.io/core/veyron/services/mgmt/repository",
 	Doc:     "// Application describes an application repository internally. Besides\n// the public Application interface, it allows to add and remove\n// application envelopes.",
 	Embeds: []ipc.EmbedDesc{
-		{"Application", "v.io/core/veyron2/services/mgmt/repository", "// Application provides access to application envelopes. An\n// application envelope is identified by an application name and an\n// application version, which are specified through the object name,\n// and a profile name, which is specified using a method argument.\n//\n// Example:\n// /apps/search/v1.Match([]string{\"base\", \"media\"})\n//   returns an application envelope that can be used for downloading\n//   and executing the \"search\" application, version \"v1\", runnable\n//   on either the \"base\" or \"media\" profile."},
+		{"Application", "v.io/v23/services/mgmt/repository", "// Application provides access to application envelopes. An\n// application envelope is identified by an application name and an\n// application version, which are specified through the object name,\n// and a profile name, which is specified using a method argument.\n//\n// Example:\n// /apps/search/v1.Match([]string{\"base\", \"media\"})\n//   returns an application envelope that can be used for downloading\n//   and executing the \"search\" application, version \"v1\", runnable\n//   on either the \"base\" or \"media\" profile."},
 	},
 	Methods: []ipc.MethodDesc{
 		{
@@ -268,7 +268,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implProfileClientStub) Specification(ctx *context.T, opts ...ipc.CallOpt) (o0 profile.Specification, err error) {
@@ -386,7 +386,7 @@
 	PkgPath: "v.io/core/veyron/services/mgmt/repository",
 	Doc:     "// Profile describes a profile internally. Besides the public Profile\n// interface, it allows to add and remove profile specifications.",
 	Embeds: []ipc.EmbedDesc{
-		{"Profile", "v.io/core/veyron2/services/mgmt/repository", "// Profile abstracts a device's ability to run binaries, and hides\n// specifics such as the operating system, hardware architecture, and\n// the set of installed libraries. Profiles describe binaries and\n// devices, and are used to match them."},
+		{"Profile", "v.io/v23/services/mgmt/repository", "// Profile abstracts a device's ability to run binaries, and hides\n// specifics such as the operating system, hardware architecture, and\n// the set of installed libraries. Profiles describe binaries and\n// devices, and are used to match them."},
 	},
 	Methods: []ipc.MethodDesc{
 		{
diff --git a/services/mgmt/stats/impl/stats.go b/services/mgmt/stats/impl/stats.go
index 5df5f0d..e8fe5c8 100644
--- a/services/mgmt/stats/impl/stats.go
+++ b/services/mgmt/stats/impl/stats.go
@@ -8,14 +8,14 @@
 
 	libstats "v.io/core/veyron/lib/stats"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/stats"
-	"v.io/core/veyron2/services/watch"
-	watchtypes "v.io/core/veyron2/services/watch/types"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/stats"
+	"v.io/v23/services/watch"
+	watchtypes "v.io/v23/services/watch/types"
+	"v.io/v23/vdl"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 type statsService struct {
diff --git a/services/mgmt/stats/impl/stats_test.go b/services/mgmt/stats/impl/stats_test.go
index f036846..ec92128 100644
--- a/services/mgmt/stats/impl/stats_test.go
+++ b/services/mgmt/stats/impl/stats_test.go
@@ -6,13 +6,13 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/stats"
-	"v.io/core/veyron2/services/watch/types"
-	"v.io/core/veyron2/vdl"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/stats"
+	"v.io/v23/services/watch/types"
+	"v.io/v23/vdl"
 
 	libstats "v.io/core/veyron/lib/stats"
 	"v.io/core/veyron/lib/stats/histogram"
@@ -31,12 +31,12 @@
 
 func startServer(t *testing.T, ctx *context.T) (string, func()) {
 	disp := &statsDispatcher{}
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer failed: %v", err)
 		return "", nil
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Fatalf("Listen failed: %v", err)
 		return "", nil
diff --git a/services/mgmt/stats/types.vdl.go b/services/mgmt/stats/types.vdl.go
index 9b70297..d39481d 100644
--- a/services/mgmt/stats/types.vdl.go
+++ b/services/mgmt/stats/types.vdl.go
@@ -6,7 +6,7 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2/vdl"
+	"v.io/v23/vdl"
 )
 
 // HistogramValue is the value of Histogram objects.
diff --git a/services/mgmt/vtrace/impl/vtrace.go b/services/mgmt/vtrace/impl/vtrace.go
index 145485a..63d62e9 100644
--- a/services/mgmt/vtrace/impl/vtrace.go
+++ b/services/mgmt/vtrace/impl/vtrace.go
@@ -1,11 +1,11 @@
 package impl
 
 import (
-	"v.io/core/veyron2/ipc"
-	svtrace "v.io/core/veyron2/services/mgmt/vtrace"
-	"v.io/core/veyron2/uniqueid"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23/ipc"
+	svtrace "v.io/v23/services/mgmt/vtrace"
+	"v.io/v23/uniqueid"
+	"v.io/v23/verror"
+	"v.io/v23/vtrace"
 )
 
 type vtraceService struct{}
diff --git a/services/mgmt/vtrace/impl/vtrace_test.go b/services/mgmt/vtrace/impl/vtrace_test.go
index f8fbb9f..c32ac51 100644
--- a/services/mgmt/vtrace/impl/vtrace_test.go
+++ b/services/mgmt/vtrace/impl/vtrace_test.go
@@ -4,9 +4,9 @@
 	"io"
 	"testing"
 
-	"v.io/core/veyron2"
-	service "v.io/core/veyron2/services/mgmt/vtrace"
-	"v.io/core/veyron2/vtrace"
+	"v.io/v23"
+	service "v.io/v23/services/mgmt/vtrace"
+	"v.io/v23/vtrace"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -17,11 +17,11 @@
 	ctx, shutdown := testutil.InitForTest()
 	defer shutdown()
 
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("Could not create server: %s", err)
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Fatalf("Listen failed: %s", err)
 	}
diff --git a/services/mounttable/lib/collection_test_interface.vdl.go b/services/mounttable/lib/collection_test_interface.vdl.go
index f7f8721..4cb7c8d 100644
--- a/services/mounttable/lib/collection_test_interface.vdl.go
+++ b/services/mounttable/lib/collection_test_interface.vdl.go
@@ -5,9 +5,9 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
 )
 
 // CollectionClientMethods is the client interface
@@ -49,7 +49,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implCollectionClientStub) Export(ctx *context.T, i0 string, i1 bool, opts ...ipc.CallOpt) (err error) {
diff --git a/services/mounttable/lib/collectionserver_test.go b/services/mounttable/lib/collectionserver_test.go
index e7500f3..819b7ea 100644
--- a/services/mounttable/lib/collectionserver_test.go
+++ b/services/mounttable/lib/collectionserver_test.go
@@ -3,10 +3,10 @@
 import (
 	"sync"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/verror"
 )
 
 // collectionServer is a very simple collection server implementation for testing, with sufficient debugging to help
diff --git a/services/mounttable/lib/mounttable.go b/services/mounttable/lib/mounttable.go
index 6509b5a..0c4a192 100644
--- a/services/mounttable/lib/mounttable.go
+++ b/services/mounttable/lib/mounttable.go
@@ -11,14 +11,14 @@
 
 	"v.io/core/veyron/lib/glob"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mounttable"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mounttable"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 )
 
 var (
@@ -442,7 +442,7 @@
 	if naming.Rooted(server) {
 		epString, _ = naming.SplitAddressName(server)
 	}
-	_, err := veyron2.NewEndpoint(epString)
+	_, err := v23.NewEndpoint(epString)
 	if err != nil {
 		return fmt.Errorf("malformed address %q for mounted server %q", epString, server)
 	}
diff --git a/services/mounttable/lib/mounttable_test.go b/services/mounttable/lib/mounttable_test.go
index 77e87e5..b61188f 100644
--- a/services/mounttable/lib/mounttable_test.go
+++ b/services/mounttable/lib/mounttable_test.go
@@ -9,14 +9,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/services/security/access"
-	"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/services/security/access"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	tsecurity "v.io/core/veyron/lib/testutil/security"
@@ -34,7 +34,7 @@
 
 func doMount(t *testing.T, ctx *context.T, ep, suffix, service string, blessingPatterns []security.BlessingPattern, shouldSucceed bool) {
 	name := naming.JoinAddressName(ep, suffix)
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "MountX", []interface{}{service, blessingPatterns, uint32(ttlSecs), 0}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
@@ -52,7 +52,7 @@
 
 func doUnmount(t *testing.T, ctx *context.T, ep, suffix, service string, shouldSucceed bool) {
 	name := naming.JoinAddressName(ep, suffix)
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "Unmount", []interface{}{service}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
@@ -70,7 +70,7 @@
 
 func doGetACL(t *testing.T, ctx *context.T, ep, suffix string, shouldSucceed bool) (acl access.TaggedACLMap, etag string) {
 	name := naming.JoinAddressName(ep, suffix)
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "GetACL", nil, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
@@ -89,7 +89,7 @@
 
 func doSetACL(t *testing.T, ctx *context.T, ep, suffix string, acl access.TaggedACLMap, etag string, shouldSucceed bool) {
 	name := naming.JoinAddressName(ep, suffix)
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "SetACL", []interface{}{acl, etag}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
@@ -107,7 +107,7 @@
 
 func doDeleteNode(t *testing.T, ctx *context.T, ep, suffix string, shouldSucceed bool) {
 	name := naming.JoinAddressName(ep, suffix)
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "Delete", []interface{}{false}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
@@ -125,7 +125,7 @@
 
 func doDeleteSubtree(t *testing.T, ctx *context.T, ep, suffix string, shouldSucceed bool) {
 	name := naming.JoinAddressName(ep, suffix)
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "Delete", []interface{}{true}, options.NoResolve{})
 	if err != nil {
 		if !shouldSucceed {
@@ -155,7 +155,7 @@
 
 func resolve(ctx *context.T, name string) (*naming.VDLMountEntry, error) {
 	// Resolve the name one level.
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, "ResolveStep", nil, options.NoResolve{})
 	if err != nil {
 		return nil, err
@@ -177,7 +177,7 @@
 		boom(t, "Failed to Export.Resolve %s: %s", name, err)
 	}
 	// Export the value.
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, mountentry2names(resolved)[0], "Export", []interface{}{contents, true}, options.NoResolve{})
 	if err != nil {
 		boom(t, "Failed to Export.StartCall %s to %s: %s", name, contents, err)
@@ -197,7 +197,7 @@
 		boom(t, "Failed to Resolve %s: %s", name, err)
 	}
 	// Look up the value.
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, mountentry2names(resolved)[0], "Lookup", nil, options.NoResolve{})
 	if err != nil {
 		if shouldSucceed {
@@ -221,7 +221,7 @@
 }
 
 func newMT(t *testing.T, acl string, rootCtx *context.T) (ipc.Server, string) {
-	server, err := veyron2.NewServer(rootCtx, options.ServesMountTable(true))
+	server, err := v23.NewServer(rootCtx, options.ServesMountTable(true))
 	if err != nil {
 		boom(t, "r.NewServer: %s", err)
 	}
@@ -231,7 +231,7 @@
 		boom(t, "NewMountTableDispatcher: %v", err)
 	}
 	// Start serving on a loopback address.
-	eps, err := server.Listen(veyron2.GetListenSpec(rootCtx))
+	eps, err := server.Listen(v23.GetListenSpec(rootCtx))
 	if err != nil {
 		boom(t, "Failed to Listen mount table: %s", err)
 	}
@@ -244,12 +244,12 @@
 }
 
 func newCollection(t *testing.T, acl string, rootCtx *context.T) (ipc.Server, string) {
-	server, err := veyron2.NewServer(rootCtx)
+	server, err := v23.NewServer(rootCtx)
 	if err != nil {
 		boom(t, "r.NewServer: %s", err)
 	}
 	// Start serving on a loopback address.
-	eps, err := server.Listen(veyron2.GetListenSpec(rootCtx))
+	eps, err := server.Listen(v23.GetListenSpec(rootCtx))
 	if err != nil {
 		boom(t, "Failed to Listen mount table: %s", err)
 	}
@@ -350,7 +350,7 @@
 
 func doGlobX(t *testing.T, ctx *context.T, ep, suffix, pattern string, joinServer bool) []string {
 	name := naming.JoinAddressName(ep, suffix)
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, ipc.GlobMethod, []interface{}{pattern}, options.NoResolve{})
 	if err != nil {
 		boom(t, "Glob.StartCall %s %s: %s", name, pattern, err)
@@ -663,29 +663,29 @@
 	}
 }
 
-func initTest() (rootCtx *context.T, aliceCtx *context.T, bobCtx *context.T, shutdown veyron2.Shutdown) {
+func initTest() (rootCtx *context.T, aliceCtx *context.T, bobCtx *context.T, shutdown v23.Shutdown) {
 	testutil.Init()
 	ctx, shutdown := testutil.InitForTest()
 	var err error
-	if rootCtx, err = veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal("root")); err != nil {
+	if rootCtx, err = v23.SetPrincipal(ctx, tsecurity.NewPrincipal("root")); err != nil {
 		panic("failed to set root principal")
 	}
-	if aliceCtx, err = veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal("alice")); err != nil {
+	if aliceCtx, err = v23.SetPrincipal(ctx, tsecurity.NewPrincipal("alice")); err != nil {
 		panic("failed to set alice principal")
 	}
-	if bobCtx, err = veyron2.SetPrincipal(ctx, tsecurity.NewPrincipal("bob")); err != nil {
+	if bobCtx, err = v23.SetPrincipal(ctx, tsecurity.NewPrincipal("bob")); err != nil {
 		panic("failed to set bob principal")
 	}
 	for _, r := range []*context.T{rootCtx, aliceCtx, bobCtx} {
 		// A hack to set the namespace roots to a value that won't work.
-		veyron2.GetNamespace(r).SetRoots()
+		v23.GetNamespace(r).SetRoots()
 		// And have all principals recognize each others blessings.
-		p1 := veyron2.GetPrincipal(r)
+		p1 := v23.GetPrincipal(r)
 		for _, other := range []*context.T{rootCtx, aliceCtx, bobCtx} {
 			// tsecurity.NewPrincipal has already setup each
 			// principal to use the same blessing for both server
 			// and client activities.
-			if err := p1.AddToRoots(veyron2.GetPrincipal(other).BlessingStore().Default()); err != nil {
+			if err := p1.AddToRoots(v23.GetPrincipal(other).BlessingStore().Default()); err != nil {
 				panic(err)
 			}
 		}
diff --git a/services/mounttable/lib/neighborhood.go b/services/mounttable/lib/neighborhood.go
index 6e00503..6a4a156 100644
--- a/services/mounttable/lib/neighborhood.go
+++ b/services/mounttable/lib/neighborhood.go
@@ -9,14 +9,14 @@
 	"v.io/core/veyron/lib/glob"
 	"v.io/core/veyron/lib/netconfig"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mounttable"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mounttable"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	mdns "github.com/presotto/go-mdns-sd"
 )
@@ -41,7 +41,7 @@
 func getPort(address string) uint16 {
 	epAddr, _ := naming.SplitAddressName(address)
 
-	ep, err := veyron2.NewEndpoint(epAddr)
+	ep, err := v23.NewEndpoint(epAddr)
 	if err != nil {
 		return 0
 	}
diff --git a/services/mounttable/lib/neighborhood_test.go b/services/mounttable/lib/neighborhood_test.go
index 05f6b0a..11257d2 100644
--- a/services/mounttable/lib/neighborhood_test.go
+++ b/services/mounttable/lib/neighborhood_test.go
@@ -7,10 +7,10 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -31,14 +31,14 @@
 	defer shutdown()
 
 	vlog.Infof("TestNeighborhood")
-	server, err := veyron2.NewServer(rootCtx)
+	server, err := v23.NewServer(rootCtx)
 	if err != nil {
 		boom(t, "r.NewServer: %s", err)
 	}
 	defer server.Stop()
 
 	// Start serving on a loopback address.
-	eps, err := server.Listen(veyron2.GetListenSpec(rootCtx))
+	eps, err := server.Listen(v23.GetListenSpec(rootCtx))
 	if err != nil {
 		boom(t, "Failed to Listen mount table: %s", err)
 	}
@@ -84,7 +84,7 @@
 	// Make sure we can resolve through the neighborhood.
 	expectedSuffix := "a/b"
 
-	client := veyron2.GetClient(rootCtx)
+	client := v23.GetClient(rootCtx)
 	name := naming.JoinAddressName(estr, serverName+"/"+expectedSuffix)
 	call, cerr := client.StartCall(rootCtx, name, "ResolveStep", nil, options.NoResolve{})
 	if cerr != nil {
diff --git a/services/mounttable/lib/serverlist.go b/services/mounttable/lib/serverlist.go
index 82d658e..7da55d5 100644
--- a/services/mounttable/lib/serverlist.go
+++ b/services/mounttable/lib/serverlist.go
@@ -5,8 +5,8 @@
 	"sync"
 	"time"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
+	"v.io/v23/naming"
+	"v.io/v23/security"
 )
 
 type serverListClock interface {
diff --git a/services/mounttable/lib/serverlist_test.go b/services/mounttable/lib/serverlist_test.go
index 7c1c135..77220b0 100644
--- a/services/mounttable/lib/serverlist_test.go
+++ b/services/mounttable/lib/serverlist_test.go
@@ -6,8 +6,8 @@
 	"testing"
 	"time"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
+	"v.io/v23/naming"
+	"v.io/v23/security"
 )
 
 type fakeTime struct {
diff --git a/services/mounttable/lib/servers.go b/services/mounttable/lib/servers.go
index d045682..56d6556 100644
--- a/services/mounttable/lib/servers.go
+++ b/services/mounttable/lib/servers.go
@@ -3,12 +3,12 @@
 import (
 	"net"
 
-	"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/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/vlog"
 )
 
 func StartServers(ctx *context.T, listenSpec ipc.ListenSpec, mountName, nhName, aclFile string) (string, func(), error) {
@@ -19,9 +19,9 @@
 		}
 	}
 
-	mtServer, err := veyron2.NewServer(ctx, options.ServesMountTable(true))
+	mtServer, err := v23.NewServer(ctx, options.ServesMountTable(true))
 	if err != nil {
-		vlog.Errorf("veyron2.NewServer failed: %v", err)
+		vlog.Errorf("v23.NewServer failed: %v", err)
 		return "", nil, err
 	}
 	stopFuncs = append(stopFuncs, mtServer.Stop)
@@ -54,9 +54,9 @@
 		if port != "" {
 			neighborhoodListenSpec.Addrs[0].Address = net.JoinHostPort(host, "0")
 		}
-		nhServer, err := veyron2.NewServer(ctx, options.ServesMountTable(true))
+		nhServer, err := v23.NewServer(ctx, options.ServesMountTable(true))
 		if err != nil {
-			vlog.Errorf("veyron2.NewServer failed: %v", err)
+			vlog.Errorf("v23.NewServer failed: %v", err)
 			stop()
 			return "", nil, err
 		}
diff --git a/services/mounttable/lib/tamg.go b/services/mounttable/lib/tamg.go
index 693dd5e..b4ff42d 100644
--- a/services/mounttable/lib/tamg.go
+++ b/services/mounttable/lib/tamg.go
@@ -3,9 +3,9 @@
 import (
 	"strconv"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
 )
 
 // TAMG associates a generation with a TaggedACLMap
diff --git a/services/mounttable/mounttabled/mounttable.go b/services/mounttable/mounttabled/mounttable.go
index 307cb33..3075073 100644
--- a/services/mounttable/mounttabled/mounttable.go
+++ b/services/mounttable/mounttabled/mounttable.go
@@ -6,8 +6,8 @@
 	"fmt"
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/signals"
 	_ "v.io/core/veyron/profiles/roaming"
@@ -21,10 +21,10 @@
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	name, stop, err := mounttable.StartServers(ctx, veyron2.GetListenSpec(ctx), *mountName, *nhName, *aclFile)
+	name, stop, err := mounttable.StartServers(ctx, v23.GetListenSpec(ctx), *mountName, *nhName, *aclFile)
 	if err != nil {
 		vlog.Errorf("mounttable.StartServers failed: %v", err)
 		os.Exit(1)
diff --git a/services/proxy/proxyd/main.go b/services/proxy/proxyd/main.go
index 1c446a5..30d7b28 100644
--- a/services/proxy/proxyd/main.go
+++ b/services/proxy/proxyd/main.go
@@ -9,9 +9,9 @@
 	_ "net/http/pprof"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/naming"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/signals"
 	_ "v.io/core/veyron/profiles"
@@ -32,21 +32,21 @@
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	rid, err := naming.NewRoutingID()
 	if err != nil {
 		vlog.Fatal(err)
 	}
-	proxy, err := proxy.New(rid, veyron2.GetPrincipal(ctx), *protocol, *address, *pubAddress)
+	proxy, err := proxy.New(rid, v23.GetPrincipal(ctx), *protocol, *address, *pubAddress)
 	if err != nil {
 		vlog.Fatal(err)
 	}
 	defer proxy.Shutdown()
 
 	if len(*name) > 0 {
-		publisher := publisher.New(ctx, veyron2.GetNamespace(ctx), time.Minute)
+		publisher := publisher.New(ctx, v23.GetNamespace(ctx), time.Minute)
 		defer publisher.WaitForStop()
 		defer publisher.Stop()
 		publisher.AddServer(proxy.Endpoint().String(), false)
diff --git a/services/security/discharger.vdl b/services/security/discharger.vdl
index 0cfdd88..d6fc62e 100644
--- a/services/security/discharger.vdl
+++ b/services/security/discharger.vdl
@@ -1,6 +1,6 @@
 package security
 
-import "v.io/core/veyron2/security"
+import "v.io/v23/security"
 
 // Discharger is the interface for obtaining discharges for ThirdPartyCaveats.
 type Discharger interface {
diff --git a/services/security/discharger.vdl.go b/services/security/discharger.vdl.go
index 9249954..0206d7c 100644
--- a/services/security/discharger.vdl.go
+++ b/services/security/discharger.vdl.go
@@ -5,12 +5,12 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
 
 	// VDL user imports
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // DischargerClientMethods is the client interface
@@ -50,7 +50,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implDischargerClientStub) Discharge(ctx *context.T, i0 security.Caveat, i1 security.DischargeImpetus, opts ...ipc.CallOpt) (o0 security.WireDischarge, err error) {
diff --git a/services/security/discharger/discharger.go b/services/security/discharger/discharger.go
index 5f4b436..f0a2f31 100644
--- a/services/security/discharger/discharger.go
+++ b/services/security/discharger/discharger.go
@@ -5,8 +5,8 @@
 	"time"
 
 	services "v.io/core/veyron/services/security"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
 )
 
 // dischargerd issues discharges for all caveats present in the current
diff --git a/services/security/groups/grpserverd/main.go b/services/security/groups/grpserverd/main.go
index 0109f79..0262c01 100644
--- a/services/security/groups/grpserverd/main.go
+++ b/services/security/groups/grpserverd/main.go
@@ -7,9 +7,9 @@
 import (
 	"flag"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/signals"
 	_ "v.io/core/veyron/profiles/roaming"
@@ -23,14 +23,14 @@
 )
 
 func main() {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	s, err := veyron2.NewServer(ctx)
+	s, err := v23.NewServer(ctx)
 	if err != nil {
-		vlog.Fatal("veyron2.NewServer() failed: ", err)
+		vlog.Fatal("v23.NewServer() failed: ", err)
 	}
-	if _, err := s.Listen(veyron2.GetListenSpec(ctx)); err != nil {
+	if _, err := s.Listen(v23.GetListenSpec(ctx)); err != nil {
 		vlog.Fatal("s.Listen() failed: ", err)
 	}
 
diff --git a/services/security/groups/server/group.go b/services/security/groups/server/group.go
index cc8a656..f145778 100644
--- a/services/security/groups/server/group.go
+++ b/services/security/groups/server/group.go
@@ -1,11 +1,11 @@
 package server
 
 import (
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/services/security/groups"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/services/security/groups"
+	"v.io/v23/verror"
 )
 
 type group struct {
diff --git a/services/security/groups/server/manager.go b/services/security/groups/server/manager.go
index 9016fa5..fff9dc7 100644
--- a/services/security/groups/server/manager.go
+++ b/services/security/groups/server/manager.go
@@ -3,10 +3,10 @@
 import (
 	"strings"
 
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/services/security/groups"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/services/security/groups"
 )
 
 type manager struct {
diff --git a/services/security/groups/server/server_test.go b/services/security/groups/server/server_test.go
index a25d886..d59c461 100644
--- a/services/security/groups/server/server_test.go
+++ b/services/security/groups/server/server_test.go
@@ -5,14 +5,14 @@
 	"runtime/debug"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/services/security/groups"
-	"v.io/core/veyron2/verror"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/services/security/groups"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	tsecurity "v.io/core/veyron/lib/testutil/security"
 	_ "v.io/core/veyron/profiles"
@@ -76,11 +76,11 @@
 }
 
 func newServer(ctx *context.T) (string, func()) {
-	s, err := veyron2.NewServer(ctx)
+	s, err := v23.NewServer(ctx)
 	if err != nil {
-		vlog.Fatal("veyron2.NewServer() failed: ", err)
+		vlog.Fatal("v23.NewServer() failed: ", err)
 	}
-	eps, err := s.Listen(veyron2.GetListenSpec(ctx))
+	eps, err := s.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		vlog.Fatal("s.Listen() failed: ", err)
 	}
@@ -100,7 +100,7 @@
 }
 
 func setupOrDie() (clientCtx *context.T, serverName string, cleanup func()) {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	cp, sp := tsecurity.NewPrincipal("client"), tsecurity.NewPrincipal("server")
 
 	// Have the server principal bless the client principal as "client".
@@ -118,13 +118,13 @@
 		vlog.Fatal("cp.AddToRoots() failed: ", err)
 	}
 
-	clientCtx, err = veyron2.SetPrincipal(ctx, cp)
+	clientCtx, err = v23.SetPrincipal(ctx, cp)
 	if err != nil {
-		vlog.Fatal("veyron2.SetPrincipal() failed: ", err)
+		vlog.Fatal("v23.SetPrincipal() failed: ", err)
 	}
-	serverCtx, err := veyron2.SetPrincipal(ctx, sp)
+	serverCtx, err := v23.SetPrincipal(ctx, sp)
 	if err != nil {
-		vlog.Fatal("veyron2.SetPrincipal() failed: ", err)
+		vlog.Fatal("v23.SetPrincipal() failed: ", err)
 	}
 
 	serverName, stopServer := newServer(serverCtx)
diff --git a/services/security/groups/server/types.vdl b/services/security/groups/server/types.vdl
index 9a8cdd0..623ff3a 100644
--- a/services/security/groups/server/types.vdl
+++ b/services/security/groups/server/types.vdl
@@ -1,8 +1,8 @@
 package server
 
 import (
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/services/security/groups"
+	"v.io/v23/services/security/access"
+	"v.io/v23/services/security/groups"
 )
 
 // groupData represents the persistent state of a group. (The group name is
diff --git a/services/security/groups/server/types.vdl.go b/services/security/groups/server/types.vdl.go
index 7d1e1d3..45812c1 100644
--- a/services/security/groups/server/types.vdl.go
+++ b/services/security/groups/server/types.vdl.go
@@ -5,11 +5,11 @@
 
 import (
 	// VDL system imports
-	"v.io/core/veyron2/vdl"
+	"v.io/v23/vdl"
 
 	// VDL user imports
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/services/security/groups"
+	"v.io/v23/services/security/access"
+	"v.io/v23/services/security/groups"
 )
 
 // groupData represents the persistent state of a group. (The group name is
diff --git a/tools/application/impl.go b/tools/application/impl.go
index ba4daf6..5165e07 100644
--- a/tools/application/impl.go
+++ b/tools/application/impl.go
@@ -12,9 +12,9 @@
 	"time"
 
 	"v.io/core/veyron/services/mgmt/repository"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/services/mgmt/application"
 	"v.io/lib/cmdline"
+	"v.io/v23/context"
+	"v.io/v23/services/mgmt/application"
 )
 
 func getEnvelopeJSON(app repository.ApplicationClientMethods, profiles string) ([]byte, error) {
diff --git a/tools/application/impl_test.go b/tools/application/impl_test.go
index 58d2db1..72d9751 100644
--- a/tools/application/impl_test.go
+++ b/tools/application/impl_test.go
@@ -7,14 +7,14 @@
 	"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/services/mgmt/application"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -113,12 +113,12 @@
 
 func startServer(t *testing.T, ctx *context.T) (ipc.Server, naming.Endpoint, error) {
 	dispatcher := NewDispatcher()
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Errorf("NewServer failed: %v", err)
 		return nil, nil, err
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Errorf("Listen failed: %v", err)
 		return nil, nil, err
@@ -137,7 +137,7 @@
 }
 
 func TestApplicationClient(t *testing.T) {
-	var shutdown veyron2.Shutdown
+	var shutdown v23.Shutdown
 	gctx, shutdown = testutil.InitForTest()
 	defer shutdown()
 
diff --git a/tools/application/main.go b/tools/application/main.go
index 65f7187..bf0bf4a 100644
--- a/tools/application/main.go
+++ b/tools/application/main.go
@@ -6,8 +6,8 @@
 import (
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	_ "v.io/core/veyron/profiles"
 )
@@ -15,8 +15,8 @@
 var gctx *context.T
 
 func main() {
-	var shutdown veyron2.Shutdown
-	gctx, shutdown = veyron2.Init()
+	var shutdown v23.Shutdown
+	gctx, shutdown = v23.Init()
 	exitCode := root().Main()
 	shutdown()
 	os.Exit(exitCode)
diff --git a/tools/binary/impl_test.go b/tools/binary/impl_test.go
index d0b1788..a0275b5 100644
--- a/tools/binary/impl_test.go
+++ b/tools/binary/impl_test.go
@@ -11,15 +11,15 @@
 	"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/services/mgmt/binary"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/binary"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -96,12 +96,12 @@
 
 func startServer(t *testing.T, ctx *context.T) (ipc.Server, naming.Endpoint, error) {
 	dispatcher := NewDispatcher()
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Errorf("NewServer failed: %v", err)
 		return nil, nil, err
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Errorf("Listen failed: %v", err)
 		return nil, nil, err
@@ -120,7 +120,7 @@
 }
 
 func TestBinaryClient(t *testing.T) {
-	var shutdown veyron2.Shutdown
+	var shutdown v23.Shutdown
 	gctx, shutdown = testutil.InitForTest()
 	defer shutdown()
 
diff --git a/tools/binary/main.go b/tools/binary/main.go
index 65f7187..bf0bf4a 100644
--- a/tools/binary/main.go
+++ b/tools/binary/main.go
@@ -6,8 +6,8 @@
 import (
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	_ "v.io/core/veyron/profiles"
 )
@@ -15,8 +15,8 @@
 var gctx *context.T
 
 func main() {
-	var shutdown veyron2.Shutdown
-	gctx, shutdown = veyron2.Init()
+	var shutdown v23.Shutdown
+	gctx, shutdown = v23.Init()
 	exitCode := root().Main()
 	shutdown()
 	os.Exit(exitCode)
diff --git a/tools/build/impl.go b/tools/build/impl.go
index 4b7e4af..d0c0e5d 100644
--- a/tools/build/impl.go
+++ b/tools/build/impl.go
@@ -10,9 +10,9 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2/context"
-	vbuild "v.io/core/veyron2/services/mgmt/build"
 	"v.io/lib/cmdline"
+	"v.io/v23/context"
+	vbuild "v.io/v23/services/mgmt/build"
 )
 
 const (
diff --git a/tools/build/impl_test.go b/tools/build/impl_test.go
index 1e4a076..f631cda 100644
--- a/tools/build/impl_test.go
+++ b/tools/build/impl_test.go
@@ -5,14 +5,14 @@
 	"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/services/mgmt/binary"
-	"v.io/core/veyron2/services/mgmt/build"
-	"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/services/mgmt/binary"
+	"v.io/v23/services/mgmt/build"
+	"v.io/v23/verror"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -40,11 +40,11 @@
 type dispatcher struct{}
 
 func startServer(ctx *context.T, t *testing.T) (ipc.Server, naming.Endpoint) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Fatalf("NewServer failed: %v", err)
 	}
-	l := veyron2.GetListenSpec(ctx)
+	l := v23.GetListenSpec(ctx)
 	endpoints, err := server.Listen(l)
 	if err != nil {
 		t.Fatalf("Listen(%s) failed: %v", l, err)
@@ -63,7 +63,7 @@
 }
 
 func TestBuildClient(t *testing.T) {
-	var shutdown veyron2.Shutdown
+	var shutdown v23.Shutdown
 	gctx, shutdown = testutil.InitForTest()
 	defer shutdown()
 
diff --git a/tools/build/main.go b/tools/build/main.go
index 50b3224..432a537 100644
--- a/tools/build/main.go
+++ b/tools/build/main.go
@@ -6,8 +6,8 @@
 import (
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	_ "v.io/core/veyron/profiles"
 )
@@ -15,8 +15,8 @@
 var gctx *context.T
 
 func main() {
-	var shutdown veyron2.Shutdown
-	gctx, shutdown = veyron2.Init()
+	var shutdown v23.Shutdown
+	gctx, shutdown = v23.Init()
 	substituteVarsInFlags()
 	exitCode := root().Main()
 	shutdown()
diff --git a/tools/debug/impl.go b/tools/debug/impl.go
index 6c5d215..7e2a328 100644
--- a/tools/debug/impl.go
+++ b/tools/debug/impl.go
@@ -13,20 +13,20 @@
 	"v.io/core/veyron/lib/glob"
 	"v.io/core/veyron/lib/signals"
 	"v.io/core/veyron/services/mgmt/pprof/client"
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/logreader"
-	logtypes "v.io/core/veyron2/services/mgmt/logreader/types"
-	"v.io/core/veyron2/services/mgmt/pprof"
-	"v.io/core/veyron2/services/mgmt/stats"
-	vtracesvc "v.io/core/veyron2/services/mgmt/vtrace"
-	"v.io/core/veyron2/services/watch"
-	watchtypes "v.io/core/veyron2/services/watch/types"
-	"v.io/core/veyron2/uniqueid"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/vtrace"
 	"v.io/lib/cmdline"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/logreader"
+	logtypes "v.io/v23/services/mgmt/logreader/types"
+	"v.io/v23/services/mgmt/pprof"
+	"v.io/v23/services/mgmt/stats"
+	vtracesvc "v.io/v23/services/mgmt/vtrace"
+	"v.io/v23/services/watch"
+	watchtypes "v.io/v23/services/watch/types"
+	"v.io/v23/uniqueid"
+	"v.io/v23/vdl"
+	"v.io/v23/vtrace"
 )
 
 var (
@@ -193,7 +193,7 @@
 	defer wg.Done()
 	ctx, cancel := context.WithTimeout(ctx, time.Minute)
 	defer cancel()
-	c, err := veyron2.GetNamespace(ctx).Glob(ctx, pattern)
+	c, err := v23.GetNamespace(ctx).Glob(ctx, pattern)
 	if err != nil {
 		errors <- fmt.Errorf("%s: %v", pattern, err)
 		return
diff --git a/tools/debug/main.go b/tools/debug/main.go
index 65f7187..bf0bf4a 100644
--- a/tools/debug/main.go
+++ b/tools/debug/main.go
@@ -6,8 +6,8 @@
 import (
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	_ "v.io/core/veyron/profiles"
 )
@@ -15,8 +15,8 @@
 var gctx *context.T
 
 func main() {
-	var shutdown veyron2.Shutdown
-	gctx, shutdown = veyron2.Init()
+	var shutdown v23.Shutdown
+	gctx, shutdown = v23.Init()
 	exitCode := root().Main()
 	shutdown()
 	os.Exit(exitCode)
diff --git a/tools/findunusedport/main.go b/tools/findunusedport/main.go
index 18bb32d..7fff2ed 100644
--- a/tools/findunusedport/main.go
+++ b/tools/findunusedport/main.go
@@ -6,7 +6,7 @@
 	"fmt"
 
 	"v.io/core/veyron/lib/testutil"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 )
 
 func main() {
diff --git a/tools/mgmt/device/impl/acl_fmt.go b/tools/mgmt/device/impl/acl_fmt.go
index 05a6b05..a0e3500 100644
--- a/tools/mgmt/device/impl/acl_fmt.go
+++ b/tools/mgmt/device/impl/acl_fmt.go
@@ -5,7 +5,7 @@
 	"sort"
 	"strings"
 
-	"v.io/core/veyron2/security"
+	"v.io/v23/security"
 )
 
 // aclEntries maps blessing patterns to the kind of access they should have.
diff --git a/tools/mgmt/device/impl/acl_impl.go b/tools/mgmt/device/impl/acl_impl.go
index 7182658..f836260 100644
--- a/tools/mgmt/device/impl/acl_impl.go
+++ b/tools/mgmt/device/impl/acl_impl.go
@@ -5,10 +5,10 @@
 import (
 	"fmt"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/device"
-	"v.io/core/veyron2/verror"
 	"v.io/lib/cmdline"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/verror"
 )
 
 var cmdGet = &cmdline.Command{
diff --git a/tools/mgmt/device/impl/acl_test.go b/tools/mgmt/device/impl/acl_test.go
index dc079e1..e8188b2 100644
--- a/tools/mgmt/device/impl/acl_test.go
+++ b/tools/mgmt/device/impl/acl_test.go
@@ -7,9 +7,9 @@
 	"strings"
 	"testing"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/security"
+	"v.io/v23/services/security/access"
+	"v.io/v23/verror"
 
 	"v.io/core/veyron/tools/mgmt/device/impl"
 )
diff --git a/tools/mgmt/device/impl/associate_impl.go b/tools/mgmt/device/impl/associate_impl.go
index 08d68f8..5630799 100644
--- a/tools/mgmt/device/impl/associate_impl.go
+++ b/tools/mgmt/device/impl/associate_impl.go
@@ -4,9 +4,9 @@
 	"fmt"
 	"time"
 
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/services/mgmt/device"
 	"v.io/lib/cmdline"
+	"v.io/v23/context"
+	"v.io/v23/services/mgmt/device"
 )
 
 var cmdList = &cmdline.Command{
diff --git a/tools/mgmt/device/impl/devicemanager_mock_test.go b/tools/mgmt/device/impl/devicemanager_mock_test.go
index baadc8c..f5dc17b 100644
--- a/tools/mgmt/device/impl/devicemanager_mock_test.go
+++ b/tools/mgmt/device/impl/devicemanager_mock_test.go
@@ -8,17 +8,17 @@
 	"path/filepath"
 	"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/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/binary"
-	"v.io/core/veyron2/services/mgmt/device"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/binary"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vlog"
 
 	binlib "v.io/core/veyron/services/mgmt/lib/binary"
 	pkglib "v.io/core/veyron/services/mgmt/lib/packages"
@@ -280,12 +280,12 @@
 
 func startServer(t *testing.T, ctx *context.T, tape *Tape) (ipc.Server, naming.Endpoint, error) {
 	dispatcher := NewDispatcher(t, tape)
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Errorf("NewServer failed: %v", err)
 		return nil, nil, err
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Errorf("Listen failed: %v", err)
 		stopServer(t, server)
diff --git a/tools/mgmt/device/impl/impl.go b/tools/mgmt/device/impl/impl.go
index 6fbd325..652bcd8 100644
--- a/tools/mgmt/device/impl/impl.go
+++ b/tools/mgmt/device/impl/impl.go
@@ -5,14 +5,14 @@
 	"encoding/json"
 	"fmt"
 
-	"v.io/core/veyron2"
-	"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/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/device"
 	"v.io/lib/cmdline"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/device"
 )
 
 type configFlag device.Config
@@ -134,7 +134,7 @@
 		return cmd.UsageErrorf("start: incorrect number of arguments, expected %d, got %d", expected, got)
 	}
 	appInstallation, grant := args[0], args[1]
-	principal := veyron2.GetPrincipal(gctx)
+	principal := v23.GetPrincipal(gctx)
 	appInstanceIDs, err := device.ApplicationClient(appInstallation).Start(gctx, &granter{p: principal, extension: grant})
 	if err != nil {
 		return fmt.Errorf("Start failed: %v", err)
@@ -187,7 +187,7 @@
 	}
 	// Skip server resolve authorization since an unclaimed device might have
 	// roots that will not be recognized by the claimer.
-	if err := device.ClaimableClient(deviceName).Claim(gctx, pairingToken, &granter{p: veyron2.GetPrincipal(gctx), extension: grant}, serverKeyOpts, options.SkipResolveAuthorization{}); err != nil {
+	if err := device.ClaimableClient(deviceName).Claim(gctx, pairingToken, &granter{p: v23.GetPrincipal(gctx), extension: grant}, serverKeyOpts, options.SkipResolveAuthorization{}); err != nil {
 		return err
 	}
 	fmt.Fprintln(cmd.Stdout(), "Successfully claimed.")
diff --git a/tools/mgmt/device/impl/impl_test.go b/tools/mgmt/device/impl/impl_test.go
index da1f540..081bcda 100644
--- a/tools/mgmt/device/impl/impl_test.go
+++ b/tools/mgmt/device/impl/impl_test.go
@@ -9,11 +9,11 @@
 	"strings"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/device"
-	"v.io/core/veyron2/verror"
+	"v.io/v23"
+	"v.io/v23/naming"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/verror"
 
 	"v.io/core/veyron/security"
 	"v.io/core/veyron/tools/mgmt/device/impl"
@@ -291,7 +291,7 @@
 	var stdout, stderr bytes.Buffer
 	cmd.Init(nil, &stdout, &stderr)
 	deviceName := naming.JoinAddressName(endpoint.String(), "")
-	deviceKey, err := veyron2.GetPrincipal(gctx).PublicKey().MarshalBinary()
+	deviceKey, err := v23.GetPrincipal(gctx).PublicKey().MarshalBinary()
 	if err != nil {
 		t.Fatalf("Failed to marshal principal public key: %v", err)
 	}
diff --git a/tools/mgmt/device/impl/instance_impl.go b/tools/mgmt/device/impl/instance_impl.go
index 3210ad4..4da5887 100644
--- a/tools/mgmt/device/impl/instance_impl.go
+++ b/tools/mgmt/device/impl/instance_impl.go
@@ -5,8 +5,8 @@
 import (
 	"fmt"
 
-	"v.io/core/veyron2/services/mgmt/device"
 	"v.io/lib/cmdline"
+	"v.io/v23/services/mgmt/device"
 )
 
 var cmdStop = &cmdline.Command{
diff --git a/tools/mgmt/device/impl/instance_impl_test.go b/tools/mgmt/device/impl/instance_impl_test.go
index 2123ff4..1a5e082 100644
--- a/tools/mgmt/device/impl/instance_impl_test.go
+++ b/tools/mgmt/device/impl/instance_impl_test.go
@@ -6,8 +6,8 @@
 	"strings"
 	"testing"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/verror"
+	"v.io/v23/naming"
+	"v.io/v23/verror"
 
 	"v.io/core/veyron/tools/mgmt/device/impl"
 )
diff --git a/tools/mgmt/device/impl/local_install.go b/tools/mgmt/device/impl/local_install.go
index 799ec92..d871492 100644
--- a/tools/mgmt/device/impl/local_install.go
+++ b/tools/mgmt/device/impl/local_install.go
@@ -10,18 +10,18 @@
 	"path/filepath"
 	"strings"
 
-	"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/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/binary"
-	"v.io/core/veyron2/services/mgmt/device"
-	"v.io/core/veyron2/services/mgmt/repository"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/uniqueid"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/binary"
+	"v.io/v23/services/mgmt/device"
+	"v.io/v23/services/mgmt/repository"
+	"v.io/v23/services/security/access"
+	"v.io/v23/uniqueid"
+	"v.io/v23/vlog"
 
 	pkglib "v.io/core/veyron/services/mgmt/lib/packages"
 	"v.io/lib/cmdline"
@@ -77,11 +77,11 @@
 }
 
 func createServer(ctx *context.T, stderr io.Writer) (*mapServer, func(), error) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		return nil, nil, err
 	}
-	spec := veyron2.GetListenSpec(ctx)
+	spec := v23.GetListenSpec(ctx)
 	endpoints, err := server.Listen(spec)
 	if err != nil {
 		return nil, nil, err
@@ -111,7 +111,7 @@
 		//
 		// TODO(caprita): Avoid relying on a mounttable altogether, and
 		// instead pull out the proxied address and just send that.
-		nsRoots := veyron2.GetNamespace(ctx).Roots()
+		nsRoots := v23.GetNamespace(ctx).Roots()
 		if len(nsRoots) > 0 {
 			name = naming.Join(nsRoots[0], name)
 		}
diff --git a/tools/mgmt/device/impl/local_install_test.go b/tools/mgmt/device/impl/local_install_test.go
index f9b81d5..e713fae 100644
--- a/tools/mgmt/device/impl/local_install_test.go
+++ b/tools/mgmt/device/impl/local_install_test.go
@@ -11,10 +11,10 @@
 	"strings"
 	"testing"
 
-	"v.io/core/veyron2/naming"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/services/mgmt/application"
-	"v.io/core/veyron2/services/mgmt/device"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/application"
+	"v.io/v23/services/mgmt/device"
 
 	"v.io/core/veyron/tools/mgmt/device/impl"
 )
diff --git a/tools/mgmt/device/impl/root.go b/tools/mgmt/device/impl/root.go
index 6082e6c..556a2b9 100644
--- a/tools/mgmt/device/impl/root.go
+++ b/tools/mgmt/device/impl/root.go
@@ -1,7 +1,7 @@
 package impl
 
 import (
-	"v.io/core/veyron2/context"
+	"v.io/v23/context"
 
 	"v.io/lib/cmdline"
 )
diff --git a/tools/mgmt/device/impl/util_test.go b/tools/mgmt/device/impl/util_test.go
index a369b94..04b952a 100644
--- a/tools/mgmt/device/impl/util_test.go
+++ b/tools/mgmt/device/impl/util_test.go
@@ -1,8 +1,8 @@
 package impl_test
 
 import (
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -11,8 +11,8 @@
 
 var gctx *context.T
 
-func initTest() veyron2.Shutdown {
-	var shutdown veyron2.Shutdown
+func initTest() v23.Shutdown {
+	var shutdown v23.Shutdown
 	gctx, shutdown = testutil.InitForTest()
 	impl.SetGlobalContext(gctx)
 	return func() {
diff --git a/tools/mgmt/device/main.go b/tools/mgmt/device/main.go
index 7d77330..a6107d8 100644
--- a/tools/mgmt/device/main.go
+++ b/tools/mgmt/device/main.go
@@ -6,14 +6,14 @@
 import (
 	"os"
 
-	"v.io/core/veyron2"
+	"v.io/v23"
 
 	_ "v.io/core/veyron/profiles/static"
 	"v.io/core/veyron/tools/mgmt/device/impl"
 )
 
 func main() {
-	gctx, shutdown := veyron2.Init()
+	gctx, shutdown := v23.Init()
 	impl.SetGlobalContext(gctx)
 	exitCode := impl.Root().Main()
 	shutdown()
diff --git a/tools/mgmt/mgmt_v23_test.go b/tools/mgmt/mgmt_v23_test.go
index e9411dc..041b560 100644
--- a/tools/mgmt/mgmt_v23_test.go
+++ b/tools/mgmt/mgmt_v23_test.go
@@ -35,7 +35,7 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil/v23tests"
 	_ "v.io/core/veyron/profiles"
diff --git a/tools/mounttable/impl.go b/tools/mounttable/impl.go
index 52ec3ea..ecf2ea4 100644
--- a/tools/mounttable/impl.go
+++ b/tools/mounttable/impl.go
@@ -5,14 +5,14 @@
 	"fmt"
 	"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/vlog"
 	"v.io/lib/cmdline"
+	"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"
 )
 
 var cmdGlob = &cmdline.Command{
@@ -33,7 +33,7 @@
 	defer cancel()
 
 	if len(args) == 1 {
-		roots := veyron2.GetNamespace(ctx).Roots()
+		roots := v23.GetNamespace(ctx).Roots()
 		if len(roots) == 0 {
 			return errors.New("no namespace root")
 		}
@@ -44,7 +44,7 @@
 	}
 
 	name, pattern := args[0], args[1]
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, name, ipc.GlobMethod, []interface{}{pattern}, options.NoResolve{})
 	if err != nil {
 		return err
@@ -133,7 +133,7 @@
 	}
 	ctx, cancel := context.WithTimeout(gctx, time.Minute)
 	defer cancel()
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 
 	patterns := flagMountBlessingPatterns.list
 	if len(patterns) == 0 {
@@ -172,7 +172,7 @@
 	}
 	ctx, cancel := context.WithTimeout(gctx, time.Minute)
 	defer cancel()
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, args[0], "Unmount", []interface{}{args[1]}, options.NoResolve{})
 	if err != nil {
 		return err
@@ -201,7 +201,7 @@
 	}
 	ctx, cancel := context.WithTimeout(gctx, time.Minute)
 	defer cancel()
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, args[0], "ResolveStep", []interface{}{}, options.NoResolve{})
 	if err != nil {
 		return err
@@ -230,7 +230,7 @@
 	vlog.Infof("Contacting %q to determine the blessings presented by it", server)
 	ctx, cancel := context.WithTimeout(ctx, time.Minute)
 	defer cancel()
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, server, ipc.ReservedSignature, nil)
+	call, err := v23.GetClient(ctx).StartCall(ctx, server, ipc.ReservedSignature, nil)
 	if err != nil {
 		return nil, fmt.Errorf("Unable to extract blessings presented by %q: %v", server, err)
 	}
diff --git a/tools/mounttable/impl_test.go b/tools/mounttable/impl_test.go
index 9976a36..fa200e5 100644
--- a/tools/mounttable/impl_test.go
+++ b/tools/mounttable/impl_test.go
@@ -5,14 +5,14 @@
 	"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/services/mounttable"
-	"v.io/core/veyron2/services/security/access"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mounttable"
+	"v.io/v23/services/security/access"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -83,12 +83,12 @@
 
 func startServer(t *testing.T, ctx *context.T) (ipc.Server, naming.Endpoint, error) {
 	dispatcher := new(dispatcher)
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Errorf("NewServer failed: %v", err)
 		return nil, nil, err
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Errorf("Listen failed: %v", err)
 		return nil, nil, err
@@ -107,7 +107,7 @@
 }
 
 func TestMountTableClient(t *testing.T) {
-	var shutdown veyron2.Shutdown
+	var shutdown v23.Shutdown
 	gctx, shutdown = testutil.InitForTest()
 	defer shutdown()
 
diff --git a/tools/mounttable/main.go b/tools/mounttable/main.go
index 65f7187..bf0bf4a 100644
--- a/tools/mounttable/main.go
+++ b/tools/mounttable/main.go
@@ -6,8 +6,8 @@
 import (
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	_ "v.io/core/veyron/profiles"
 )
@@ -15,8 +15,8 @@
 var gctx *context.T
 
 func main() {
-	var shutdown veyron2.Shutdown
-	gctx, shutdown = veyron2.Init()
+	var shutdown v23.Shutdown
+	gctx, shutdown = v23.Init()
 	exitCode := root().Main()
 	shutdown()
 	os.Exit(exitCode)
diff --git a/tools/namespace/impl.go b/tools/namespace/impl.go
index 630ab18..928075a 100644
--- a/tools/namespace/impl.go
+++ b/tools/namespace/impl.go
@@ -4,13 +4,13 @@
 	"fmt"
 	"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/vlog"
 	"v.io/lib/cmdline"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/options"
+	"v.io/v23/vlog"
 )
 
 var (
@@ -40,7 +40,7 @@
 	ctx, cancel := context.WithTimeout(gctx, time.Minute)
 	defer cancel()
 
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 
 	c, err := ns.Glob(ctx, pattern)
 	if err != nil {
@@ -101,7 +101,7 @@
 		}
 		vlog.Infof("Server at %q has blessings %v", server, blessings)
 	}
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 	if err = ns.Mount(ctx, name, server, ttl, naming.MountedServerBlessingsOpt(blessings)); err != nil {
 		vlog.Infof("ns.Mount(%q, %q, %s, %v) failed: %v", name, server, ttl, blessings, err)
 		return err
@@ -132,7 +132,7 @@
 	ctx, cancel := context.WithTimeout(gctx, time.Minute)
 	defer cancel()
 
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 
 	if err := ns.Unmount(ctx, name, server); err != nil {
 		vlog.Infof("ns.Unmount(%q, %q) failed: %v", name, server, err)
@@ -160,7 +160,7 @@
 	ctx, cancel := context.WithTimeout(gctx, time.Minute)
 	defer cancel()
 
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 
 	var opts []naming.ResolveOpt
 	if flagInsecureResolve {
@@ -195,7 +195,7 @@
 	ctx, cancel := context.WithTimeout(gctx, time.Minute)
 	defer cancel()
 
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 	var opts []naming.ResolveOpt
 	if flagInsecureResolveToMT {
 		opts = append(opts, options.SkipResolveAuthorization{})
@@ -245,7 +245,7 @@
 	vlog.Infof("Contacting %q to determine the blessings presented by it", server)
 	ctx, cancel := context.WithTimeout(ctx, time.Minute)
 	defer cancel()
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, server, ipc.ReservedSignature, nil)
+	call, err := v23.GetClient(ctx).StartCall(ctx, server, ipc.ReservedSignature, nil)
 	if err != nil {
 		return nil, fmt.Errorf("Unable to extract blessings presented by %q: %v", server, err)
 	}
diff --git a/tools/namespace/main.go b/tools/namespace/main.go
index 65f7187..bf0bf4a 100644
--- a/tools/namespace/main.go
+++ b/tools/namespace/main.go
@@ -6,8 +6,8 @@
 import (
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	_ "v.io/core/veyron/profiles"
 )
@@ -15,8 +15,8 @@
 var gctx *context.T
 
 func main() {
-	var shutdown veyron2.Shutdown
-	gctx, shutdown = veyron2.Init()
+	var shutdown v23.Shutdown
+	gctx, shutdown = v23.Init()
 	exitCode := root().Main()
 	shutdown()
 	os.Exit(exitCode)
diff --git a/tools/naming/simulator/driver.go b/tools/naming/simulator/driver.go
index 2762f64..df99e22 100644
--- a/tools/naming/simulator/driver.go
+++ b/tools/naming/simulator/driver.go
@@ -16,8 +16,8 @@
 	"time"
 	"unicode"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/modules"
@@ -100,8 +100,8 @@
 var ctx *context.T
 
 func main() {
-	var shutdown veyron2.Shutdown
-	ctx, shutdown = veyron2.Init()
+	var shutdown v23.Shutdown
+	ctx, shutdown = v23.Init()
 
 	input := os.Stdin
 	if len(filename) > 0 {
diff --git a/tools/naming/simulator/shell_functions.go b/tools/naming/simulator/shell_functions.go
index ecbe56d..4d002e1 100644
--- a/tools/naming/simulator/shell_functions.go
+++ b/tools/naming/simulator/shell_functions.go
@@ -5,9 +5,9 @@
 	"io"
 	"time"
 
-	"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/modules"
 )
@@ -62,7 +62,7 @@
 	if err != nil {
 		return fmt.Errorf("failed to parse time from %q", ttlstr)
 	}
-	ns := veyron2.GetNamespace(ctx)
+	ns := v23.GetNamespace(ctx)
 	if err := ns.Mount(ctx, mp, server, ttl, opts...); err != nil {
 		return err
 	}
@@ -83,7 +83,7 @@
 	default:
 		return fmt.Errorf("arg must be 'on' or 'off'")
 	}
-	veyron2.GetNamespace(ctx).CacheCtl(naming.DisableCache(disable))
+	v23.GetNamespace(ctx).CacheCtl(naming.DisableCache(disable))
 	return nil
 }
 
@@ -108,13 +108,13 @@
 }
 
 func resolveObject(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	return resolve(veyron2.GetNamespace(ctx).Resolve, stdin, stdout, stderr, env, args...)
+	return resolve(v23.GetNamespace(ctx).Resolve, stdin, stdout, stderr, env, args...)
 }
 
 func resolveMT(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	return resolve(veyron2.GetNamespace(ctx).ResolveToMountTable, stdin, stdout, stderr, env, args...)
+	return resolve(v23.GetNamespace(ctx).ResolveToMountTable, stdin, stdout, stderr, env, args...)
 }
 
 func setNamespaceRoots(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	return veyron2.GetNamespace(ctx).SetRoots(args...)
+	return v23.GetNamespace(ctx).SetRoots(args...)
 }
diff --git a/tools/principal/bless.go b/tools/principal/bless.go
index 33378fb..7831729 100644
--- a/tools/principal/bless.go
+++ b/tools/principal/bless.go
@@ -15,10 +15,10 @@
 
 	"v.io/core/veyron/services/identity"
 	"v.io/core/veyron/services/identity/oauth"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23/context"
+	"v.io/v23/options"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 )
 
 func exchangeMacaroonForBlessing(ctx *context.T, macaroonChan <-chan string) (security.Blessings, error) {
diff --git a/tools/principal/caveat.go b/tools/principal/caveat.go
index e100172..960466e 100644
--- a/tools/principal/caveat.go
+++ b/tools/principal/caveat.go
@@ -5,10 +5,10 @@
 	"regexp"
 	"strings"
 
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/vdl/build"
-	"v.io/core/veyron2/vdl/compile"
+	"v.io/v23/security"
+	"v.io/v23/vdl"
+	"v.io/v23/vdl/build"
+	"v.io/v23/vdl/compile"
 )
 
 // caveatsFlag defines a flag.Value for receiving multiple caveat definitions.
diff --git a/tools/principal/main.go b/tools/principal/main.go
index fd871c7..83d7c77 100644
--- a/tools/principal/main.go
+++ b/tools/principal/main.go
@@ -17,12 +17,12 @@
 
 	_ "v.io/core/veyron/profiles/static"
 	vsecurity "v.io/core/veyron/security"
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vom"
 	"v.io/lib/cmdline"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/security"
+	"v.io/v23/vom"
 )
 
 var (
@@ -67,10 +67,10 @@
 that this tool is running in.
 `,
 		Run: func(cmd *cmdline.Command, args []string) error {
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
 
-			p := veyron2.GetPrincipal(ctx)
+			p := v23.GetPrincipal(ctx)
 			fmt.Printf("Public key : %v\n", p.PublicKey())
 			fmt.Println("---------------- BlessingStore ----------------")
 			fmt.Printf("%v", p.BlessingStore().DebugString())
@@ -154,9 +154,9 @@
 			if err != nil {
 				return err
 			}
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
-			principal := veyron2.GetPrincipal(ctx)
+			principal := v23.GetPrincipal(ctx)
 			blessing, err := principal.BlessSelf(name, caveats...)
 			if err != nil {
 				return fmt.Errorf("failed to create self-signed blessing for name %q: %v", name, err)
@@ -208,10 +208,10 @@
 				return fmt.Errorf("require exactly two arguments, provided %d", len(args))
 			}
 
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
 
-			p := veyron2.GetPrincipal(ctx)
+			p := v23.GetPrincipal(ctx)
 
 			var (
 				err  error
@@ -283,9 +283,9 @@
 blessings set on the store with the "..." pattern).
 `,
 		Run: func(cmd *cmdline.Command, args []string) error {
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
-			principal := veyron2.GetPrincipal(ctx)
+			principal := v23.GetPrincipal(ctx)
 			return dumpBlessings(principal.BlessingStore().ForPeer(args...))
 		},
 	}
@@ -298,9 +298,9 @@
 the environment that this tool is running in.
 `,
 		Run: func(cmd *cmdline.Command, args []string) error {
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
-			principal := veyron2.GetPrincipal(ctx)
+			principal := v23.GetPrincipal(ctx)
 			return dumpBlessings(principal.BlessingStore().Default())
 		},
 	}
@@ -340,10 +340,10 @@
 			}
 			pattern := security.BlessingPattern(args[1])
 
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
 
-			p := veyron2.GetPrincipal(ctx)
+			p := v23.GetPrincipal(ctx)
 			if _, err := p.BlessingStore().Set(blessings, pattern); err != nil {
 				return fmt.Errorf("failed to set blessings %v for peers %v: %v", blessings, pattern, err)
 			}
@@ -385,10 +385,10 @@
 				return fmt.Errorf("failed to decode provided blessings: %v", err)
 			}
 
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
 
-			p := veyron2.GetPrincipal(ctx)
+			p := v23.GetPrincipal(ctx)
 			if err := p.AddToRoots(blessings); err != nil {
 				return fmt.Errorf("AddToRoots failed: %v", err)
 			}
@@ -420,10 +420,10 @@
 				return fmt.Errorf("failed to decode provided blessings: %v", err)
 			}
 
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
 
-			p := veyron2.GetPrincipal(ctx)
+			p := v23.GetPrincipal(ctx)
 			if err := p.BlessingStore().SetDefault(blessings); err != nil {
 				return fmt.Errorf("failed to set blessings %v as default: %v", blessings, err)
 			}
@@ -505,7 +505,7 @@
 			}
 			dir, extension := args[0], args[1]
 
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
 
 			caveats, err := caveatsFromFlags(flagForkFor, &flagForkCaveats)
@@ -524,7 +524,7 @@
 					return fmt.Errorf("failed to read blessings from --with=%q: %v", flagForkWith, err)
 				}
 			} else {
-				with = veyron2.GetPrincipal(ctx).BlessingStore().Default()
+				with = v23.GetPrincipal(ctx).BlessingStore().Default()
 			}
 
 			if flagCreateOverwrite {
@@ -538,7 +538,7 @@
 			}
 
 			key := p.PublicKey()
-			rp := veyron2.GetPrincipal(ctx)
+			rp := v23.GetPrincipal(ctx)
 			blessings, err := rp.Bless(key, with, extension, caveats[0], caveats[1:]...)
 			if err != nil {
 				return fmt.Errorf("Bless(%v, %v, %q, ...) failed: %v", key, with, extension, err)
@@ -568,7 +568,7 @@
 		Run: func(cmd *cmdline.Command, args []string) error {
 			// Initialize the runtime first so that any local errors are reported
 			// before the HTTP roundtrips for obtaining the macaroon begin.
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
 
 			blessedChan := make(chan string)
@@ -586,7 +586,7 @@
 			// Wait for getTokenForBlessRPC to clean up:
 			<-macaroonChan
 
-			p := veyron2.GetPrincipal(ctx)
+			p := v23.GetPrincipal(ctx)
 
 			if flagSeekBlessingsSetDefault {
 				if err := p.BlessingStore().SetDefault(blessings); err != nil {
@@ -647,15 +647,15 @@
 				return fmt.Errorf("command accepts no arguments")
 			}
 
-			ctx, shutdown := veyron2.Init()
+			ctx, shutdown := v23.Init()
 			defer shutdown()
 
-			server, err := veyron2.NewServer(ctx)
+			server, err := v23.NewServer(ctx)
 			if err != nil {
 				return fmt.Errorf("failed to create server to listen for blessings: %v", err)
 			}
 			defer server.Stop()
-			eps, err := server.Listen(veyron2.GetListenSpec(ctx))
+			eps, err := server.Listen(v23.GetListenSpec(ctx))
 			if err != nil {
 				return fmt.Errorf("failed to setup listening: %v", err)
 			}
@@ -664,7 +664,7 @@
 				return fmt.Errorf("unable to generate token: %v", err)
 			}
 
-			p := veyron2.GetPrincipal(ctx)
+			p := v23.GetPrincipal(ctx)
 			service := &recvBlessingsService{
 				principal: p,
 				token:     base64.URLEncoding.EncodeToString(token[:]),
@@ -913,7 +913,7 @@
 func (*granter) IPCCallOpt() {}
 
 func sendBlessings(ctx *context.T, object string, granter *granter, remoteToken string) error {
-	client := veyron2.GetClient(ctx)
+	client := v23.GetClient(ctx)
 	call, err := client.StartCall(ctx, object, "Grant", []interface{}{remoteToken}, granter)
 	if err != nil {
 		return fmt.Errorf("failed to start RPC to %q: %v", object, err)
diff --git a/tools/principal/principal_v23_test.go b/tools/principal/principal_v23_test.go
index 64cc513..e4528e9 100644
--- a/tools/principal/principal_v23_test.go
+++ b/tools/principal/principal_v23_test.go
@@ -352,7 +352,7 @@
 	bin = bin.WithEnv("VEYRON_CREDENTIALS=" + aliceDir)
 	args := []string{
 		"blessself",
-		"--caveat=\"v.io/core/veyron2/security\".MethodCaveatX={\"method\"}",
+		"--caveat=\"v.io/v23/security\".MethodCaveatX={\"method\"}",
 		"--caveat={{0x54,0xa6,0x76,0x39,0x81,0x37,0x18,0x7e,0xcd,0xb2,0x6d,0x2d,0x69,0xba,0x0,0x3},typeobject([]string)}={\"method\"}",
 		"alicereborn",
 	}
diff --git a/tools/profile/impl.go b/tools/profile/impl.go
index 029d8ff..d1d29cc 100644
--- a/tools/profile/impl.go
+++ b/tools/profile/impl.go
@@ -6,9 +6,9 @@
 
 	"v.io/core/veyron/services/mgmt/profile"
 	"v.io/core/veyron/services/mgmt/repository"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/services/mgmt/build"
 	"v.io/lib/cmdline"
+	"v.io/v23/context"
+	"v.io/v23/services/mgmt/build"
 )
 
 var cmdLabel = &cmdline.Command{
diff --git a/tools/profile/impl_test.go b/tools/profile/impl_test.go
index 8ae4621..12fc036 100644
--- a/tools/profile/impl_test.go
+++ b/tools/profile/impl_test.go
@@ -6,13 +6,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/services/mgmt/build"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc"
+	"v.io/v23/naming"
+	"v.io/v23/security"
+	"v.io/v23/services/mgmt/build"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -85,12 +85,12 @@
 }
 
 func startServer(t *testing.T, ctx *context.T) (ipc.Server, naming.Endpoint, error) {
-	server, err := veyron2.NewServer(ctx)
+	server, err := v23.NewServer(ctx)
 	if err != nil {
 		t.Errorf("NewServer failed: %v", err)
 		return nil, nil, err
 	}
-	endpoints, err := server.Listen(veyron2.GetListenSpec(ctx))
+	endpoints, err := server.Listen(v23.GetListenSpec(ctx))
 	if err != nil {
 		t.Errorf("Listen failed: %v", err)
 		return nil, nil, err
@@ -109,7 +109,7 @@
 }
 
 func TestProfileClient(t *testing.T) {
-	var shutdown veyron2.Shutdown
+	var shutdown v23.Shutdown
 	gctx, shutdown = testutil.InitForTest()
 	defer shutdown()
 
diff --git a/tools/profile/main.go b/tools/profile/main.go
index 65f7187..bf0bf4a 100644
--- a/tools/profile/main.go
+++ b/tools/profile/main.go
@@ -6,8 +6,8 @@
 import (
 	"os"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
+	"v.io/v23"
+	"v.io/v23/context"
 
 	_ "v.io/core/veyron/profiles"
 )
@@ -15,8 +15,8 @@
 var gctx *context.T
 
 func main() {
-	var shutdown veyron2.Shutdown
-	gctx, shutdown = veyron2.Init()
+	var shutdown v23.Shutdown
+	gctx, shutdown = v23.Init()
 	exitCode := root().Main()
 	shutdown()
 	os.Exit(exitCode)
diff --git a/tools/servicerunner/main.go b/tools/servicerunner/main.go
index 0631399..b48a0ab 100644
--- a/tools/servicerunner/main.go
+++ b/tools/servicerunner/main.go
@@ -9,7 +9,7 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2"
+	"v.io/v23"
 
 	"v.io/core/veyron/lib/expect"
 	"v.io/core/veyron/lib/flags/consts"
@@ -60,7 +60,7 @@
 		return
 	}
 
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	vars := map[string]string{}
diff --git a/tools/uniqueid/main.go b/tools/uniqueid/main.go
index f406e05..fe1c3da 100644
--- a/tools/uniqueid/main.go
+++ b/tools/uniqueid/main.go
@@ -10,8 +10,8 @@
 	"os"
 	"regexp"
 
-	"v.io/core/veyron2/uniqueid"
 	"v.io/lib/cmdline"
+	"v.io/v23/uniqueid"
 )
 
 func main() {
diff --git a/tools/vrpc/test_base/test_base.vdl.go b/tools/vrpc/test_base/test_base.vdl.go
index 0806dac..3db3c6d 100644
--- a/tools/vrpc/test_base/test_base.vdl.go
+++ b/tools/vrpc/test_base/test_base.vdl.go
@@ -6,10 +6,10 @@
 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"
 )
 
 type Struct struct {
@@ -89,7 +89,7 @@
 	if c.client != nil {
 		return c.client
 	}
-	return veyron2.GetClient(ctx)
+	return v23.GetClient(ctx)
 }
 
 func (c implTypeTesterClientStub) EchoBool(ctx *context.T, i0 bool, opts ...ipc.CallOpt) (o0 bool, err error) {
diff --git a/tools/vrpc/vrpc.go b/tools/vrpc/vrpc.go
index 28fe6f5..222a6de 100644
--- a/tools/vrpc/vrpc.go
+++ b/tools/vrpc/vrpc.go
@@ -10,16 +10,16 @@
 	"strings"
 	"time"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/ipc/reserved"
-	"v.io/core/veyron2/options"
-	"v.io/core/veyron2/vdl"
-	"v.io/core/veyron2/vdl/build"
-	"v.io/core/veyron2/vdl/codegen/vdlgen"
-	"v.io/core/veyron2/vdl/compile"
-	"v.io/core/veyron2/vdl/vdlroot/src/signature"
 	"v.io/lib/cmdline"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/ipc/reserved"
+	"v.io/v23/options"
+	"v.io/v23/vdl"
+	"v.io/v23/vdl/build"
+	"v.io/v23/vdl/codegen/vdlgen"
+	"v.io/v23/vdl/compile"
+	"v.io/v23/vdl/vdlroot/src/signature"
 
 	_ "v.io/core/veyron/profiles"
 )
@@ -27,8 +27,8 @@
 var gctx *context.T
 
 func main() {
-	var shutdown veyron2.Shutdown
-	gctx, shutdown = veyron2.Init()
+	var shutdown v23.Shutdown
+	gctx, shutdown = v23.Init()
 	exitCode := cmdVRPC.Main()
 	shutdown()
 	os.Exit(exitCode)
@@ -185,7 +185,7 @@
 		return err
 	}
 	// Start the method call.
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, server, method, inargs)
+	call, err := v23.GetClient(ctx).StartCall(ctx, server, method, inargs)
 	if err != nil {
 		return fmt.Errorf("StartCall failed: %v", err)
 	}
@@ -255,7 +255,7 @@
 	defer cancel()
 	// The method name does not matter - only interested in authentication,
 	// not in actually making an RPC.
-	call, err := veyron2.GetClient(ctx).StartCall(ctx, server, "", nil)
+	call, err := v23.GetClient(ctx).StartCall(ctx, server, "", nil)
 	if err != nil {
 		return fmt.Errorf(`client.StartCall(%q, "", nil) failed with %v`, server, err)
 	}
diff --git a/tools/vrpc/vrpc_test.go b/tools/vrpc/vrpc_test.go
index 05906ff..b8f5352 100644
--- a/tools/vrpc/vrpc_test.go
+++ b/tools/vrpc/vrpc_test.go
@@ -5,9 +5,9 @@
 	"strings"
 	"testing"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/ipc"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/ipc"
+	"v.io/v23/vlog"
 
 	"v.io/core/veyron/lib/testutil"
 	_ "v.io/core/veyron/profiles"
@@ -107,16 +107,16 @@
 	return nil
 }
 
-func initTest(t *testing.T) (name string, shutdown veyron2.Shutdown) {
+func initTest(t *testing.T) (name string, shutdown v23.Shutdown) {
 	// The gctx initialized here is the global context defined in vrpc.go.
 	gctx, shutdown = testutil.InitForTest()
 
-	ipcServer, err := veyron2.NewServer(gctx)
+	ipcServer, err := v23.NewServer(gctx)
 	if err != nil {
 		t.Fatalf("NewServer failed: %v", err)
 		return
 	}
-	endpoints, err := ipcServer.Listen(veyron2.GetListenSpec(gctx))
+	endpoints, err := ipcServer.Listen(v23.GetListenSpec(gctx))
 	if err != nil {
 		t.Fatalf("Listen failed: %v", err)
 		return
diff --git a/tools/vrun/vrun.go b/tools/vrun/vrun.go
index fb3bec2..88865fe 100644
--- a/tools/vrun/vrun.go
+++ b/tools/vrun/vrun.go
@@ -12,10 +12,10 @@
 	"v.io/core/veyron/security/agent/keymgr"
 	"v.io/lib/cmdline"
 
-	"v.io/core/veyron2"
-	"v.io/core/veyron2/context"
-	"v.io/core/veyron2/security"
-	"v.io/core/veyron2/vlog"
+	"v.io/v23"
+	"v.io/v23/context"
+	"v.io/v23/security"
+	"v.io/v23/vlog"
 
 	_ "v.io/core/veyron/profiles"
 )
@@ -44,7 +44,7 @@
 }
 
 func vrun(cmd *cmdline.Command, args []string) error {
-	ctx, shutdown := veyron2.Init()
+	ctx, shutdown := v23.Init()
 	defer shutdown()
 
 	if len(args) == 0 {
@@ -71,7 +71,7 @@
 		name = nameOverride
 	}
 
-	rp := veyron2.GetPrincipal(ctx)
+	rp := v23.GetPrincipal(ctx)
 	blessing, err := rp.Bless(p.PublicKey(), rp.BlessingStore().Default(), name, caveat)
 	if err != nil {
 		vlog.Errorf("Couldn't bless")
@@ -128,7 +128,7 @@
 		return nil, nil, err
 	}
 	syscall.CloseOnExec(fd)
-	principal, err := agent.NewAgentPrincipal(ctx, fd, veyron2.GetClient(ctx))
+	principal, err := agent.NewAgentPrincipal(ctx, fd, v23.GetClient(ctx))
 	if err != nil {
 		vlog.Errorf("Couldn't connect to principal")
 		return nil, nil, err
