1. add message interface and implement