generic sync