starting refactor, seperate message into serializable, publisher and read parts