make iterators "dumb".  Add IsValid() function to iterator.

Why would this logic be necessary? I can only see it hurting ...