diff --git a/scparseirc/__init__.py b/scparseirc/__init__.py
index 6d92eb0..c19cc1b 100644
--- a/scparseirc/__init__.py
+++ b/scparseirc/__init__.py
@@ -23,6 +23,9 @@ class channel: # Channel object
     def info_set(self, topic:str, modes:str): # Socket will automatically initialize the channel object
         self.is_init = True
         self.topic, self.modes = topic, modes
+class user: # User object
+    def __init__(self, name:str, system:bool=False, realname:str|None=None, username:str|None=None, host:str|None=None):
+        self.name, self.system, self.realname, self.username = name,system,realname,username
 class IRCSession: # Actual IRC session
     messages = [] # Cached messages
     raw_text = "" # Cached RAW data
@@ -78,18 +81,22 @@ class IRCSession: # Actual IRC session
             r = self.socket.recv(2040).decode()
         self.raw_text += r
         self.parseall()
-        print(r)
         if r.find("PING") != -1:
             self.send(
                "PONG " + r.split()[1] + "\r\n"
             )
         if not r:
             self.connected = False
+        return r
     def parseall(self): # Parse all of the fetched raw data, in a thread.
         threading.Thread(target=self.parse, kwargs={"content": self.raw_text})
     def parse(self, content:str):
         for i in content.replace("\r\n", "\n").split("\n"):
-            pass
+            spaced = i.split(" ")
+            system_ = not "@" in i[0]
+            if len(i) > 4:
+                if i[1] == "NOTICE":
+                    self.messages.append(systemMessage(content=i[3][1:],user=user(name=i[0][1:] if not "@" in i[0] else i[0][1:].split("!")[0], system=system_), typ="notice", mention=not system_))
     def alive(self): # NOT FINISHED: To minimize exceptions, the client can ask the object if the socket connection is still alive.
         return False
     def whois(self, nick:str): # NOT FINISHED: Try to /whois the user, will return a user() object or None.