change filters into class-based structure