support function.apply method