extend AbstractMessage with deferred type checking