avoid allocate intermediate Function objects