Why synchronized? Seems unnecessary. Same for getCluster()