Refactor PageBuilder to simplify interface and separate concerns