diff --git a/lib/modules/core/mounttable.go b/lib/modules/core/mounttable.go
index 51373a6..b314fed 100644
--- a/lib/modules/core/mounttable.go
+++ b/lib/modules/core/mounttable.go
@@ -148,9 +148,5 @@
 }
 
 func setNamespaceRoots(stdin io.Reader, stdout, stderr io.Writer, env map[string]string, args ...string) error {
-	ns := rt.R().Namespace()
-	if err := checkArgs(args, -1, "<name>..."); err != nil {
-		return err
-	}
-	return ns.SetRoots(args[1:]...)
+	return rt.R().Namespace().SetRoots(args[1:]...)
 }
diff --git a/services/mgmt/node/impl/util_test.go b/services/mgmt/node/impl/util_test.go
index 0db0633..74f8871 100644
--- a/services/mgmt/node/impl/util_test.go
+++ b/services/mgmt/node/impl/util_test.go
@@ -59,6 +59,18 @@
 	return creds, []string{consts.VeyronCredentials + "=" + creds}
 }
 
+// setNSRoots sets the roots for the local runtime's namespace using the modules
+// function SetNamesaceRootCommand.
+func setNSRoots(t *testing.T, sh *modules.Shell, roots ...string) {
+	setRootsHandle, err := sh.Start(core.SetNamespaceRootsCommand, nil, roots...)
+	if err != nil {
+		t.Fatalf("%s: unexpected error: %s", loc(2), err)
+	}
+	if err := setRootsHandle.Shutdown(nil, os.Stderr); err != nil {
+		t.Fatalf("%s: SetNamespaceRootsCommand failed with %v", loc(2), err)
+	}
+}
+
 func createShellAndMountTable(t *testing.T) (*modules.Shell, func()) {
 	sh := modules.NewShell()
 	// The shell, will, by default share credentials with its children.
@@ -70,17 +82,18 @@
 	// their shutdown process
 	sh.Forget(mtHandle)
 
+	// TODO(caprita): Define a GetNamespaceRootsCommand in modules/core and
+	// use that?
+	oldNamespaceRoots := rt.R().Namespace().Roots()
 	fn := func() {
 		vlog.VI(1).Info("------------ CLEANUP ------------")
 		vlog.VI(1).Info("---------------------------------")
 		sh.Cleanup(nil, os.Stderr)
 		mtHandle.Shutdown(nil, os.Stderr)
-		sh.Start(core.SetNamespaceRootsCommand, nil, "")
+		setNSRoots(t, sh, oldNamespaceRoots...)
 	}
 
-	if _, err := sh.Start(core.SetNamespaceRootsCommand, nil, mtName); err != nil {
-		t.Fatalf("%s: unexpected error: %s", loc(1), err)
-	}
+	setNSRoots(t, sh, mtName)
 	sh.SetVar(consts.NamespaceRootPrefix, mtName)
 	return sh, fn
 }
