Separate cache implementation