decouple calculation from rendering