bare typechecking and instantiation