add immediate restart and remove unneeded wrapper abstraction