iteration moved to standalone module
design fix