get rid of use of 'auto'
only make new iterator templates once