Honestly, I don't know how to answer that question. If you look at Groove deeply, you'll understand that the product could never have been built with such a clean conceptual model unless we took a holistic architectural view. For example, the first and most obvious thing to decompose is the xml message relaying system. Another may be the xml object transport system, or the xml object store. Systems that move pointers are admirably lightweight but don't get high availability in the case of network disconnection, planned or unplanned.
Groove seems to have done a lot of work on the version control issue.
It's important to understand that Groove doesn't move or synchronize data. These calls are treated as atomic transactions that are submitted locally and distributed securely to other nodes in the same shared space, where they're executed in parallel. All of that said, it is up to the user-level application to determine precisely what to do with this distributed transaction infrastructure. Time will tell us which tools are best to move data by value, which ones are best to move by reference, and what kind of UI to slap onto the by-reference tools so that you can get the data that you need when you need it. It can do things such as systems integration, or could indeed also do things such as being a proxy file repository.