avoid creation of new array using .concat when calling partially completed function
several small optimisations
a little more variety