more refactoring, and tests for obverse iterator. All tests passed