local cache impl