use fake time instead of real time when measuring against inservice_time_allowed
allow multiple new instances to be brought up simultaneously
extract some logic into a more testable method