Hello! While I was making my own utility functions, I met an interesting situation. I want to know how to solve this kind of problem. I want to use Excel from ruby using OLE. To make steps simple, I created functions to open excel and close it. get_excel function has no problem. I call it like xl = get_excel When I'm done with it, I want to close it and unload it from memory. The right procedure is xl.quit xl = nil GC.start I want to make a function for the 3 steps. def quit_excel(xl) xl.quit xl = nil GC.start end When I call it, I do quit_excel(xl) #don't work as expected As you know, the argument is call-by-value and even if I set nil to xl, the outer reference is still referencing Excel. So GC won't collect it. How can I solve this problem? Thanks in advance. Sam