Initial work

putIfAbsent is redundant since you do a null check and the method is synchronized, a normal put is fine