defined Filter as interface and allow custom filters instead of just anon functions