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. Some kind of indication that a tracker request was tried, but won't be allowed since the tracker set a min interval.