implement searching and filtering functionality