`iterate` functionality