**kwargs)
 
     def _make_recv_event(self, msg: IrcMessage) -> ClientEvent:
-        return ClientEvent.affector()(
-                client_id=self.client_id, t_method='handle_msg').kw(msg=msg)
+        return ClientEvent.affector('handle_msg', client_id=self.client_id
+                                    ).kw(msg=msg)
 
 
 @dataclass
     'To QueueMixin adds _cput to send ClientEvent for self.'
 
     def _cput(self, t_method: str, **kwargs) -> None:
-        self._put(ClientEvent.affector()(
-            client_id=self.client_id, t_method=t_method).kw(**kwargs))
+        self._put(ClientEvent.affector(t_method, client_id=self.client_id
+                                       ).kw(**kwargs))
 
 
 @dataclass
 
 class _ClientKnowingTui(Client):
 
     def _ctput(self, t_method: str, **kwargs) -> None:
-        self._put(TuiEvent.affector()(t_method).kw(client_id=self.client_id
-                                                   ).kw(**kwargs))
+        self._put(TuiEvent.affector(t_method).kw(client_id=self.client_id
+                                                 ).kw(**kwargs))
 
     def _log(self, msg: str, stream: str = STREAM_SERVER) -> None:
         self._ctput('log_for_client', stream=stream, msg=msg)
 
         'To be run by main loop on target.'
 
     @classmethod
-    def affector(cls):
-        '''Return subclass whose .affect calls target method on **kwargs.
+    def affector(cls, t_method: str, **kwargs):
+        '''Return instance of subclass affecting target via t_method.
 
         This will often be more convenient than a full subclass definition,
         which mostly only matters for what the main loop gotta differentiate.
         '''
-        class _Affector:
-            def __init__(self, t_method: str, **kwargs) -> None:
-                super().__init__(**kwargs)
-                self.t_method = t_method
-                self.kwargs: dict[str, Any] = {}
-
-            def kw(self, **kwargs) -> Self:
-                'Collect .kwargs expanded, return self for chaining.'
-                for k, v in kwargs.items():
-                    self.kwargs[k] = v
-                return self
-
-            def affect(self, target) -> None:
-                'Call target.t_method(**.kwargs).'
-                getattr(target, self.t_method)(**self.kwargs)
-
-        return type(f'{cls.__name__}·Affector', (_Affector, cls), {})
+        def wrap():  # else current mypy throw [valid-type] on 'Variable "cls"'
+            class _Affector(cls):
+                def __init__(self, t_method: str, **kwargs) -> None:
+                    super().__init__(**kwargs)
+                    self.t_method = t_method
+                    self.kwargs: dict[str, Any] = {}
+
+                def kw(self, **kwargs) -> Self:
+                    'Collect .kwargs expanded, return self for chaining.'
+                    for k, v in kwargs.items():
+                        self.kwargs[k] = v
+                    return self
+
+                def affect(self, target) -> None:
+                    'Call target.t_method(**.kwargs).'
+                    getattr(target, self.t_method)(**self.kwargs)
+
+            return _Affector
+
+        return wrap()(t_method=t_method, **kwargs)
 
 
 @dataclass