A file sync library that supports multiple implementations, using an abstraction layer