one thing to work out with this is what happens when there are multiple holders of the same version well multiple loadings of the same version should result in different versions in memory and should be mapped to different version ids
it is still possible for different in memory soiftware aspects to hold a reference to the same version e.g. one aspect creates a new version, another then loads all versions of a specific data id
what happens when one of the holders saves the data, well upon save a delta is constructed between the latest version and the loaded version ( In the future this could be between the loaded version and the memory with the loaded version id specified) this delta is saved to the store with the current version id a new version id is then chosen this means that the non saving holder cant rely on the version id staying the same