Split TypeCheck into several modules according to Igarashi, Pierce, Wadler