Version with cache mechanism