better reflect what the typechecker does