fully functional client side pagination