restructure message-emitters