use output iterator