refactoring: extract PageFinder and TagFinder from PageIndex