made protocol work with cache