Splitted CachingReader into CachingReader and CachingReaderWorker