make iterator lazy