maybe PositionIterator rather than PositionSIterator