always use fullTypeCheck