refactor SkippableIterator with a FilterIterator