un-break function type checking; still inferring ? for function types