1. A method performed by a server for synchronizing first data stored to a mobile device and second data stored to a remote storage device comprising: receiving a schema from the mobile device describing the first data; matching respective instances of the first and second data using the schema; determining differences between the first and second data in response to the matching; and updating at least one of the first and second data in response to the differences.