add filtering, pagination and unit tests