refactor into PageHolder module