diff --git a/controllerPackage/controller/__pycache__/controller.cpython-37.pyc b/controllerPackage/controller/__pycache__/controller.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ac52554555b3fb391841858302efa11bc76c55ff
Binary files /dev/null and b/controllerPackage/controller/__pycache__/controller.cpython-37.pyc differ
diff --git a/controllerPackage/controller/__pycache__/mobile.cpython-37.pyc b/controllerPackage/controller/__pycache__/mobile.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d1a13a4c900e5a3c3a82396f89b6d9954a43b3c5
Binary files /dev/null and b/controllerPackage/controller/__pycache__/mobile.cpython-37.pyc differ
diff --git a/controllerPackage/controller/controller.py b/controllerPackage/controller/controller.py
new file mode 100644
index 0000000000000000000000000000000000000000..38925f2b6e4405e146ccf5efb533b90d20b406d0
--- /dev/null
+++ b/controllerPackage/controller/controller.py
@@ -0,0 +1,58 @@
+import socketio
+from controller.mobile import Mobile
+
+class Controller:
+
+    def __init__(self,code = 'a1b2c3'):
+        # Room Code
+        self.code = code
+
+        # Socket IO Communication Protocol Definition
+        sio = socketio.Client()
+
+        @sio.event
+        def connect():
+            print("I'm connected!")
+
+        @sio.event
+        def connect_error():
+            print("The connection failed!")
+
+        @sio.event
+        def disconnect():
+            print("I'm disconnected!")
+
+        @sio.event(namespace='/'+code)
+        def message(data):
+            print('I received a message!')
+        
+        @sio.event(namespace='/'+code)
+        def multicast(data):
+            print('Multicast received!')
+            print(data)
+
+        @sio.on('my message',namespace='/'+code)
+        def on_message(data):
+            print('I received a message!')
+        
+        self.sio = sio
+        self.mobiles = {} # id:MOBILE
+
+    def connect(self):
+        global code
+        self.sio.connect('http://localhost',namespaces=['/'+self.code])
+        self.sio.emit('code', {'code': self.code})
+    
+    def disconnect(self):
+        self.sio.disconnect()
+    
+    def getMobiles(self):
+        return self.mobiles
+
+    def create_mobile(self,id):
+        self.mobiles[id] = Mobile(id)
+    
+    
+
+    
+    
diff --git a/controllerPackage/controller/mobile.py b/controllerPackage/controller/mobile.py
new file mode 100644
index 0000000000000000000000000000000000000000..b1355eacdaa9c53943980b0dc4089af9bb572071
--- /dev/null
+++ b/controllerPackage/controller/mobile.py
@@ -0,0 +1,22 @@
+class Mobile:
+    
+    def __init__(self,id,help=False):
+        self.id = id
+        self.help = help
+
+    def on_left_swipe(self):
+        if self.help:
+            print('[LEFT SWIPE DETECTED] You can overwrite on_left_swipe to handle it.')
+
+    def on_right_swipe(self):
+        if self.help:
+            print('[RIGHT SWIPE DETECTED] You can overwrite on_right_swipe to handle it.')
+
+    def on_up_swipe(self):
+        if self.help:
+            print('[UP SWIPE DETECTED] You can overwrite on_up_swipe to handle it.')
+            
+    def on_down_swipe(self):
+        if self.help:
+            print('[DOWN SWIPE DETECTED] You can overwrite on_down_swipe to handle it.')
+    
\ No newline at end of file
diff --git a/controllerPackage/test.py b/controllerPackage/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..e1ca7f4bbbcde61c79ab8965cc433aa87f1213d5
--- /dev/null
+++ b/controllerPackage/test.py
@@ -0,0 +1,8 @@
+from controller.controller import Controller
+from time import sleep
+
+c = Controller('a1b2c3')
+c.connect()
+print('luckly..')
+sleep(3)
+c.disconnect()