diff --git a/rust/bt-broadcast-assistant/src/assistant.rs b/rust/bt-broadcast-assistant/src/assistant.rs
index 19102c7..2297dba 100644
--- a/rust/bt-broadcast-assistant/src/assistant.rs
+++ b/rust/bt-broadcast-assistant/src/assistant.rs
@@ -108,10 +108,7 @@
     // Creates a broadcast assistant and sets it up to be ready
     // for broadcast source scanning. Clients must use the `start`
     // method to poll the event stream for scan results.
-    pub fn new(central: T::Central) -> Self
-    where
-        <T as bt_gatt::GattTypes>::ScanResultStream: std::marker::Send,
-    {
+    pub fn new(central: T::Central) -> Self {
         let scan_result_stream = central.scan(&Self::scan_filters());
         Self {
             central,
@@ -132,14 +129,11 @@
     /// Start broadcast assistant. Returns EventStream that the upper layer can
     /// poll. Upper layer can call methods on BroadcastAssistant based on the
     /// events it sees.
-    pub fn start(&mut self) -> Result<EventStream, Error>
-    where
-        <T as bt_gatt::GattTypes>::ScanResultStream: std::marker::Send,
-    {
+    pub fn start(&mut self) -> Result<EventStream<T>, Error> {
         if self.scan_stream.is_none() {
             return Err(Error::AlreadyStarted);
         }
-        Ok(EventStream::new(self.scan_stream.take().unwrap(), self.broadcast_sources.clone()))
+        Ok(EventStream::<T>::new(self.scan_stream.take().unwrap(), self.broadcast_sources.clone()))
     }
 
     pub fn scan_for_scan_delegators(&mut self) -> T::ScanResultStream {
diff --git a/rust/bt-broadcast-assistant/src/assistant/event.rs b/rust/bt-broadcast-assistant/src/assistant/event.rs
index 4990e9c..3f781f6 100644
--- a/rust/bt-broadcast-assistant/src/assistant/event.rs
+++ b/rust/bt-broadcast-assistant/src/assistant/event.rs
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+use core::pin::Pin;
 use futures::stream::{FusedStream, Stream, StreamExt};
 use std::sync::Arc;
 use std::task::Poll;
@@ -11,7 +12,6 @@
 use bt_common::packet_encoding::Error as PacketError;
 use bt_common::PeerId;
 use bt_gatt::central::{AdvertisingDatum, ScanResult};
-use core::pin::Pin;
 
 use crate::assistant::{
     DiscoveredBroadcastSources, Error, BASIC_AUDIO_ANNOUNCEMENT_SERVICE,
@@ -28,17 +28,16 @@
 /// A stream of discovered broadcast sources.
 /// This stream polls the scan results from GATT client to discover
 /// available broadcast sources.
-pub struct EventStream {
-    // Central scan result stream for finding broadcast sources.
-    scan_result_stream: Pin<Box<dyn Stream<Item = Result<ScanResult, bt_gatt::types::Error>>>>,
+pub struct EventStream<T: bt_gatt::GattTypes> {
+    scan_result_stream: Pin<Box<<T as bt_gatt::GattTypes>::ScanResultStream>>,
     terminated: bool,
 
     broadcast_sources: Arc<DiscoveredBroadcastSources>,
 }
 
-impl EventStream {
+impl<T: bt_gatt::GattTypes> EventStream<T> {
     pub(crate) fn new(
-        scan_result_stream: impl Stream<Item = Result<ScanResult, bt_gatt::types::Error>> + 'static,
+        scan_result_stream: T::ScanResultStream,
         broadcast_sources: Arc<DiscoveredBroadcastSources>,
     ) -> Self {
         Self {
@@ -72,13 +71,13 @@
     }
 }
 
-impl FusedStream for EventStream {
+impl<T: bt_gatt::GattTypes> FusedStream for EventStream<T> {
     fn is_terminated(&self) -> bool {
         self.terminated
     }
 }
 
-impl Stream for EventStream {
+impl<T: bt_gatt::GattTypes> Stream for EventStream<T> {
     type Item = Result<Event, Error>;
 
     fn poll_next(
@@ -137,16 +136,16 @@
 
     use bt_common::core::{AddressType, AdvertisingSetId};
     use bt_gatt::central::{AdvertisingDatum, PeerName};
-    use bt_gatt::test_utils::ScannedResultStream;
+    use bt_gatt::test_utils::{FakeTypes, ScannedResultStream};
     use bt_gatt::types::Error as BtGattError;
     use bt_gatt::types::GattError;
 
-    fn setup_stream() -> (EventStream, ScannedResultStream) {
+    fn setup_stream() -> (EventStream<FakeTypes>, ScannedResultStream) {
         let fake_scan_result_stream = ScannedResultStream::new();
         let broadcast_sources = DiscoveredBroadcastSources::new();
 
         (
-            EventStream::new(fake_scan_result_stream.clone(), broadcast_sources),
+            EventStream::<FakeTypes>::new(fake_scan_result_stream.clone(), broadcast_sources),
             fake_scan_result_stream,
         )
     }
