compiler shouldn't call type check