class IrcMessage:
     'Properly structured representation of IRC message as per IRCv3 spec.'
+    _raw: Optional[str] = None
 
     def __init__(self,
                  verb: str,
                  parameters: Optional[list[str]] = None,
                  source: str = '',
-                 tags: Optional[dict[str, str]] = None,
-                 raw: Optional[str] = None
+                 tags: Optional[dict[str, str]] = None
                  ) -> None:
-        self._raw = raw
         self.verb: str = verb
         self.parameters: list[str] = parameters or []
         self.source: str = source
                 if stage.prefix_char:
                     continue
             harvest[stage.name] += char
-        return cls(**{s.name: s.processor(harvest[s.name]) for s in stages},
-                   raw=raw_msg)
+        msg = cls(**{s.name: s.processor(harvest[s.name]) for s in stages})
+        msg._raw = raw_msg
+        return msg
 
     @property
     def raw(self) -> str: