added function_output iterator