Introduced the IMessage contract as the base contract for all messages so we can use the correlation id for logging