Adding abstraction for message emition and reception, and rules for building message.o