revise synchronization implementation