refactor PageCollection and Book