modify type infer