diff --git a/.idea/modules.xml b/.idea/modules.xml
index 2e427f8517ddb10ed85217b5455d71f2f793816c..1fe4435f739a457406c6c8482d6bbcec0854e0aa 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,11 +2,7 @@
 <project version="4">
   <component name="ProjectModuleManager">
     <modules>
-<<<<<<< HEAD
       <module fileurl="file://$PROJECT_DIR$/infinitymonkeys.iml" filepath="$PROJECT_DIR$/infinitymonkeys.iml" />
-=======
-      <module fileurl="file://$PROJECT_DIR$/comp90015-dsass2-infinitymonkeys-remaster.iml" filepath="$PROJECT_DIR$/comp90015-dsass2-infinitymonkeys-remaster.iml" />
->>>>>>> 37a6af2e6d36ab514d01a93dbd5be6538a2572c7
     </modules>
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 3cfaeba47baf68d9add8e3780696b5c6d4da1803..d977b687b3c340eccc8cf30a665528eea8e5f65f 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,53 +2,9 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="688d774d-cfc7-4b0d-b00c-5ca931aba600" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/.idea/$PRODUCT_WORKSPACE_FILE$" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/.gitignore" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/comp90015-dsass2-infinitymonkeys-remaster.iml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/ChatScreen$1.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/ChatScreen.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/ColorPallete.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/DrawingArea$1.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/DrawingArea$Mode.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/DrawingArea.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/MenuBar.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/PaintGUI$1.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/PaintGUI.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/StartScreen$1.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/StartScreen.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/ToolBar.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/GUI/Tools.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/LICENSE" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/META-INF/comp90015-dsass2-infinitymonkeys-remaster.kotlin_module" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/client/ChatUpdate.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/client/Client.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/client/ClientUpdate.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/client/DrawingUpdate.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/AbstractLayout.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/DimensionInfo.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/GridConstraints.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/GridLayoutManager.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/HorizontalInfo.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/LayoutState.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/Spacer.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/SupportCode$TextWithMnemonic.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/SupportCode.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/Util.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/com/intellij/uiDesigner/core/VerticalInfo.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/remote/IChatController.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/remote/IChatUpdate.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/remote/IClientController.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/remote/IClientUpdate.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/remote/IDrawingController.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/remote/IDrawingUpdate.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/server/ChatController.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/server/ClientController.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/server/DrawingController.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/server/Server.class" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/out/production/comp90015-dsass2-infinitymonkeys-remaster/server/User.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/GUI/ChatScreen.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GUI/ChatScreen.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/server/User.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/server/User.java" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/out/" />
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -63,115 +19,11 @@
   </component>
   <component name="FileEditorManager">
     <leaf>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/server/ChatController.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-939">
-              <caret line="9" column="45" selection-start-line="9" selection-start-column="45" selection-end-line="9" selection-end-column="45" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/server/ClientController.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-85">
-              <caret line="27" selection-start-line="27" selection-end-line="27" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/client/ClientUpdate.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="238">
-              <caret line="38" selection-start-line="38" selection-end-line="38" />
-            </state>
-          </provider>
-        </entry>
-      </file>
       <file pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/src/GUI/ChatScreen.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="208">
-              <caret line="54" selection-start-line="54" selection-end-line="54" />
-              <folding>
-                <element signature="e#1789#2635#0" expanded="true" />
-                <element signature="e#2634#2635#0" expanded="true" />
-                <element signature="e#1716#1717#0" expanded="true" />
-                <element signature="e#1779#1780#0" expanded="true" />
-                <element signature="e#1823#1824#0" expanded="true" />
-                <element signature="e#1860#1861#0" expanded="true" />
-                <element signature="e#1915#1916#0" expanded="true" />
-                <element signature="e#1959#1960#0" expanded="true" />
-                <element signature="e#1998#1999#0" expanded="true" />
-                <element signature="e#2033#2034#0" expanded="true" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/client/ChatUpdate.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="357">
-              <caret line="25" column="65" selection-start-line="25" selection-start-column="65" selection-end-line="25" selection-end-column="65" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/server/User.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="187">
-              <caret line="13" selection-start-line="13" selection-end-line="13" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/remote/IClientController.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="187">
-              <caret line="12" selection-start-line="12" selection-end-line="12" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/remote/IClientUpdate.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="170">
-              <caret line="12" selection-start-line="12" selection-end-line="12" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/client/Client.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="119">
-              <caret line="133" column="104" selection-start-line="133" selection-start-column="104" selection-end-line="133" selection-end-column="104" />
-              <folding>
-                <element signature="e#892#893#0" expanded="true" />
-                <element signature="e#923#924#0" expanded="true" />
-                <element signature="e#969#970#0" expanded="true" />
-                <element signature="e#1002#1003#0" expanded="true" />
-                <element signature="e#1059#1060#0" expanded="true" />
-                <element signature="e#1102#1103#0" expanded="true" />
-                <element signature="e#1157#1158#0" expanded="true" />
-                <element signature="e#1194#1195#0" expanded="true" />
-                <element signature="e#1252#1253#0" expanded="true" />
-                <element signature="e#1291#1292#0" expanded="true" />
-                <element signature="e#1427#1428#0" expanded="true" />
-                <element signature="e#1467#1468#0" expanded="true" />
-                <element signature="e#1506#1507#0" expanded="true" />
-                <element signature="e#1542#1543#0" expanded="true" />
-                <element signature="e#1604#1605#0" expanded="true" />
-                <element signature="e#1654#1655#0" expanded="true" />
-                <element signature="e#3373#3374#0" expanded="true" />
-                <element signature="e#3411#3412#0" expanded="true" />
-              </folding>
+            <state relative-caret-position="323">
+              <caret line="81" selection-start-line="81" selection-end-line="81" />
             </state>
           </provider>
         </entry>
@@ -209,12 +61,12 @@
         <option value="$PROJECT_DIR$/src/server/ChatController.java" />
         <option value="$PROJECT_DIR$/src/remote/IChatController.java" />
         <option value="$PROJECT_DIR$/src/remote/IChatUpdate.java" />
-        <option value="$PROJECT_DIR$/src/server/User.java" />
         <option value="$PROJECT_DIR$/src/server/ClientController.java" />
         <option value="$PROJECT_DIR$/src/remote/IClientController.java" />
         <option value="$PROJECT_DIR$/src/client/ClientUpdate.java" />
         <option value="$PROJECT_DIR$/src/remote/IClientUpdate.java" />
         <option value="$PROJECT_DIR$/src/GUI/ChatScreen.form" />
+        <option value="$PROJECT_DIR$/src/server/User.java" />
         <option value="$PROJECT_DIR$/src/GUI/ChatScreen.java" />
       </list>
     </option>
@@ -267,13 +119,6 @@
               <item name="GUI" type="462c0819:PsiDirectoryNode" />
               <item name="ChatScreen" type="e9f4de52:FormNode" />
             </path>
-            <path>
-              <item name="infinitymonkeys" type="b2602c69:ProjectViewProjectNode" />
-              <item name="infinitymonkeys" type="462c0819:PsiDirectoryNode" />
-              <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="GUI" type="462c0819:PsiDirectoryNode" />
-              <item name="StartScreen" type="e9f4de52:FormNode" />
-            </path>
             <path>
               <item name="infinitymonkeys" type="b2602c69:ProjectViewProjectNode" />
               <item name="infinitymonkeys" type="462c0819:PsiDirectoryNode" />
@@ -367,7 +212,7 @@
       <option name="number" value="Default" />
       <option name="presentableId" value="Default" />
       <updated>1571631720382</updated>
-      <workItem from="1571631723795" duration="16817000" />
+      <workItem from="1571631723795" duration="17601000" />
     </task>
     <task id="LOCAL-00001" summary="Changed the join method to send over a reference of the ClientUpdate Interface">
       <created>1571646862883</created>
@@ -380,7 +225,7 @@
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="16817000" />
+    <option name="totallyTimeSpent" value="17601000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="-7" y="-7" width="1295" height="704" extended-state="6" />
@@ -394,7 +239,7 @@
       <window_info id="JavaEE:App" side_tool="true" />
       <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24939272" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
-      <window_info anchor="bottom" id="Terminal" visible="true" weight="0.124125876" />
+      <window_info anchor="bottom" id="Terminal" visible="true" weight="0.26923078" />
       <window_info anchor="bottom" id="Docker" show_stripe_button="false" />
       <window_info anchor="bottom" id="Event Log" side_tool="true" />
       <window_info anchor="bottom" id="Messages" weight="0.32867134" />
@@ -484,17 +329,44 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/server/User.java">
+    <entry file="file://$PROJECT_DIR$/src/GUI/ChatScreen.form">
+      <provider selected="true" editor-type-id="ui-designer" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/needsDebugging/client/ChatUpdate.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="68">
+          <caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/client/ClientUpdate.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="663">
+          <caret line="39" column="31" lean-forward="true" selection-start-line="39" selection-start-column="31" selection-end-line="39" selection-end-column="31" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/server/ChatController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-939">
+          <caret line="9" column="45" selection-start-line="9" selection-start-column="45" selection-end-line="9" selection-end-column="45" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/remote/IClientController.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="187">
-          <caret line="13" selection-start-line="13" selection-end-line="13" />
+          <caret line="12" selection-start-line="12" selection-end-line="12" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/client/ChatUpdate.java">
+    <entry file="file://$PROJECT_DIR$/src/remote/IClientUpdate.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="357">
-          <caret line="25" column="65" selection-start-line="25" selection-start-column="65" selection-end-line="25" selection-end-column="65" />
+        <state relative-caret-position="170">
+          <caret line="12" selection-start-line="12" selection-end-line="12" />
         </state>
       </provider>
     </entry>
@@ -525,67 +397,34 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/server/ChatController.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-939">
-          <caret line="9" column="45" selection-start-line="9" selection-start-column="45" selection-end-line="9" selection-end-column="45" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/remote/IClientUpdate.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="170">
-          <caret line="12" selection-start-line="12" selection-end-line="12" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/client/ClientUpdate.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="238">
-          <caret line="38" selection-start-line="38" selection-end-line="38" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/GUI/ChatScreen.form">
-      <provider selected="true" editor-type-id="ui-designer" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/remote/IClientController.java">
+    <entry file="file://$PROJECT_DIR$/src/client/ChatUpdate.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="187">
-          <caret line="12" selection-start-line="12" selection-end-line="12" />
+        <state relative-caret-position="114">
+          <caret line="25" column="65" selection-start-line="25" selection-start-column="65" selection-end-line="25" selection-end-column="65" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/needsDebugging/client/ChatUpdate.java">
+    <entry file="file://$PROJECT_DIR$/src/server/User.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="68">
-          <caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
+        <state relative-caret-position="186">
+          <caret line="47" lean-forward="true" selection-start-line="47" selection-end-line="47" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/server/ClientController.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-85">
-          <caret line="27" selection-start-line="27" selection-end-line="27" />
+        <state relative-caret-position="-1602">
+          <caret line="12" column="13" selection-start-line="12" selection-start-column="13" selection-end-line="12" selection-end-column="13" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/GUI/ChatScreen.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="208">
-          <caret line="54" selection-start-line="54" selection-end-line="54" />
-          <folding>
-            <element signature="e#1789#2635#0" expanded="true" />
-            <element signature="e#2634#2635#0" expanded="true" />
-            <element signature="e#1716#1717#0" expanded="true" />
-            <element signature="e#1779#1780#0" expanded="true" />
-            <element signature="e#1823#1824#0" expanded="true" />
-            <element signature="e#1860#1861#0" expanded="true" />
-            <element signature="e#1915#1916#0" expanded="true" />
-            <element signature="e#1959#1960#0" expanded="true" />
-            <element signature="e#1998#1999#0" expanded="true" />
-            <element signature="e#2033#2034#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="323">
+          <caret line="81" selection-start-line="81" selection-end-line="81" />
         </state>
       </provider>
     </entry>
diff --git a/src/GUI/ApplicationMain.java b/src/GUI/ApplicationMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..6c35fece617762f9bc54f63078cf3fc41c3c9dfc
--- /dev/null
+++ b/src/GUI/ApplicationMain.java
@@ -0,0 +1,72 @@
+package GUI;
+
+import client.Client;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.rmi.RemoteException;
+
+public class ApplicationMain extends JPanel {
+    Client client;
+    ChatScreen chatScreen;
+    PaintGUI paintGUI;
+    JFrame frame;
+
+    public ChatScreen getChatScreen() { return chatScreen; }
+
+    public PaintGUI getPaintGUI() { return paintGUI; }
+
+    public JFrame getFrame() {
+        return frame;
+    }
+
+    public ApplicationMain(Client client) {
+        this.client = client;
+        this.chatScreen = new ChatScreen(client);
+        this.paintGUI = new PaintGUI(client);
+    }
+
+    public void createAndShowGUI() {
+        frame = new JFrame("Application Main");
+        JFrame.setDefaultLookAndFeelDecorated(true);
+        Container content = frame.getContentPane();
+        content.setLayout(new BorderLayout());
+        content.add(paintGUI.getGlobal(), BorderLayout.WEST);
+        content.add(chatScreen.panel2, BorderLayout.EAST);
+        SwingUtilities.getRootPane(chatScreen.getSendButton()).setDefaultButton(chatScreen.getSendButton());
+        frame.addWindowListener(new WindowAdapter()
+        {
+            @Override
+            public void windowClosing(WindowEvent arg0)
+            {
+                int answer = JOptionPane.showConfirmDialog(null,
+                        "Are you sure you want to quit the session?",
+                        "Shut down session", JOptionPane.YES_NO_OPTION);
+                System.out.println(answer);
+                if (answer == 0)
+                {
+                    System.out.println("Quitting session");
+                    try
+                    {
+                        client.getClientController().quit(client.getUserName());
+                    }
+                    catch (RemoteException e)
+                    {
+                        e.printStackTrace();
+                    }
+                    System.exit(0);
+                }
+            }
+        });
+
+        frame.setSize(1200, 700);
+        frame.setLocationRelativeTo( null );
+        frame.setResizable(false);
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        frame.pack();
+        frame.setVisible(true);
+    }
+
+}
diff --git a/src/GUI/ChatScreen.form b/src/GUI/ChatScreen.form
index 9d8893e963fd7589e8246cf21b7735b63c75c9e6..baeed115748181b31d550c0aacfc5dc6db17fe1e 100644
--- a/src/GUI/ChatScreen.form
+++ b/src/GUI/ChatScreen.form
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="GUI.ChatScreen">
-  <grid id="27dc6" binding="panel2" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+  <grid id="27dc6" binding="panel2" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
     <margin top="0" left="0" bottom="0" right="0"/>
     <constraints>
       <xy x="20" y="20" width="1200" height="1200"/>
@@ -8,14 +8,14 @@
     <properties>
       <maximumSize width="-1" height="-1"/>
       <minimumSize width="-1" height="-1"/>
-      <preferredSize width="1200" height="600"/>
+      <preferredSize width="700" height="600"/>
     </properties>
     <border type="none"/>
     <children>
       <grid id="b37e3" binding="othersPanel" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
         <margin top="0" left="0" bottom="0" right="0"/>
         <constraints>
-          <grid row="1" column="1" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
+          <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="1" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
         </constraints>
         <properties/>
         <border type="none"/>
@@ -195,15 +195,6 @@
           </grid>
         </children>
       </grid>
-      <grid id="be22c" binding="drawingPanel" custom-create="true" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
-        <margin top="0" left="0" bottom="0" right="0"/>
-        <constraints>
-          <grid row="0" column="0" row-span="2" col-span="1" vsize-policy="3" hsize-policy="1" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
-        </constraints>
-        <properties/>
-        <border type="none" title="Drawing Area"/>
-        <children/>
-      </grid>
     </children>
   </grid>
 </form>
diff --git a/src/GUI/ChatScreen.java b/src/GUI/ChatScreen.java
index 8dda5bb827736fa34432e329ad2647adec928766..ead543eed4ae0c187f108bed0e33e5d2aa4f55ad 100644
--- a/src/GUI/ChatScreen.java
+++ b/src/GUI/ChatScreen.java
@@ -5,17 +5,16 @@ import remote.IChatController;
 import remote.IClientController;
 
 import javax.swing.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
+import java.awt.event.*;
 import java.rmi.RemoteException;
 
 public class ChatScreen {
 
     public JPanel panel2;
+
     private JButton sendButton;
-    private JPanel drawingPanel;
+
+    //    private JPanel drawingPanel;
     private JPanel othersPanel;
     private JComboBox sendMessageToComboBox;
     private JTextArea chatDisplayBox;
@@ -34,58 +33,29 @@ public class ChatScreen {
     private JButton exitThisRoomButton;
     private JButton quitButton;
     private JFrame frame;
+    public Client getClient() {
+        return client;
+    }
 
-    private Client client;
+    public Client client;
 
 
     public ChatScreen(Client client)
     {
         this.client = client;
-        yourNameDisplay.setText(client.getUserName());
-//        sentMessageToComboBox.addItem(client.getUserName());
-        quitButton.addActionListener(actionListener);
+        exitThisRoomButton.addActionListener(actionListener);
         sendButton.addActionListener(actionListener);
-        frame = new JFrame("Application");
-        frame.setContentPane(panel2);
-        createUIComponents();
-        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-        frame.pack();
-        frame.setResizable(false);
-        frame.setVisible(true);
-
-        SwingUtilities.getRootPane(sendButton).setDefaultButton(sendButton);
-
-        frame.addWindowListener(new WindowAdapter()
-        {
-            @Override
-            public void windowClosing(WindowEvent arg0)
-            {
-                int answer = JOptionPane.showConfirmDialog(null,
-                        "Are you sure you want to quit the session?",
-                        "Shut down session", JOptionPane.YES_NO_OPTION);
-                System.out.println(answer);
-                if (answer == 0)
-                {
-                    System.out.println("Quitting session");
-                    try
-                    {
-                        client.getClientController().quit(client.getUserName());
-                    }
-                    catch (RemoteException e)
-                    {
-                        e.printStackTrace();
-                    }
-                    System.exit(0);
-                }
-            }
-        });
-
+        yourNameDisplay.setText(client.getUserName());
+//        drawingPanel = new PaintGUI(client);
+//        SwingUtilities.getRootPane(sendButton).setDefaultButton(sendButton);
     }
+    
 
-    private void createUIComponents() {
-        drawingPanel = new PaintGUI(client).getGlobal();
+    public JButton getSendButton() {
+        return sendButton;
     }
 
+
     public JTextArea getChatDisplayBox() {
         return chatDisplayBox;
     }
@@ -95,9 +65,9 @@ public class ChatScreen {
         return sendMessageToComboBox;
     }
 
-    public JPanel getDrawingPanel() {
-        return drawingPanel;
-    }
+//    public JPanel getDrawingPanel() {
+//        return drawingPanel;
+//    }
 
 
     ActionListener actionListener = new ActionListener()
diff --git a/src/GUI/PaintGUI.java b/src/GUI/PaintGUI.java
index 2995d3be8c34304669416ed3df79c001f413c4e8..40a63589b23c67847eade7ad28d6ae306516d3fd 100644
--- a/src/GUI/PaintGUI.java
+++ b/src/GUI/PaintGUI.java
@@ -11,7 +11,6 @@ import java.io.File;
 public class PaintGUI extends JPanel {
 
     Client client;
-    ChatScreen chatScreen;
 
     String[] shapes = {"Freehand", "Line", "Circle", "Rectangle", "Oval", "Eraser"};
     String[] colors = {"Aqua", "Black", "Blue", "Fuchsia", "Gray", "Green", "Lime", "Maroon", "Navy", "Olive", "Purple", "Red", "Silver", "Teal", "White", "Yellow"};
@@ -33,7 +32,7 @@ public class PaintGUI extends JPanel {
         this.client = client;
 
 /// Main drawing area ///
-        drawingArea = new DrawingArea(this.client);
+        drawingArea = new DrawingArea(client);
 
 /// Set up main frame and container ///
         global.setLayout(new BorderLayout());
diff --git a/src/client/ChatUpdate.java b/src/client/ChatUpdate.java
index ea4baf8749f7885125bb1027a2f2b6263cfdfff3..2edc3ccdd3c5a1c5262fdc2107d9f28b74b556ce 100644
--- a/src/client/ChatUpdate.java
+++ b/src/client/ChatUpdate.java
@@ -30,7 +30,7 @@ public class ChatUpdate extends UnicastRemoteObject implements IChatUpdate, Seri
             outputString = fromClient + ": " + message + "\n";
         }
 
-        client.getChatScreen().getChatDisplayBox().append(outputString);
+        client.getApplicationMain().getChatScreen().getChatDisplayBox().append(outputString);
 
         //client.setReceivedMessage(message);
         //System.out.println(fromClient + ": " + message);
@@ -39,13 +39,13 @@ public class ChatUpdate extends UnicastRemoteObject implements IChatUpdate, Seri
 
     @Override
     public boolean notifyUserLogin(String fromClient) throws RemoteException {
-        client.getChatScreen().getChatDisplayBox().append(fromClient + " has joined the room.\n");
+        client.getApplicationMain().getChatScreen().getChatDisplayBox().append(fromClient + " has joined the room.\n");
         return true;
     }
 
     @Override
     public boolean notifyUserLogout(String fromClient) throws RemoteException {
-        client.getChatScreen().getChatDisplayBox().append(fromClient + " has left the room.\n");
+        client.getApplicationMain().getChatScreen().getChatDisplayBox().append(fromClient + " has left the room.\n");
         return true;
     }
 
diff --git a/src/client/Client.java b/src/client/Client.java
index b5c34ee2fb7f85c513dac93d4208a17c0d12623a..3edda911f8e581fa2eb7d576173e811ce6bb7abf 100644
--- a/src/client/Client.java
+++ b/src/client/Client.java
@@ -1,5 +1,6 @@
 package client;
 
+import GUI.ApplicationMain;
 import GUI.ChatScreen;
 import GUI.PaintGUI;
 import GUI.StartScreen;
@@ -19,38 +20,24 @@ public class Client
     private Registry registryServer;
     private IChatController chatController;
     private IClientController clientController;
-
     private IDrawingController drawingController;
 
     private ClientUpdate clientUpdate;
-
     private ChatUpdate chatUpdate;
     private DrawingUpdate drawingUpdate;
-    private StartScreen startScreen;
 
+    private StartScreen startScreen;
     private ChatScreen chatScreen;
     private PaintGUI paintGUI;
 
-    private String receivedMessage;
-
-    private String[] connectedUsers;
+    public ApplicationMain getApplicationMain() { return applicationMain; }
 
+    private ApplicationMain applicationMain;
 
-    public PaintGUI getPaintGUI() {
-        return paintGUI;
-    }
-
-
-    public ChatScreen getChatScreen()
-    {
-        return chatScreen;
-    }
+    public PaintGUI getPaintGUI() { return paintGUI; }
 
-    public void setConnectedUsers(String[] users)
-    {
-        this.connectedUsers = users;
-    }
 
+    public ChatScreen getChatScreen() { return chatScreen; }
 
     public IChatController getChatController()
     {
@@ -85,9 +72,11 @@ public class Client
         this.clientUpdate = new ClientUpdate(this);
         this.chatUpdate = new ChatUpdate(this);
         this.drawingUpdate = new DrawingUpdate(this);
-        this.startScreen = new StartScreen(this);
-        this.chatScreen = new ChatScreen(this);
-        this.paintGUI = new PaintGUI(this);
+//        this.startScreen = new StartScreen(this);
+//        this.chatScreen = new ChatScreen(this);
+//        this.paintGUI = new PaintGUI(this);
+        this.applicationMain = new ApplicationMain(this);
+
     }
 
     public static void main(String[] args)
@@ -96,8 +85,9 @@ public class Client
         {
             Client client = new Client(args[0]);
             client.connect();
-//            client.startScreen.go();
+//            client.getChatScreen().showGUI();
 //            client.getPaintGUI().showGUI();
+            client.getApplicationMain().createAndShowGUI();
         }
         catch (Exception e)
         {
@@ -105,22 +95,6 @@ public class Client
         }
     }
 
-//    public void doSomething()
-//    {
-////        new ChatScreen();
-//
-//        try
-//        {
-//            new ChatScreen(this);
-//            System.out.println("Sleeping...");
-//            TimeUnit.MINUTES.sleep(5);
-//        }
-//        catch(Exception e)
-//        {
-//            e.printStackTrace();
-//        }
-//    }
-
     public boolean connect()
     {
         try
@@ -145,14 +119,4 @@ public class Client
 
         return false;
     }
-
-    public String getReceivedMessage()
-    {
-        return receivedMessage;
-    }
-
-    public void setReceivedMessage(String receivedMessage)
-    {
-        this.receivedMessage = receivedMessage;
-    }
 }
\ No newline at end of file
diff --git a/src/client/ClientUpdate.java b/src/client/ClientUpdate.java
index 83967bc77631a406b91fd2c60dda30d076d7e279..aefdaf5e3e63106ee06a92b045f89c0f08b5a630 100644
--- a/src/client/ClientUpdate.java
+++ b/src/client/ClientUpdate.java
@@ -21,7 +21,7 @@ public class ClientUpdate extends UnicastRemoteObject implements IClientUpdate,
     @Override
     public boolean notifyClient(String fromClient, String newUsername) throws RemoteException
     {
-        client.getChatScreen().getSendMessageToComboBox().addItem(newUsername);
+        client.getApplicationMain().getChatScreen().getSendMessageToComboBox().addItem(newUsername);
 
         return true;
     }
@@ -31,7 +31,7 @@ public class ClientUpdate extends UnicastRemoteObject implements IClientUpdate,
     {
         //client.setConnectedUsers(users);
 
-        JComboBox userBox = client.getChatScreen().getSendMessageToComboBox();
+        JComboBox userBox = client.getApplicationMain().getChatScreen().getSendMessageToComboBox();
 
         userBox.removeAllItems();
 
diff --git a/src/client/DrawingUpdate.java b/src/client/DrawingUpdate.java
index d681f1aa85f9a116686ea320a10371c6f7d884b9..4b41c0285681b1674f9b35cc61336ca6d4451426 100644
--- a/src/client/DrawingUpdate.java
+++ b/src/client/DrawingUpdate.java
@@ -19,11 +19,11 @@ public class DrawingUpdate extends UnicastRemoteObject implements IDrawingUpdate
 
     @Override
     public boolean notifyDrawing(String fromClient, Shape drawing) throws RemoteException {
-        client.getPaintGUI().getDrawingArea().setDrawing(drawing);
-        client.getPaintGUI().getDrawingArea().repaint();
-        DrawingArea drawingArea = (DrawingArea) client.getChatScreen().getDrawingPanel().getComponent(1);
-        drawingArea.setDrawing(drawing);
-        drawingArea.repaint();
+        client.getApplicationMain().getPaintGUI().getDrawingArea().setDrawing(drawing);
+        client.getApplicationMain().getPaintGUI().getDrawingArea().repaint();
+//        DrawingArea drawingArea = (DrawingArea) client.getChatScreen().getDrawingPanel().getComponent(1);
+//        drawingArea.setDrawing(drawing);
+//        drawingArea.repaint();
         return false;
     }
 }
diff --git a/src/server/ClientController.java b/src/server/ClientController.java
index bcfd261f7da172aca929a6a4f291b39c277fb2b1..5e7638f48e3e3307b6929a968b425e40722575a2 100644
--- a/src/server/ClientController.java
+++ b/src/server/ClientController.java
@@ -1,9 +1,9 @@
 package server;
 
 import remote.IChatUpdate;
-import remote.IClientController;
 import remote.IClientUpdate;
 import remote.IDrawingUpdate;
+import remote.IClientController;
 
 import java.io.Serializable;
 import java.rmi.Remote;