A method implemented by data processing apparatus, the method comprising: receiving a first source file, the first source file having a first format that is readable by a first application, the first source file including one or more first computer-aided design models; converting the first source file into a first plurality of files, where one or more files in the first plurality of files have a first unique format that is readable by a respective application, wherein the first plurality of files comprises files of different formats that are compatible with a first set of different applications; generating a first snapshot and storing the snapshot in a storage system that is accessible to the data processing apparatus, the first snapshot including the first source file, the first plurality of files, and a first version of the first snapshot; receiving a second source file, the second source file having the first format that is readable by the first application, the second source file including one or more second models, the second source file being an updated version of the first source file; converting the second source file into a second plurality of files, where one or more files in the second plurality of files have a second unique format that is readable by a respective application, wherein the second plurality of files comprises files of different formats compatible with a second set of different applications; generating a second snapshot and storing the snapshot in a storage system that is accessible to the data processing apparatus, the second snapshot including the second source file, the second plurality of files, and a second version of the second snapshot; and associating the second snapshot with the first snapshot, wherein the second snapshot is a more recent version than the first snapshot. receiving a first source file, the first source file having a first format that is readable by a first application, the first source file including one or more first computer-aided design models; converting the first source file into a first plurality of files, where one or more files in the first plurality of files have a first unique format that is readable by a respective application, wherein the first plurality of files comprises files of different formats that are compatible with a first set of different applications; generating a first snapshot and storing the snapshot in a storage system that is accessible to the data processing apparatus, the first snapshot including the first source file, the first plurality of files, and a first version of the first snapshot; receiving a second source file, the second source file having the first format that is readable by the first application, the second source file including one or more second models, the second source file being an updated version of the first source file; converting the second source file into a second plurality of files, where one or more files in the second plurality of files have a second unique format that is readable by a respective application, wherein the second plurality of files comprises files of different formats compatible with a second set of different applications; generating a second snapshot and storing the snapshot in a storage system that is accessible to the data processing apparatus, the second snapshot including the second source file, the second plurality of files, and a second version of the second snapshot; and associating the second snapshot with the first snapshot, wherein the second snapshot is a more recent version than the first snapshot.