The two subclasses (SickTim3xxCommonTcp and SickTim3xxCommonUsb) first call `stop_scanner()` and then `close_device()` in their own destructors, so the new code keeps using the "destructor style". `stop_scanner()` is identical (that's why it had to become a function in the superclass), and `close_device()` is overridden in the subclasses.

The question is: since the destructors are identical in the subclasses, can't we pull those up here? (Not sure, I'm always a bit hazy on the semantics of C++ destructors).

... hmm, on second thought, this would make `stop_scanner()` superfluous as well (we could expand it into the destructor), but I think keeping it would make things more readable.