added Tools.iter/map