'Keyboard-controlled command input field.'
     _y: int
     _width: int
-    _prompt: str = _PROMPT_TEMPLATE
-    _history_idx = 0
+    _history_idx: int = 0
     _input_buffer_unsafe: str
     _cursor_x: int
 
         self._write(to_write[cursor_x_to_write + 1:])
         return True
 
+    @property
+    def _prompt(self) -> str:
+        return _PROMPT_TEMPLATE
+
     def _archive_prompt(self) -> None:
         self.append(self._input_buffer)
         self._reset_buffer('')
 
 class _ConnectionPromptWidget(_PromptWidget):
     'PromptWidget with attributes, methods for dealing with an IrcConnection.'
-    _nickname: str = ''
+    _nick: str = ''
+    _nick_confirmed: bool = False
+
+    @property
+    def _prompt(self) -> str:
+        return ((' ' if self._nick_confirmed else '?')
+                + self._nick
+                + super()._prompt)
 
     def update_prompt(self,
                       nick_confirmed=False,
                       ) -> None:
         'Update nickname-relevant knowledge to go into prompt string.'
         self.tainted = True
-        self._prompt = ''
+        self._nick_confirmed = nick_confirmed
         if nick:
-            self._nickname = nick
-        if self._nickname:
-            self._prompt += ' ' if nick_confirmed else '?'
-            self._prompt += self._nickname
-        self._prompt += _PROMPT_TEMPLATE
+            self._nick = nick
 
 
 class _Window(_Widget):