diff --git a/call/call.cc b/call/call.cc
index 39772a2..1bb107c 100644
--- a/call/call.cc
+++ b/call/call.cc
@@ -898,9 +898,7 @@
   audio_receive_stream->UnregisterFromTransport();
 
   uint32_t ssrc = audio_receive_stream->remote_ssrc();
-  receive_side_cc_
-      .GetRemoteBitrateEstimator(UseSendSideBwe(audio_receive_stream))
-      ->RemoveStream(ssrc);
+  receive_side_cc_.RemoveStream(ssrc);
 
   audio_receive_streams_.erase(audio_receive_stream);
 
@@ -1086,9 +1084,7 @@
   video_receive_streams_.erase(receive_stream_impl);
   ConfigureSync(receive_stream_impl->sync_group());
 
-  receive_side_cc_
-      .GetRemoteBitrateEstimator(UseSendSideBwe(receive_stream_impl))
-      ->RemoveStream(receive_stream_impl->remote_ssrc());
+  receive_side_cc_.RemoveStream(receive_stream_impl->remote_ssrc());
 
   UpdateAggregateNetworkState();
   delete receive_stream_impl;
@@ -1132,9 +1128,7 @@
 
   // Remove all SSRCs pointing to the FlexfecReceiveStreamImpl to be
   // destroyed.
-  receive_side_cc_
-      .GetRemoteBitrateEstimator(UseSendSideBwe(receive_stream_impl))
-      ->RemoveStream(ssrc);
+  receive_side_cc_.RemoveStream(ssrc);
 
   delete receive_stream_impl;
 }
@@ -1165,11 +1159,7 @@
   stats.rtt_ms = call_stats_->LastProcessedRtt();
 
   // Fetch available send/receive bitrates.
-  std::vector<unsigned int> ssrcs;
-  uint32_t recv_bandwidth = 0;
-  receive_side_cc_.GetRemoteBitrateEstimator(false)->LatestEstimate(
-      &ssrcs, &recv_bandwidth);
-  stats.recv_bandwidth_bps = recv_bandwidth;
+  stats.recv_bandwidth_bps = receive_side_cc_.LatestReceiveSideEstimate().bps();
   stats.send_bandwidth_bps =
       last_bandwidth_bps_.load(std::memory_order_relaxed);
   stats.max_padding_bitrate_bps =
diff --git a/modules/congestion_controller/include/receive_side_congestion_controller.h b/modules/congestion_controller/include/receive_side_congestion_controller.h
index 53a0de2..fe30865 100644
--- a/modules/congestion_controller/include/receive_side_congestion_controller.h
+++ b/modules/congestion_controller/include/receive_side_congestion_controller.h
@@ -48,9 +48,10 @@
 
   void SetSendPeriodicFeedback(bool send_periodic_feedback);
   // TODO(nisse): Delete these methods, design a more specific interface.
-  virtual RemoteBitrateEstimator* GetRemoteBitrateEstimator(bool send_side_bwe);
-  virtual const RemoteBitrateEstimator* GetRemoteBitrateEstimator(
-      bool send_side_bwe) const;
+  [[deprecated]] virtual RemoteBitrateEstimator* GetRemoteBitrateEstimator(
+      bool send_side_bwe);
+  [[deprecated]] virtual const RemoteBitrateEstimator*
+  GetRemoteBitrateEstimator(bool send_side_bwe) const;
 
   // Implements CallStatsObserver.
   void OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) override;
@@ -64,6 +65,14 @@
 
   void SetTransportOverhead(DataSize overhead_per_packet);
 
+  // Returns latest receive side bandwidth estimation.
+  // Returns zero if receive side bandwidth estimation is unavailable.
+  DataRate LatestReceiveSideEstimate() const;
+
+  // Removes stream from receive side bandwidth estimation.
+  // Noop if receive side bwe is not used or stream doesn't participate in it.
+  void RemoveStream(uint32_t ssrc);
+
   [[deprecated]] int64_t TimeUntilNextProcess();
   [[deprecated]] void Process();
 
diff --git a/modules/congestion_controller/receive_side_congestion_controller.cc b/modules/congestion_controller/receive_side_congestion_controller.cc
index e495a4d..3f337f8 100644
--- a/modules/congestion_controller/receive_side_congestion_controller.cc
+++ b/modules/congestion_controller/receive_side_congestion_controller.cc
@@ -167,6 +167,20 @@
   }
 }
 
+DataRate ReceiveSideCongestionController::LatestReceiveSideEstimate() const {
+  std::vector<uint32_t> unused_ssrcs;
+  uint32_t bitrate_bps = 0;
+  if (remote_bitrate_estimator_.LatestEstimate(&unused_ssrcs, &bitrate_bps)) {
+    return DataRate::BitsPerSec(bitrate_bps);
+  } else {
+    return DataRate::Zero();
+  }
+}
+
+void ReceiveSideCongestionController::RemoveStream(uint32_t ssrc) {
+  remote_bitrate_estimator_.RemoveStream(ssrc);
+}
+
 void ReceiveSideCongestionController::OnRttUpdate(int64_t avg_rtt_ms,
                                                   int64_t max_rtt_ms) {
   remote_bitrate_estimator_.OnRttUpdate(avg_rtt_ms, max_rtt_ms);
diff --git a/test/fuzzers/congestion_controller_feedback_fuzzer.cc b/test/fuzzers/congestion_controller_feedback_fuzzer.cc
index 06a73b0..e266b85 100644
--- a/test/fuzzers/congestion_controller_feedback_fuzzer.cc
+++ b/test/fuzzers/congestion_controller_feedback_fuzzer.cc
@@ -26,7 +26,6 @@
       &clock,
       absl::bind_front(&PacketRouter::SendCombinedRtcpPacket, &packet_router),
       absl::bind_front(&PacketRouter::SendRemb, &packet_router), nullptr);
-  RemoteBitrateEstimator* rbe = cc.GetRemoteBitrateEstimator(true);
   RTPHeader header;
   header.ssrc = ByteReader<uint32_t>::ReadBigEndian(&data[i]);
   i += sizeof(uint32_t);
@@ -43,11 +42,11 @@
     header.extension.transportSequenceNumber =
         ByteReader<uint16_t>::ReadBigEndian(&data[i]);
     i += sizeof(uint16_t);
-    rbe->IncomingPacket(arrival_time_ms, payload_size, header);
+    cc.OnReceivedPacket(arrival_time_ms, payload_size, header);
     clock.AdvanceTimeMilliseconds(5);
     arrival_time_ms += ByteReader<uint8_t>::ReadBigEndian(&data[i]);
     i += sizeof(uint8_t);
+    cc.MaybeProcess();
   }
-  rbe->Process();
 }
 }  // namespace webrtc
