Type inference part 3