implement do_hard_restart