group functions by ... functionality
arrays can contain undefined, i suppose
replace the dumb argN functions with a single arg