actually synchronized implementation