limited type checking and code generation