don't use iterator()