working on abstraction functionality for llvm generation