A method of synchronizing a document on a first computing device (110A, 110B, 110C, 110D), the document being broken into cells (305, 310, 315), and each cell (305, 310, 315) being defined by at least one revision manifest, wherein cells are groups of data objects with similar properties, and wherein the revision manifest defines a revision representing a state of the document at a point in time, the method comprising: receiving a first revision (420, 425, 435, 440), and at least one cell (305, 310, 315) associated with the document, the at least one cell (305, 310, 315) comprising a cell identifier comprising a global unique identifier and an integer pair, the global unique identifier being globally unique, the cell identifier being associated with the first revision (420, 425, 435, 440), said first revision having at least one first revision identifier, each of the at least one revision identifiers representing a state of the cells (305, 310, 315) at a point in time, and a scope defining a set of cells (305, 310, 315) and revisions (420, 425, 435, 440) and the scope including at least one root object, wherein cells (305, 310, 315) within the scope are accessible via the at least one root object; receiving an update at the first computing device (110A, 110B, 110C, 110D), the update indicating an updated revision identifier associated with each cell (305, 310, 315) associated with the document; retaining the first revision (420, 425, 435, 440) of each cell (305, 310, 315) when the first revision identifier of the cell matches the updated revision identifier of the cell (305, 310, 315); generating a new revision of each cell (305, 310, 315), wherein generating the new revision comprises assigning the new revision a new revision identifier when the first revision identifier of the cell (305, 310, 315) does not match the updated revision identifier of the cell (305, 310, 315); deleting any cell (305, 310, 315) not referenced by the at least one root object; and synchronizing the document by replacing the cells (305, 310, 315) with the new revision of each cell (305, 310, 315). receiving a first revision (420, 425, 435, 440), and at least one cell (305, 310, 315) associated with the document, the at least one cell (305, 310, 315) comprising a cell identifier comprising a global unique identifier and an integer pair, the global unique identifier being globally unique, the cell identifier being associated with the first revision (420, 425, 435, 440), said first revision having at least one first revision identifier, each of the at least one revision identifiers representing a state of the cells (305, 310, 315) at a point in time, and a scope defining a set of cells (305, 310, 315) and revisions (420, 425, 435, 440) and the scope including at least one root object, wherein cells (305, 310, 315) within the scope are accessible via the at least one root object; a first revision (420, 425, 435, 440), and at least one cell (305, 310, 315) associated with the document, the at least one cell (305, 310, 315) comprising a cell identifier comprising a global unique identifier and an integer pair, the global unique identifier being globally unique, the cell identifier being associated with the first revision (420, 425, 435, 440), said first revision having at least one first revision identifier, each of the at least one revision identifiers representing a state of the cells (305, 310, 315) at a point in time, and receiving an update at the first computing device (110A, 110B, 110C, 110D), the update indicating an updated revision identifier associated with each cell (305, 310, 315) associated with the document; retaining the first revision (420, 425, 435, 440) of each cell (305, 310, 315) when the first revision identifier of the cell matches the updated revision identifier of the cell (305, 310, 315); generating a new revision of each cell (305, 310, 315), wherein generating the new revision comprises assigning the new revision a new revision identifier when the first revision identifier of the cell (305, 310, 315) does not match the updated revision identifier of the cell (305, 310, 315); deleting any cell (305, 310, 315) not referenced by the at least one root object; and synchronizing the document by replacing the cells (305, 310, 315) with the new revision of each cell (305, 310, 315).