filter function is optional for list-filter