this implementation seems incomplete. It does nto check that the cache is fresh or outdated