diff --git a/profiles/commandline/driver.go b/profiles/commandline/driver.go
index 9277eb0..2e3679c 100644
--- a/profiles/commandline/driver.go
+++ b/profiles/commandline/driver.go
@@ -195,7 +195,7 @@
 
 func runList(jirix *jiri.X, args []string) error {
 	if showManifestFlag {
-		data, err := jirix.Run().ReadFile(manifestFlag)
+		data, err := jirix.NewSeq().ReadFile(manifestFlag)
 		if err != nil {
 			return err
 		}
diff --git a/profiles/env.go b/profiles/env.go
index a5788ea..7d5325b 100644
--- a/profiles/env.go
+++ b/profiles/env.go
@@ -243,7 +243,7 @@
 			// account for Go workspaces that span multiple jiri projects,
 			// such as: $JIRI_ROOT/release/go.
 			if strings.HasPrefix(absWorkspace, project.Path) || strings.HasPrefix(project.Path, absWorkspace) {
-				if _, err := jirix.Run().Stat(filepath.Join(absWorkspace)); err == nil {
+				if _, err := jirix.NewSeq().Stat(filepath.Join(absWorkspace)); err == nil {
 					path = append(path, absWorkspace)
 					break
 				}
diff --git a/profiles/env_test.go b/profiles/env_test.go
index 1280186..501368f 100644
--- a/profiles/env_test.go
+++ b/profiles/env_test.go
@@ -181,7 +181,7 @@
 	case "VDLPATH":
 		// Make a fake src directory.
 		want = filepath.Join(fake.X.Root, "test", "src")
-		if err := fake.X.Run().MkdirAll(want, 0755); err != nil {
+		if err := fake.X.NewSeq().MkdirAll(want, 0755).Done(); err != nil {
 			t.Fatalf("%v", err)
 		}
 		want = "VDLPATH=" + want
diff --git a/profiles/manifest.go b/profiles/manifest.go
index 0bad100..8528d34 100644
--- a/profiles/manifest.go
+++ b/profiles/manifest.go
@@ -13,6 +13,7 @@
 	"time"
 
 	"v.io/jiri/jiri"
+	"v.io/jiri/runutil"
 )
 
 const (
@@ -242,9 +243,9 @@
 	defer pdb.Unlock()
 	pdb.db = make(map[string]*Profile)
 
-	data, err := jirix.Run().ReadFile(filename)
+	data, err := jirix.NewSeq().ReadFile(filename)
 	if err != nil {
-		if os.IsNotExist(err) {
+		if runutil.IsNotExist(err) {
 			return nil
 		}
 		return err
@@ -317,17 +318,18 @@
 	oldName := filename + ".prev"
 	newName := filename + fmt.Sprintf(".%d", time.Now().UnixNano())
 
-	if err := jirix.Run().WriteFile(newName, data, defaultFileMode); err != nil {
+	s := jirix.NewSeq()
+	if err := s.WriteFile(newName, data, defaultFileMode).Done(); err != nil {
 		return err
 	}
 
-	if jirix.Run().FileExists(filename) {
-		if err := jirix.Run().Rename(filename, oldName); err != nil {
+	if exists, _ := s.FileExists(filename); exists {
+		if err := s.Rename(filename, oldName).Done(); err != nil {
 			return err
 		}
 	}
 
-	if err := jirix.Run().Rename(newName, filename); err != nil {
+	if err := s.Rename(newName, filename).Done(); err != nil {
 		return err
 	}
 
