I've edited this to completely use message constructors everywhere that messages are used. Everything is so much prettier