redraw() is no longer called based on action, called with requestAnimationFrame()