new: poly. changed: units, iterator

units: check while generating instead of hardcoding broken units.
iterator: add value_type<Iterator> and difference_type<Iterator>.