use requestAnimationFrame for swift justice