Pages()->add($myPage) * @abstract * @param $pageObject * @return mixed */ function addPage($pageObject); function removePage($pageObject); function getPages(); /** * Can be implemented as a key/value store table (although it is more like category/value, because the same category can occur multiple times) * @abstract * @param $category * @param $value * @return mixed */ function addTag($category, $value, $multiValue = true); function addTags($twoDimensionalArray); function removeTag($category = null, $value = null); function removeAllTags(); function getAllTags(); function downloadLink(); function getVersions(); function embargo(); function embargoUntilDate(); function clearEmbargo(); function expire(); function expireAtDate(); function clearExpiry(); }