fixed update interval loop