Generic "Function" type, because typescript does not like using "Function" directly in strict mode
Rest
Generic "Function" type, because typescript does not like using "Function" directly in strict mode