Hide away the cache implementation by override the pipe method