first pass at PageInteractionService