A computer-readable medium having computer-executable instructions for synchronizing structured data items associated with a computer-generated document, the structured data items being shared across data consumers, the data consumers being data consuming software applications, the synchronizing comprising: storing, in a data store, the structured data items that are associated with the computer-generated document, wherein the structured data items are stored separately from the computer-generated document; initiating a change to one of the structured data items within the data store by a first data consumer, said structured data item comprising multiple pieces of structured data, said change concerning one of said pieces of structured data; determining the other data consumers that are interested in the change to the structured data item, wherein the determination is based on whether the other data consumers called an application programming interface, API, to register for a notification to a change of the structured data items: notifying the other data consumers of the change, wherein each of the other notified data consumers performs at least one of: accepting the change; rejecting the change; and initiating a side-effect change as a result of the change, wherein the side-effect changes is a change that is initiated by the other data consumers in response to the change initiated by the first data consumer, wherein at least one of said side-effect changes is a change to another piece of said pieces of structured data; and committing the change initiated by the first data consumer and any initiated side-effect changes to the data store when the change is accepted, and rolling back the data store to a state before a time when the change was initiated by the first data consumer when the change is rejected. storing, in a data store, the structured data items that are associated with the computer-generated document, wherein the structured data items are stored separately from the computer-generated document; initiating a change to one of the structured data items within the data store by a first data consumer, said structured data item comprising multiple pieces of structured data, said change concerning one of said pieces of structured data; determining the other data consumers that are interested in the change to the structured data item, wherein the determination is based on whether the other data consumers called an application programming interface, API, to register for a notification to a change of the structured data items: notifying the other data consumers of the change, wherein each of the other notified data consumers performs at least one of: accepting the change; rejecting the change; and initiating a side-effect change as a result of the change, wherein the side-effect changes is a change that is initiated by the other data consumers in response to the change initiated by the first data consumer, wherein at least one of said side-effect changes is a change to another piece of said pieces of structured data; and committing the change initiated by the first data consumer and any initiated side-effect changes to the data store when the change is accepted, and rolling back the data store to a state before a time when the change was initiated by the first data consumer when the change is rejected. notifying the other data consumers of the change, wherein each of the other notified data consumers performs at least one of: accepting the change; rejecting the change; and initiating a side-effect change as a result of the change, wherein the side-effect changes is a change that is initiated by the other data consumers in response to the change initiated by the first data consumer, wherein at least one of said side-effect changes is a change to another piece of said pieces of structured data; and committing the change initiated by the first data consumer and any initiated side-effect changes to the data store when the change is accepted, and rolling back the data store to a state before a time when the change was initiated by the first data consumer when the change is rejected.