Page DM
Need to create a page DM to replace the thread DM that we are no longer using.
This gives us the opportunity to improve the way related data is saved, like revisions and "function" data (like if the page is a template or header). Now we can validate function data and revision data, before saving any changes. We can also validate the page text and throw any errors based on the page's content.
As for function data, this is taking the most time currently because we need to access them generically for cleaner code and greater extensibility. The page DM hands off data to function DMs and merges any errors to itself, before the save action is called. The page DM also hands off data to the revision DM to create a revision if it believes the changes warrant a new revision.
Deleting individual pages inversely needs to update the function nodes themselves so that any shared data is removed, but deleting function nodes should not delete the pages themselves, just remove their functionality. Also creating pages or altering their functionality, should create/remove shared data as necessary. To improve performance for mass changes, a good DM should be able to handle multiple pages at once. Moving pages to an area that doesn't support their functionality or disabling the functionality at the area level should not affect individual page functionality (page settings are more qualified than container settings).
Previous paragraph has been completed. To do: finish function hand-off DMs, rewrite revision DM, write improved link DM.