better to cache values