(r'\\', '\\'))
 
 
+class ConnIdxMixin:
+    'Collects a Connection ID at .conn_idx.'
+
+    def __init__(self, conn_idx: int, **kwargs) -> None:
+        super().__init__(**kwargs)
+        self.conn_idx = conn_idx
+
+
 @dataclass
 class LoginNames:
     'Collects the names needed on server connect for USER, NICK commands.'
     payload: tuple[str, LoginNames]
 
 
-class ConnEvent(Event):
-    'Event with connection ID at .conn_idx'
-
-    def __init__(self, conn_idx: int, **kwargs) -> None:
-        super().__init__(**kwargs)
-        self.conn_idx = conn_idx
+class ConnEvent(Event, ConnIdxMixin):
+    'Event with .conn_idx.'
 
 
 class InitConnWindowEvent(ConnEvent, PayloadMixin):
     payload: 'IrcMessage'
 
 
-class BroadcastConnMixin(BroadcastMixin):
+class BroadcastConnMixin(BroadcastMixin, ConnIdxMixin):
     'Provides .broadcast_conn on classes that have .conn_idx defined.'
 
-    def __init__(self, conn_idx: int, **kwargs) -> None:
-        super().__init__(**kwargs)
-        self.conn_idx = conn_idx
-
     def broadcast_conn[E: ConnEvent](self,
                                      event_class: type[E],
                                      *args, **kwargs