Secondly, scientists regularly update and improve the functions they use to transform data. This could be a change to the FindPeaks transform or the addition of a pre-processing step to remove the outliers in the data before the FindPeaks transform processes the data (as shown in Figure ). In either case, DBgen makes these changes easy to make by automatically ordering the functions within a generator. This means that FindPeaks need only request an output from the RemoveOutlier for DBgen to know that RemoveOutlier needs to be run prior to FindPeaks. Additionally, the generator's hash will change with the addition of a transform or the modification of any transforms underlying code. This signals to DBgen that each input must be reprocessed regardless of whether it had been processed by the previous version of the generator. Finally, schema changes can be facilitated by DBgen by isolating the schema that stores the data from the generator that modifies it through the use clear, well-defined interfaces of Loads and Extracts. When schema changes are made, such as the modification of the relationship between process data and peaks from a one-to-many to a many-to-many relationship, each generator that depends upon or populates the modified entities in the schema is clearly logged in the DBgen Log Database. Additionally, the abstractions of Query objects and Load objects allows for complex schema changes to be accommodated by only a few lines of code.