I eventually implemented JohnBolton's suggestion, and it appears to work well enough. Mattnewport, I think I'm going to implement yours too, cause now that I think of it I don't see any reason for keeping the destruction code in shutdown(). I still think it's important to keep init code in init() so that, if something goes wrong, at least the object is fully constructed and I can now safely return an error, throw an exception, whatever. That's just me though.