Simplified Enumerator and implementations for MatchStep.  This fixes both known bugs and makes the code more maintainable.