simplify
introduce for_each_arg helper, and use everywhere