refactored filters, allow painless extending