moved the SelectionCriteria out of the SelectionIterator as it needs to be a more dynamic uncopyable datastructure