cherry-picked - remove running() and update()