change stepForward to use work and change lock service to have lock and tryLock