implement caching prototype for read reduction