decouple filters more and split out results class