This maybe premature optimization so feel free to ignore but it would be sweet if we only use mutex in scenario where there is a cache miss and we have to go to the backing store. In case of a cache hit there is no need to lock  as its just a read only operation. I feel like cache hit will be the most common scenario and we should try to make it lock free if we can