improve compile time constructs, manage LLVM contextes in a better way