Added speed choice and improved performance - switched to requstAnimationFrame