Big refactor on AbstractMessage.