Changed LRUCache to use putIfAbsent to avoid concurrency issues.
enabled counters in LRUCache so its actually an LRUCache (i.e. keeps track of recency)