refactor the LRU cache

@Todo:

1. Refactor LFU cache to better integrate with the cache package