diff --git a/src/chromiumos/test/provision/cmd/provisionserver/bootstrap/services/crosservice/crosservice.go b/src/chromiumos/test/provision/cmd/provisionserver/bootstrap/services/crosservice/crosservice.go
index a99c0db..e6631d8 100644
--- a/src/chromiumos/test/provision/cmd/provisionserver/bootstrap/services/crosservice/crosservice.go
+++ b/src/chromiumos/test/provision/cmd/provisionserver/bootstrap/services/crosservice/crosservice.go
@@ -28,9 +28,9 @@
 	dlcSpecs          []*api.InstallCrosRequest_DLCSpec
 }
 
-func NewCrOSService(dutName string, dutClient api.DutServiceClient, wiringConn *grpc.ClientConn, noReboot bool, req *api.InstallCrosRequest) CrOSService {
+func NewCrOSService(dutName string, dutClient api.DutServiceClient, wiringConn *grpc.ClientConn, req *api.InstallCrosRequest) CrOSService {
 	return CrOSService{
-		connection:        services.NewServiceAdapter(dutName, dutClient, wiringConn, noReboot),
+		connection:        services.NewServiceAdapter(dutName, dutClient, wiringConn, req.GetPreventReboot()),
 		imagePath:         req.CrosImagePath,
 		preserverStateful: req.PreserveStateful,
 		dlcSpecs:          req.DlcSpecs,
diff --git a/src/chromiumos/test/provision/cmd/provisionserver/common.go b/src/chromiumos/test/provision/cmd/provisionserver/common.go
index cadc26c..21c1866 100644
--- a/src/chromiumos/test/provision/cmd/provisionserver/common.go
+++ b/src/chromiumos/test/provision/cmd/provisionserver/common.go
@@ -55,7 +55,7 @@
 	if err != nil {
 		return nil, closer, errors.Annotate(err, "new provision: failed to connect wiring-service").Err()
 	}
-	defer wiringConn.Close()
+	conns = append(conns, wiringConn)
 	return &provision{
 		logger:     logger,
 		dutName:    dutName,
@@ -79,7 +79,8 @@
 			CrosImagePath:    state.GetSystemImage().GetSystemImagePath(),
 			DlcSpecs:         dlcSpecs,
 			PreserveStateful: false,
-		}, state.GetPreventReboot(), op); err != nil {
+			PreventReboot:    state.GetPreventReboot(),
+		}, op); err != nil {
 			return fr, err
 		}
 	}
@@ -124,9 +125,9 @@
 
 // installCros installs a specified version of Chrome OS on the DUT, along
 // with any specified DLCs.
-func (s *provision) installCros(ctx context.Context, req *api.InstallCrosRequest, noReboot bool, op *longrunning.Operation) (*api.InstallFailure, error) {
+func (s *provision) installCros(ctx context.Context, req *api.InstallCrosRequest, op *longrunning.Operation) (*api.InstallFailure, error) {
 	s.logger.Println("Received api.InstallCrosRequest: ", *req)
-	cs := crosservice.NewCrOSService(s.dutName, s.dutClient, s.wiringConn, noReboot, req)
+	cs := crosservice.NewCrOSService(s.dutName, s.dutClient, s.wiringConn, req)
 	return s.execute(ctx, &cs, op)
 }
 
@@ -176,7 +177,7 @@
 	}, fmt.Errorf("not implemented")
 }
 
-// provision effectively acts as a state transition runner for each of the
+// execute effectively acts as a state transition runner for each of the
 // installation services, transitioning between states as required, and
 // executing each state. Operation status is also set at this state in case of
 // error.
diff --git a/src/chromiumos/test/provision/cmd/provisionserver/main.go b/src/chromiumos/test/provision/cmd/provisionserver/main.go
index 8be0d64..54d58d4 100644
--- a/src/chromiumos/test/provision/cmd/provisionserver/main.go
+++ b/src/chromiumos/test/provision/cmd/provisionserver/main.go
@@ -19,7 +19,7 @@
 )
 
 // Version is the version info of this command. It is filled in during emerge.
-var Version = "<0.1>"
+var Version = "<unknown>"
 
 // createLogFile creates a file and its parent directory for logging purpose.
 func createLogFile() (*os.File, error) {
diff --git a/src/chromiumos/test/provision/cmd/provisionserver/provisioncli.go b/src/chromiumos/test/provision/cmd/provisionserver/provisioncli.go
index 92ce1c9..d211d77 100644
--- a/src/chromiumos/test/provision/cmd/provisionserver/provisioncli.go
+++ b/src/chromiumos/test/provision/cmd/provisionserver/provisioncli.go
@@ -42,6 +42,7 @@
 		}
 		return errors.Annotate(err, "run CLI").Err()
 	}
+	s.logger.Println("Finished successfully!")
 	return nil
 }
 
diff --git a/src/chromiumos/test/provision/cmd/provisionserver/provisionserver.go b/src/chromiumos/test/provision/cmd/provisionserver/provisionserver.go
index 9eea74c..7f58ecc 100644
--- a/src/chromiumos/test/provision/cmd/provisionserver/provisionserver.go
+++ b/src/chromiumos/test/provision/cmd/provisionserver/provisionserver.go
@@ -42,7 +42,7 @@
 	s.logger.Println("Received api.InstallCrosRequest: ", *req)
 	op := s.manager.NewOperation()
 	response := api.InstallCrosResponse{}
-	if fr, err := s.installCros(ctx, req, false, op); err != nil {
+	if fr, err := s.installCros(ctx, req, op); err != nil {
 		response.Outcome = &api.InstallCrosResponse_Failure{
 			Failure: fr,
 		}
