separate rendering and updating tasks