do proper synchronization