added channel iterator algorithm