introduce MessageQueue