Use a more pythonic way to add message listener
Add error handler to Worker.wait()
Move creation of MissionContainer to DownloadManager for solving duplicate parent problem