Refactor synchronziation to use observer