most of start_over() put inside a transaction to avoid partially started over states
update() now occurs within a transaction, to give us multiple retries in the case of Lock timeouts
new_requirements() fixed so that time overrides from the use specified in hours instead of seconds work
gave the setups unique names for clarity