add machinery for determining the types of function inputs/outputs