	struct Message
	{
		virtual ~Message() = default;

		explicit Message(unsigned short id) : Message(id, 0U) {}
		explicit Message(unsigned short id, unsigned short family) : id(id), family(family) {}

		// Computes the unique identifier when requested
		unsigned int uid() const {
			static int bits = sizeof(unsigned short) * 8;
			return family << bits | id;
		}
