Semi-OT, this discussion makes me see a flaw in my impl of the DeploymentPlan notion. One thing a deployment plan supports is the notion of grouping a set of actions (e.g. separate deploy/undeploy operations) together and rolling them all back in case of failure of any. Again, simple enough to do if a problem occurs on the thread the calls BatchBuilder.install(). But more complex if the failure is on another thread that's installing a service.