some minor optimization: reuse messages, remove calls to QD events.