other.prefix = self._prefix
 
 
-@dataclass
 class _ClientWindow(Window, ClientQueueMixin):
     prompt: _ClientPromptWidget
 
 
     'Communication unit between threads.'
 
 
+QuitEvent = type('QuitEvent', (Event,), {})
+
+
 @dataclass
 class AffectiveEvent(Event, ABC):
     'For Events that are to affect other objects.'
     exception: Exception
 
 
-@dataclass
-class QuitEvent(Event):
-    'To break main loop towards.'
-
-
 @dataclass
 class QueueMixin:
     'Adds SimpleQueue addressable via ._put(Event).'
 
         return self._raw
 
 
-class IrcConnAbortException(Exception):
+class IrcConnAbortException(BaseException):
     'Thrown by BaseIrcConnection on expectable connection failures.'
 
 
 
 from abc import ABC, abstractmethod
 from base64 import b64decode
 from contextlib import contextmanager
-from dataclasses import dataclass
 from inspect import _empty as inspect_empty, signature, stack
 from signal import SIGWINCH, signal
 from typing import Callable, Generator, Iterator, NamedTuple, Optional
             widget.draw()
 
 
-@dataclass
 class TuiEvent(AffectiveEvent):
     'To affect TUI.'