implement Page::hook