re-design the message engine