add putIfAbsent and replace observers, fixed stats logic in get with cache loader