more on type infer