took out the on demand rendering and added in requestAnimationFrame. this still leaves it simple since all the movement and animation is done in it's own worker