refactor listing pages