1. Can we move the "role" part of "message_base" so all the message types can inherit this property? 2. I feel this makes more sense as people will create new type of message child only for datatypes. 3. Also, the "role" is string so it anyway has the flexibility to accommodate new role in future.