T, I've looked over your code and understand what you are doing but I don't understand the expression is(typeof(func(args[0], args[1])))) you are checking if func(a,b)'s return type is a type?