add LRU cache