refactor paginate.