add specific message type; refactoring