added reading cache implementation and test