Add filtering, pagination and caching