added animation loop