templates first try
templates and iterators