use message queue interface