Message and TypedMessage augmented with type checking, to make them fail safely and not violate standards