refactor filters, implement FIterator