caching inside the calls to reduce duplication