Added a bunch of new message types and refactored message construction to require the IDs to be set