make it clear it is ConcurrentMap so no need of synchronized block