use immutable object for message.