yield str(blessed_key)
 
 
+class LoginNames(NamedTuple):
+    'Collects the names needed on server connect for USER, NICK commands.'
+    user: str
+    nick: str
+    real: str
+
+
 class IrcConnection:
     'Abstracts socket connection, loop over it, and handling messages from it.'
 
                  q_to_main: EventQueue,
                  idx: int,
                  hostname: str,
-                 login: tuple[str, str, str]
+                 login: LoginNames,
                  ) -> None:
         self._idx = idx
         self._q_to_main = q_to_main
                      realname: str
                      ) -> None:
         'Send INIT_CONNECT command to main loop.'
-        self.broadcast(EventType.INIT_CONNECT,
-                       (hostname, (username, nickname, realname)))
+        login = LoginNames(user=username, nick=nickname, real=realname)
+        self.broadcast(EventType.INIT_CONNECT, (hostname, login))
 
     def cmd__prompt_enter(self) -> None:
         'Get prompt content from .window.prompt.enter, parse to & run command.'
             return False
         if event.type_ == EventType.CONNECTED:
             login = event.payload[1]
-            self._send('USER', (login[0], '0', '*', login[2]))
-            self._send('NICK', (login[1],))
+            self._send('USER', (login.user, '0', '*', login.real))
+            self._send('NICK', (login.nick,))
         return True
 
     def process_bonus(self, yielded: str) -> None: