add more option, plan to refactor to accept custom page handler