added requestanimationframe