further simplified the looping constructs by hiding complexity inside the Type2 Iterator
tidying up of the refactored implementation