Same behavior, but ensures that the functions we're calling exist, since they can be checked at compile-time.