Is leaving it to the destructor the best way to do this? I seem to recall that there's no guarantee that they will be called?