diff --git a/services/device/internal/impl/app_service.go b/services/device/internal/impl/app_service.go
index dd5c50e..a393bb0 100644
--- a/services/device/internal/impl/app_service.go
+++ b/services/device/internal/impl/app_service.go
@@ -190,10 +190,22 @@
 	keyMgrAgent *keymgr.Agent
 }
 
+// appStart is the subset of the appService object needed to
+// (re)start an application.
+type appStartState struct {
+	systemName  string
+	instanceDir string
+	callback    *callbackState
+	// securityAgent holds state related to the security agent (nil if not
+	// using the agent).
+	securityAgent *securityAgentState
+	// mtAddress is the address of the local mounttable.
+	mtAddress string
+}
+
 // appService implements the Device manager's Application interface.
 type appService struct {
-	callback *callbackState
-	config   *config.State
+	config *config.State
 	// suffix contains the name components of the current invocation name
 	// suffix.  It is used to identify an application, installation, or
 	// instance.
@@ -202,13 +214,9 @@
 	permsStore *pathperms.PathStore
 	// Reference to the devicemanager top-level AccessList list.
 	deviceAccessList access.Permissions
-	// securityAgent holds state related to the security agent (nil if not
-	// using the agent).
-	securityAgent *securityAgentState
-	// mtAddress is the address of the local mounttable.
-	mtAddress string
 	// reap is the app process monitoring subsystem.
-	reap reaper
+	reap     reaper
+	appStart *appStartState
 }
 
 func saveEnvelope(ctx *context.T, dir string, envelope *application.Envelope) error {
@@ -704,7 +712,7 @@
 		return instanceDir, instanceID, verror.New(ErrOperationFailed, ctx, fmt.Sprintf("Symlink(%v, %v) failed: %v", packagesDir, packagesLink, err))
 	}
 	instanceInfo := new(instanceInfo)
-	if err := setupPrincipal(ctx, instanceDir, call, i.securityAgent, instanceInfo); err != nil {
+	if err := setupPrincipal(ctx, instanceDir, call, i.appStart.securityAgent, instanceInfo); err != nil {
 		return instanceDir, instanceID, err
 	}
 	if err := saveInstanceInfo(ctx, instanceDir, instanceInfo); err != nil {
@@ -727,7 +735,11 @@
 	return instanceDir, instanceID, nil
 }
 
-func genCmd(ctx *context.T, instanceDir, systemName string, nsRoot string) (*exec.Cmd, error) {
+func (i appStartState) genCmd(ctx *context.T) (*exec.Cmd, error) {
+	instanceDir := i.instanceDir
+	systemName := i.systemName
+	nsRoot := i.mtAddress
+
 	versionLink := filepath.Join(instanceDir, "version")
 	versionDir, err := filepath.EvalSymlinks(versionLink)
 	if err != nil {
@@ -790,7 +802,8 @@
 	return suidHelper.getAppCmd(&saArgs)
 }
 
-func (i *appService) startCmd(ctx *context.T, instanceDir string, cmd *exec.Cmd) (int, error) {
+func (i appStartState) startCmd(ctx *context.T, cmd *exec.Cmd) (int, error) {
+	instanceDir := i.instanceDir
 	info, err := loadInstanceInfo(ctx, instanceDir)
 	if err != nil {
 		return 0, err
@@ -892,24 +905,24 @@
 	return pid, nil
 }
 
-func (i *appService) run(ctx *context.T, instanceDir, systemName string) error {
-	if err := transitionInstance(instanceDir, device.InstanceStateNotRunning, device.InstanceStateLaunching); err != nil {
+func (i appStartState) run(ctx *context.T, reap reaper) error {
+	if err := transitionInstance(i.instanceDir, device.InstanceStateNotRunning, device.InstanceStateLaunching); err != nil {
 		return err
 	}
 	var pid int
 
-	cmd, err := genCmd(ctx, instanceDir, systemName, i.mtAddress)
+	cmd, err := i.genCmd(ctx)
 	if err == nil {
-		pid, err = i.startCmd(ctx, instanceDir, cmd)
+		pid, err = i.startCmd(ctx, cmd)
 	}
 	if err != nil {
-		transitionInstance(instanceDir, device.InstanceStateLaunching, device.InstanceStateNotRunning)
+		transitionInstance(i.instanceDir, device.InstanceStateLaunching, device.InstanceStateNotRunning)
 		return err
 	}
-	if err := transitionInstance(instanceDir, device.InstanceStateLaunching, device.InstanceStateRunning); err != nil {
+	if err := transitionInstance(i.instanceDir, device.InstanceStateLaunching, device.InstanceStateRunning); err != nil {
 		return err
 	}
-	i.reap.startWatching(instanceDir, pid)
+	reap.startWatching(i.instanceDir, pid)
 	return nil
 }
 
@@ -963,7 +976,10 @@
 	if startSystemName != systemName {
 		return verror.New(verror.ErrNoAccess, ctx, "Not allowed to resume an application under a different system name.")
 	}
-	return i.run(ctx, instanceDir, systemName)
+
+	i.appStart.instanceDir = instanceDir
+	i.appStart.systemName = systemName
+	return i.appStart.run(ctx, i.reap)
 }
 
 func stopAppRemotely(ctx *context.T, appVON string, deadline time.Duration) error {
@@ -1431,7 +1447,10 @@
 	} else {
 		debugInfo.StartSystemName = startSystemName
 	}
-	if cmd, err := genCmd(ctx, instanceDir, debugInfo.SystemName, i.mtAddress); err != nil {
+	as := *i.appStart
+	as.instanceDir = instanceDir
+	as.systemName = debugInfo.SystemName
+	if cmd, err := as.genCmd(ctx); err != nil {
 		return "", err
 	} else {
 		debugInfo.Cmd = cmd
@@ -1442,7 +1461,7 @@
 		debugInfo.Info = info
 	}
 
-	if sa := i.securityAgent; sa != nil {
+	if sa := i.appStart.securityAgent; sa != nil {
 		file, err := sa.keyMgrAgent.NewConnection(debugInfo.Info.SecurityAgentHandle)
 		if err != nil {
 			vlog.Errorf("NewConnection(%v) failed: %v", debugInfo.Info.SecurityAgentHandle, err)
diff --git a/services/device/internal/impl/dispatcher.go b/services/device/internal/impl/dispatcher.go
index 8c506e1..86f57f4 100644
--- a/services/device/internal/impl/dispatcher.go
+++ b/services/device/internal/impl/dispatcher.go
@@ -322,14 +322,16 @@
 			}
 		}
 		receiver := device.ApplicationServer(&appService{
-			callback:      d.internal.callback,
-			config:        d.config,
-			suffix:        components[1:],
-			uat:           d.uat,
-			permsStore:    d.permsStore,
-			securityAgent: d.internal.securityAgent,
-			mtAddress:     d.mtAddress,
-			reap:          d.reap,
+			config:     d.config,
+			suffix:     components[1:],
+			uat:        d.uat,
+			permsStore: d.permsStore,
+			reap:       d.reap,
+			appStart: &appStartState{
+				callback:      d.internal.callback,
+				securityAgent: d.internal.securityAgent,
+				mtAddress:     d.mtAddress,
+			},
 		})
 		appSpecificAuthorizer, err := newAppSpecificAuthorizer(auth, d.config, components[1:], d.permsStore)
 		if err != nil {
