added pagination, error handling, and no results view