Base framework for building a data synchronization client