only need to trigger message.* once