Improved type system implementation; ported code to LLVM 3.3