implemented message queue