diff --git a/quiche/quic/moqt/moqt_framer.cc b/quiche/quic/moqt/moqt_framer.cc
index fd9aeef..78c9e3a 100644
--- a/quiche/quic/moqt/moqt_framer.cc
+++ b/quiche/quic/moqt/moqt_framer.cc
@@ -176,7 +176,7 @@
                  ? Serialize(WireVarInt62(message_type),
                              WireVarInt62(message.subscribe_id),
                              WireVarInt62(message.track_alias),
-                             WireVarInt62(message.object_send_order),
+                             WireUint8(message.publisher_priority),
                              WireVarInt62(message.group_id),
                              WireVarInt62(message.object_id),
                              WireVarInt62(*message.payload_length),
@@ -184,7 +184,7 @@
                  : Serialize(WireVarInt62(message_type),
                              WireVarInt62(message.subscribe_id),
                              WireVarInt62(message.track_alias),
-                             WireVarInt62(message.object_send_order),
+                             WireUint8(message.publisher_priority),
                              WireVarInt62(message.group_id),
                              WireVarInt62(message.object_id),
                              WireVarInt62(*message.payload_length));
@@ -194,7 +194,7 @@
                              WireVarInt62(message.subscribe_id),
                              WireVarInt62(message.track_alias),
                              WireVarInt62(message.group_id),
-                             WireVarInt62(message.object_send_order),
+                             WireUint8(message.publisher_priority),
                              WireVarInt62(message.object_id),
                              WireVarInt62(*message.payload_length),
                              WireVarInt62(message.object_status))
@@ -202,7 +202,7 @@
                              WireVarInt62(message.subscribe_id),
                              WireVarInt62(message.track_alias),
                              WireVarInt62(message.group_id),
-                             WireVarInt62(message.object_send_order),
+                             WireUint8(message.publisher_priority),
                              WireVarInt62(message.object_id),
                              WireVarInt62(*message.payload_length));
     case MoqtForwardingPreference::kObject:
@@ -211,7 +211,7 @@
           WireVarInt62(message_type), WireVarInt62(message.subscribe_id),
           WireVarInt62(message.track_alias), WireVarInt62(message.group_id),
           WireVarInt62(message.object_id),
-          WireVarInt62(message.object_send_order),
+          WireUint8(message.publisher_priority),
           WireVarInt62(message.object_status));
   }
 }
@@ -227,7 +227,7 @@
       WireVarInt62(MoqtMessageType::kObjectDatagram),
       WireVarInt62(message.subscribe_id), WireVarInt62(message.track_alias),
       WireVarInt62(message.group_id), WireVarInt62(message.object_id),
-      WireVarInt62(message.object_send_order),
+      WireUint8(message.publisher_priority),
       WireVarInt62(static_cast<uint64_t>(message.object_status)),
       WireBytes(payload));
 }
diff --git a/quiche/quic/moqt/moqt_framer_test.cc b/quiche/quic/moqt/moqt_framer_test.cc
index 916ac1d..6be927d 100644
--- a/quiche/quic/moqt/moqt_framer_test.cc
+++ b/quiche/quic/moqt/moqt_framer_test.cc
@@ -240,7 +240,7 @@
       /*track_alias=*/4,
       /*group_id=*/5,
       /*object_id=*/6,
-      /*object_send_order=*/7,
+      /*publisher_priority=*/7,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kObject,
       /*payload_length=*/std::nullopt,
@@ -268,7 +268,7 @@
       /*track_alias=*/4,
       /*group_id=*/5,
       /*object_id=*/6,
-      /*object_send_order=*/7,
+      /*publisher_priority=*/7,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kObject,
       /*payload_length=*/std::nullopt,
diff --git a/quiche/quic/moqt/moqt_integration_test.cc b/quiche/quic/moqt/moqt_integration_test.cc
index 66df451..80710e5 100644
--- a/quiche/quic/moqt/moqt_integration_test.cc
+++ b/quiche/quic/moqt/moqt_integration_test.cc
@@ -195,7 +195,8 @@
   EXPECT_CALL(server_visitor, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t /*object_send_order*/, MoqtObjectStatus status,
+                    MoqtPriority /*publisher_priority*/,
+                    MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view object, bool end_of_message) {
         EXPECT_EQ(full_track_name.track_namespace, "test");
diff --git a/quiche/quic/moqt/moqt_messages.h b/quiche/quic/moqt/moqt_messages.h
index 61015be..5521e36 100644
--- a/quiche/quic/moqt/moqt_messages.h
+++ b/quiche/quic/moqt/moqt_messages.h
@@ -19,6 +19,7 @@
 #include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_versions.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/common/platform/api/quiche_export.h"
 
 namespace moqt {
@@ -223,7 +224,7 @@
   uint64_t track_alias;
   uint64_t group_id;
   uint64_t object_id;
-  uint64_t object_send_order;
+  MoqtPriority publisher_priority;
   MoqtObjectStatus object_status;
   MoqtForwardingPreference forwarding_preference;
   std::optional<uint64_t> payload_length;
diff --git a/quiche/quic/moqt/moqt_outgoing_queue.h b/quiche/quic/moqt/moqt_outgoing_queue.h
index 4daa389..42d6425 100644
--- a/quiche/quic/moqt/moqt_outgoing_queue.h
+++ b/quiche/quic/moqt/moqt_outgoing_queue.h
@@ -16,6 +16,7 @@
 #include "absl/status/statusor.h"
 #include "quiche/quic/moqt/moqt_cached_object.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_publisher.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/common/platform/api/quiche_mem_slice.h"
@@ -63,6 +64,9 @@
   MoqtForwardingPreference GetForwardingPreference() const override {
     return forwarding_preference_;
   }
+  MoqtPriority GetPublisherPriority() const override {
+    return publisher_priority_;
+  }
 
   bool HasSubscribers() const { return !listeners_.empty(); }
 
@@ -82,6 +86,7 @@
   MoqtSession* session_;  // Not owned.
   FullTrackName track_;
   MoqtForwardingPreference forwarding_preference_;
+  MoqtPriority publisher_priority_ = 128;
   absl::InlinedVector<Group, kMaxQueuedGroups> queue_;
   uint64_t current_group_id_ = -1;
   absl::flat_hash_set<MoqtObjectListener*> listeners_;
diff --git a/quiche/quic/moqt/moqt_parser.cc b/quiche/quic/moqt/moqt_parser.cc
index c026246..a5b180d 100644
--- a/quiche/quic/moqt/moqt_parser.cc
+++ b/quiche/quic/moqt/moqt_parser.cc
@@ -741,7 +741,7 @@
       !reader.ReadVarInt62(&object.object_id)) {
     return 0;
   }
-  if (!reader.ReadVarInt62(&object.object_send_order)) {
+  if (!reader.ReadUInt8(&object.publisher_priority)) {
     return 0;
   }
   uint64_t status = 0;  // Defaults to kNormal.
diff --git a/quiche/quic/moqt/moqt_publisher.h b/quiche/quic/moqt/moqt_publisher.h
index ab163d5..4c66001 100644
--- a/quiche/quic/moqt/moqt_publisher.h
+++ b/quiche/quic/moqt/moqt_publisher.h
@@ -11,6 +11,7 @@
 
 #include "absl/status/statusor.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/common/platform/api/quiche_mem_slice.h"
 
 namespace moqt {
@@ -90,6 +91,9 @@
   // This method may only be called if
   // DoesTrackStatusImplyHavingData(GetTrackStatus()) is true.
   virtual MoqtForwardingPreference GetForwardingPreference() const = 0;
+
+  // Returns the current forwarding priority of the track.
+  virtual MoqtPriority GetPublisherPriority() const = 0;
 };
 
 // MoqtPublisher is an interface to a publisher that allows it to publish
diff --git a/quiche/quic/moqt/moqt_session.cc b/quiche/quic/moqt/moqt_session.cc
index 154c8ba..db716fb 100644
--- a/quiche/quic/moqt/moqt_session.cc
+++ b/quiche/quic/moqt/moqt_session.cc
@@ -187,12 +187,12 @@
                     << message.subscribe_id << " for track alias "
                     << message.track_alias << " with sequence "
                     << message.group_id << ":" << message.object_id
-                    << " send_order " << message.object_send_order << " length "
+                    << " priority " << message.publisher_priority << " length "
                     << payload.size();
   auto [full_track_name, visitor] = TrackPropertiesFromAlias(message);
   if (visitor != nullptr) {
     visitor->OnObjectFragment(full_track_name, message.group_id,
-                              message.object_id, message.object_send_order,
+                              message.object_id, message.publisher_priority,
                               message.object_status,
                               message.forwarding_preference, payload, true);
   }
@@ -799,8 +799,8 @@
       << ENDPOINT << "Received OBJECT message on stream "
       << stream_->GetStreamId() << " for subscribe_id " << message.subscribe_id
       << " for track alias " << message.track_alias << " with sequence "
-      << message.group_id << ":" << message.object_id << " send_order "
-      << message.object_send_order << " forwarding_preference "
+      << message.group_id << ":" << message.object_id << " priority "
+      << message.publisher_priority << " forwarding_preference "
       << MoqtForwardingPreferenceToString(message.forwarding_preference)
       << " length " << payload.size() << " explicit length "
       << (message.payload_length.has_value() ? (int)*message.payload_length
@@ -820,7 +820,7 @@
   if (visitor != nullptr) {
     visitor->OnObjectFragment(
         full_track_name, message.group_id, message.object_id,
-        message.object_send_order, message.object_status,
+        message.publisher_priority, message.object_status,
         message.forwarding_preference, payload, end_of_message);
   }
   partial_object_.clear();
@@ -1059,7 +1059,7 @@
   header.track_alias = subscription.track_alias();
   header.group_id = object.sequence.group;
   header.object_id = object.sequence.object;
-  header.object_send_order = 0;  // TODO: remove in draft-05
+  header.publisher_priority = publisher.GetPublisherPriority();
   header.object_status = object.status;
   header.forwarding_preference = forwarding_preference;
   header.payload_length = object.payload.length();
@@ -1136,7 +1136,7 @@
   header.track_alias = track_alias();
   header.group_id = object->sequence.group;
   header.object_id = object->sequence.object;
-  header.object_send_order = 0;  // TODO: remove in draft-05
+  header.publisher_priority = track_publisher_->GetPublisherPriority();
   header.object_status = object->status;
   header.forwarding_preference = MoqtForwardingPreference::kDatagram;
   quiche::QuicheBuffer datagram = session_->framer_.SerializeObjectDatagram(
diff --git a/quiche/quic/moqt/moqt_session_test.cc b/quiche/quic/moqt/moqt_session_test.cc
index 1c8162b..1b5b2e4 100644
--- a/quiche/quic/moqt/moqt_session_test.cc
+++ b/quiche/quic/moqt/moqt_session_test.cc
@@ -21,6 +21,7 @@
 #include "quiche/quic/moqt/moqt_known_track_publisher.h"
 #include "quiche/quic/moqt/moqt_messages.h"
 #include "quiche/quic/moqt/moqt_parser.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_publisher.h"
 #include "quiche/quic/moqt/moqt_track.h"
 #include "quiche/quic/moqt/tools/moqt_mock_visitor.h"
@@ -555,7 +556,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -580,7 +581,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/16,
@@ -615,7 +616,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/16,
@@ -651,7 +652,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -663,7 +664,7 @@
   EXPECT_CALL(visitor_, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t object_send_order, MoqtObjectStatus status,
+                    MoqtPriority publisher_priority, MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view payload, bool end_of_message) {
         EXPECT_EQ(full_track_name, ftn);
@@ -707,7 +708,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -719,7 +720,7 @@
   EXPECT_CALL(visitor, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t object_send_order, MoqtObjectStatus status,
+                    MoqtPriority publisher_priority, MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view payload, bool end_of_message) {
         EXPECT_EQ(full_track_name, ftn);
@@ -767,7 +768,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -779,7 +780,7 @@
   EXPECT_CALL(visitor, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t object_send_order, MoqtObjectStatus status,
+                    MoqtPriority publisher_priority, MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view payload, bool end_of_message) {
         EXPECT_EQ(full_track_name, ftn);
@@ -818,7 +819,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
@@ -830,7 +831,7 @@
   EXPECT_CALL(visitor, OnObjectFragment(_, _, _, _, _, _, _, _))
       .WillOnce([&](const FullTrackName& full_track_name,
                     uint64_t group_sequence, uint64_t object_sequence,
-                    uint64_t object_send_order, MoqtObjectStatus status,
+                    MoqtPriority publisher_priority, MoqtObjectStatus status,
                     MoqtForwardingPreference forwarding_preference,
                     absl::string_view payload, bool end_of_message) {
         EXPECT_EQ(full_track_name, ftn);
@@ -1153,7 +1154,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kDatagram,
       /*payload_length=*/8,
@@ -1162,7 +1163,7 @@
                      0x65, 0x61, 0x64, 0x62, 0x65, 0x65, 0x66};
   EXPECT_CALL(visitor_,
               OnObjectFragment(ftn, object.group_id, object.object_id,
-                               object.object_send_order, object.object_status,
+                               object.publisher_priority, object.object_status,
                                object.forwarding_preference, payload, true))
       .Times(1);
   session_.OnDatagramReceived(absl::string_view(datagram, sizeof(datagram)));
@@ -1178,7 +1179,7 @@
       /*track_alias=*/2,
       /*group_sequence=*/0,
       /*object_sequence=*/0,
-      /*object_send_order=*/0,
+      /*publisher_priority=*/0,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kGroup,
       /*payload_length=*/8,
diff --git a/quiche/quic/moqt/moqt_track.h b/quiche/quic/moqt/moqt_track.h
index 3fefee5..37636b7 100644
--- a/quiche/quic/moqt/moqt_track.h
+++ b/quiche/quic/moqt/moqt_track.h
@@ -10,6 +10,7 @@
 
 #include "absl/strings/string_view.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 
 namespace moqt {
 
@@ -27,7 +28,7 @@
         std::optional<absl::string_view> error_reason_phrase) = 0;
     virtual void OnObjectFragment(
         const FullTrackName& full_track_name, uint64_t group_sequence,
-        uint64_t object_sequence, uint64_t object_send_order,
+        uint64_t object_sequence, MoqtPriority publisher_priority,
         MoqtObjectStatus object_status,
         MoqtForwardingPreference forwarding_preference,
         absl::string_view object, bool end_of_message) = 0;
diff --git a/quiche/quic/moqt/test_tools/moqt_test_message.h b/quiche/quic/moqt/test_tools/moqt_test_message.h
index 2c2c323..c4f4976 100644
--- a/quiche/quic/moqt/test_tools/moqt_test_message.h
+++ b/quiche/quic/moqt/test_tools/moqt_test_message.h
@@ -135,8 +135,8 @@
       QUIC_LOG(INFO) << "OBJECT Object Sequence mismatch";
       return false;
     }
-    if (cast.object_send_order != object_.object_send_order) {
-      QUIC_LOG(INFO) << "OBJECT Object Send Order mismatch";
+    if (cast.publisher_priority != object_.publisher_priority) {
+      QUIC_LOG(INFO) << "OBJECT Publisher Priority mismatch";
       return false;
     }
     if (cast.object_status != object_.object_status) {
@@ -164,7 +164,7 @@
       /*track_alias=*/4,
       /*group_id*/ 5,
       /*object_id=*/6,
-      /*object_send_order=*/7,
+      /*publisher_priority=*/7,
       /*object_status=*/MoqtObjectStatus::kNormal,
       /*forwarding_preference=*/MoqtForwardingPreference::kTrack,
       /*payload_length=*/std::nullopt,
@@ -178,9 +178,7 @@
     object_.forwarding_preference = MoqtForwardingPreference::kObject;
   }
 
-  void ExpandVarints() override {
-    ExpandVarintsImpl("vvvvvvv---");  // first six fields are varints
-  }
+  void ExpandVarints() override { ExpandVarintsImpl("vvvvv-v---"); }
 
  private:
   uint8_t raw_packet_[10] = {
@@ -196,9 +194,7 @@
     object_.forwarding_preference = MoqtForwardingPreference::kDatagram;
   }
 
-  void ExpandVarints() override {
-    ExpandVarintsImpl("vvvvvvv---");  // first six fields are varints
-  }
+  void ExpandVarints() override { ExpandVarintsImpl("vvvvv-v---"); }
 
  private:
   uint8_t raw_packet_[10] = {
@@ -218,9 +214,7 @@
     object_.payload_length = 3;
   }
 
-  void ExpandVarints() override {
-    ExpandVarintsImpl("--vvvvvv");  // six one-byte varints
-  }
+  void ExpandVarints() override { ExpandVarintsImpl("--vv-vvv"); }
 
  private:
   // Some tests check that a FIN sent at the halfway point of a message results
@@ -265,9 +259,7 @@
     object_.payload_length = 3;
   }
 
-  void ExpandVarints() override {
-    ExpandVarintsImpl("--vvvvvv");  // six one-byte varints
-  }
+  void ExpandVarints() override { ExpandVarintsImpl("--vvv-vv"); }
 
  private:
   uint8_t raw_packet_[11] = {
diff --git a/quiche/quic/moqt/tools/chat_client_bin.cc b/quiche/quic/moqt/tools/chat_client_bin.cc
index a344a7d..5792b87 100644
--- a/quiche/quic/moqt/tools/chat_client_bin.cc
+++ b/quiche/quic/moqt/tools/chat_client_bin.cc
@@ -27,6 +27,7 @@
 #include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/moqt/moqt_messages.h"
 #include "quiche/quic/moqt/moqt_outgoing_queue.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/quic/moqt/moqt_track.h"
 #include "quiche/quic/moqt/tools/moqt_client.h"
@@ -155,7 +156,7 @@
 
     void OnObjectFragment(
         const moqt::FullTrackName& full_track_name, uint64_t group_sequence,
-        uint64_t object_sequence, uint64_t /*object_send_order*/,
+        uint64_t object_sequence, moqt::MoqtPriority /*publisher_priority*/,
         moqt::MoqtObjectStatus /*status*/,
         moqt::MoqtForwardingPreference /*forwarding_preference*/,
         absl::string_view object, bool end_of_message) override {
diff --git a/quiche/quic/moqt/tools/moqt_ingestion_server_bin.cc b/quiche/quic/moqt/tools/moqt_ingestion_server_bin.cc
index eec2b5b..01d010d 100644
--- a/quiche/quic/moqt/tools/moqt_ingestion_server_bin.cc
+++ b/quiche/quic/moqt/tools/moqt_ingestion_server_bin.cc
@@ -29,6 +29,7 @@
 #include "absl/time/clock.h"
 #include "absl/time/time.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/quic/moqt/moqt_track.h"
 #include "quiche/quic/moqt/tools/moqt_server.h"
@@ -166,7 +167,7 @@
 
     void OnObjectFragment(const FullTrackName& full_track_name,
                           uint64_t group_sequence, uint64_t object_sequence,
-                          uint64_t /*object_send_order*/,
+                          MoqtPriority /*publisher_priority*/,
                           MoqtObjectStatus /*status*/,
                           MoqtForwardingPreference /*forwarding_preference*/,
                           absl::string_view object,
diff --git a/quiche/quic/moqt/tools/moqt_mock_visitor.h b/quiche/quic/moqt/tools/moqt_mock_visitor.h
index 3dc5741..5ab728a 100644
--- a/quiche/quic/moqt/tools/moqt_mock_visitor.h
+++ b/quiche/quic/moqt/tools/moqt_mock_visitor.h
@@ -13,6 +13,7 @@
 #include "absl/status/statusor.h"
 #include "absl/strings/string_view.h"
 #include "quiche/quic/moqt/moqt_messages.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_publisher.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/quic/moqt/moqt_track.h"
@@ -60,6 +61,7 @@
   MOCK_METHOD(FullSequence, GetLargestSequence, (), (const, override));
   MOCK_METHOD(MoqtForwardingPreference, GetForwardingPreference, (),
               (const, override));
+  MOCK_METHOD(MoqtPriority, GetPublisherPriority, (), (const, override));
 
  private:
   FullTrackName track_name_;
@@ -73,7 +75,7 @@
               (override));
   MOCK_METHOD(void, OnObjectFragment,
               (const FullTrackName& full_track_name, uint64_t group_sequence,
-               uint64_t object_sequence, uint64_t object_send_order,
+               uint64_t object_sequence, MoqtPriority publisher_priority,
                MoqtObjectStatus status,
                MoqtForwardingPreference forwarding_preference,
                absl::string_view object, bool end_of_message),
diff --git a/quiche/quic/moqt/tools/moqt_simulator_bin.cc b/quiche/quic/moqt/tools/moqt_simulator_bin.cc
index 6aa5d01..7a2eb30 100644
--- a/quiche/quic/moqt/tools/moqt_simulator_bin.cc
+++ b/quiche/quic/moqt/tools/moqt_simulator_bin.cc
@@ -26,6 +26,7 @@
 #include "quiche/quic/moqt/moqt_known_track_publisher.h"
 #include "quiche/quic/moqt/moqt_messages.h"
 #include "quiche/quic/moqt/moqt_outgoing_queue.h"
+#include "quiche/quic/moqt/moqt_priority.h"
 #include "quiche/quic/moqt/moqt_session.h"
 #include "quiche/quic/moqt/moqt_track.h"
 #include "quiche/quic/moqt/test_tools/moqt_simulator_harness.h"
@@ -157,7 +158,7 @@
 
   void OnObjectFragment(const FullTrackName& full_track_name,
                         uint64_t group_sequence, uint64_t object_sequence,
-                        uint64_t /*object_send_order*/,
+                        MoqtPriority /*publisher_priority*/,
                         MoqtObjectStatus /*status*/,
                         MoqtForwardingPreference /*forwarding_preference*/,
                         absl::string_view object,
