fix memory leaks, still have reachable blocks in llvm?
documentation