framework for typechecking and code generation