updated gameloop