LRU cache reimpl