Clean up and better document code.    Added interface to allow for custom cacheKey generation approaches.