Not having delved into this yet, I think that if a caller is responsible for closing an object e.g. calling "close" then they should be responsible for opening it also. This also reminds me of Mac OS Cocoa where if a method begins with "create" then the caller is responsible for deallocation - but that convention is weak IMHO. I shall read further...