core::Manager::stop() should make sure ongoing hash checks get cleaned up. Polling during last phase of shutdown should be very quick, don't use normal timeout. Make clear distinction of upload/download throttle. Consider basing WindowPeer* on a common base class.