diff --git a/server/__pycache__/gns3.cpython-36.pyc b/server/__pycache__/gns3.cpython-36.pyc
index 0d46a1e4e32c07ca592b45698856de2191a0415a..53742264b3cf9ba6d500f54ddb1cc925e0791cdd 100644
Binary files a/server/__pycache__/gns3.cpython-36.pyc and b/server/__pycache__/gns3.cpython-36.pyc differ
diff --git a/server/__pycache__/gns3_helper.cpython-36.pyc b/server/__pycache__/gns3_helper.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..745646374da305b41ff475d36728bc237db394c5
Binary files /dev/null and b/server/__pycache__/gns3_helper.cpython-36.pyc differ
diff --git a/server/client.py b/server/client.py
index 54a68463db8d52894c068a45c12cd7606d42aba3..3a3f2d5506a42314d33805f9fc0ce6c1584729af 100644
--- a/server/client.py
+++ b/server/client.py
@@ -2,14 +2,16 @@
 
 import socket
 
-TCP_IP = '127.0.0.1'
-TCP_PORT = 5005
+# TCP_IP = '127.0.0.1'
+# TCP_PORT = 5006
 BUFFER_SIZE = 1024
+UDP_IP = "127.0.0.1"
+UDP_PORT = 5005
+# MESSAGE = "Hello, World!"
 
-s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-s.connect((TCP_IP, TCP_PORT))
+sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+# sock.connect((TCP_IP, TCP_PORT))
 
-#print index instruction
 f = open('index_instruction.txt', 'r')
 file_contents = ''
 file_contents += f.read()
@@ -22,15 +24,15 @@ while 1:
 	index = input()
 	while not index:
 		index = input(file_contents)
-	s.send(index.encode('utf-8'))
-	data = s.recv(BUFFER_SIZE).decode('utf-8')
+	sock.sendto(index.encode('utf-8'), (UDP_IP, UDP_PORT))
+	msg, addr = sock.recvfrom(BUFFER_SIZE)
+	data = msg.decode()
 	text += data
 
 	while text.find('END') == -1:
-		data = s.recv(BUFFER_SIZE).decode('utf-8')
+		msg, addr = sock.recvfrom(BUFFER_SIZE)
+		data = msg.decode()
 		text += data
 	print(text[:-3])
 	if text[:-3] == 'close':	break
-s.close()
-
-# print("received text:", text)
\ No newline at end of file
+# sock.close()
diff --git a/server/gns3.py b/server/gns3.py
index 5b4142df46a6ad8d3c1904109c6f0265c528d10a..a23a96f4c0e123c57dd5a3f9eecc85aab60b3a7d 100644
--- a/server/gns3.py
+++ b/server/gns3.py
@@ -90,7 +90,7 @@ GNS3_AUTH = HTTPBasicAuth(GNS3_USERNAME, GNS3_PASSWORD)
 ##########Appliance
 ################################################################################
 
-def gns3_get_appliances_list():
+def get_appliances_list():
     r = requests.get('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['appliances']), auth=GNS3_AUTH)
     return r.json()
 
@@ -100,22 +100,22 @@ def gns3_get_appliances_list():
 ##########Drawing
 ################################################################################
 
-def gns3_get_drawings_list(project_id):
+def get_drawings_list(project_id):
     drawings_url = GNS3_URLS['drawings'].format(project_id=project_id)
     r = requests.get('{0}/{1}'.format(GNS3_ADDR, drawings_url), auth=GNS3_AUTH)
     return r.json()
 
-def gns3_get_drawing(project_id, drawing_id):
+def get_drawing(project_id, drawing_id):
     drawing_url = GNS3_URLS['drawing_instance'].format(project_id=project_id, drawing_id=drawing_id)
     r = requests.get('{0}/{1}'.format(GNS3_ADDR, drawing_url), auth=GNS3_AUTH)
     return r.json()
 
-def gns3_update_drawing(project_id, drawing_id):
+def update_drawing(project_id, drawing_id):
     drawing_url = GNS3_URLS['drawing_instance'].format(project_id=project_id, drawing_id=drawing_id)
     r = requests.put('{0}/{1}'.format(GNS3_ADDR, drawing_url), auth=GNS3_AUTH)
     return r.json()
 
-def gns3_delete_drawing(project_id, drawing_id):
+def delete_drawing(project_id, drawing_id):
     drawing_url = GNS3_URLS['drawing_instance'].format(project_id=project_id, drawing_id=drawing_id)
     r = requests.delete('{0}/{1}'.format(GNS3_ADDR, drawing_url), auth=GNS3_AUTH)
     #TODO what do we return?
@@ -127,25 +127,25 @@ def gns3_delete_drawing(project_id, drawing_id):
 #########Server
 ################################################################################
 
-def gns3_dump_debug_info():
+def dump_debug_info():
     r = requests.post('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['debug']), auth=GNS3_AUTH)
     #TODO what do we return?
     return r
 
-def gns3_get_settings():
+def get_settings():
     r = requests.get('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['settings']), auth=GNS3_AUTH)
     return r.json()
 
-def gns3_shutdown_server():
+def shutdown_server():
     r = requests.get('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['shutdown']), auth=GNS3_AUTH)
     #TODO what do we return?
     return r
 
-def gns3_get_version():
+def get_version():
     r = requests.get('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['version']), auth=GNS3_AUTH)
     return r.json()
 
-def gns3_compare_version(version_to_compare):
+def compare_version(version_to_compare):
     r = requests.post('{0}/{1}'.format(GNS3_ADDR, GNS3_URLS['version']), auth=GNS3_AUTH,
         json={'version': str(version_to_compare)})
     return r
@@ -154,20 +154,64 @@ def gns3_compare_version(version_to_compare):
 ################################################################################
 ##########Implementation
 ################################################################################
-def gns3_nodes_information(project_id):
+def nodes_information(project_id):
     url = GNS3_URLS['nodes'].format(project_id=project_id)
     r = requests.get('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH)
     return r.json()
 
-def gns3_links_information(project_id):
+def links_information(project_id):
     url = GNS3_URLS['links'].format(project_id=project_id)
     r = requests.get('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH)
     return r.json()
 
+def node_create(project_id, name):
+    para = '{"compute_id": "local", "name": "'+str(name)+'", "node_type": "vpcs"}'
+    url = GNS3_URLS['nodes'].format(project_id=project_id)
+    r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH, data=para)
+    return r.json()
+
+def node_delete(project_id, node_id):
+    url = GNS3_URLS['nodes'].format(project_id=project_id)
+    r = requests.delete('{0}/{1}/{2}'.format(GNS3_ADDR, url, node_id), auth=GNS3_AUTH)
+    return r
+
+def link_create(project_id, node_id_1, node_id_2, adapter_1, adapter_2, port_1, port_2):
+    para = '{"nodes": [{"adapter_number": '+adapter_1+', "label": {"text": "Text", "x": 0, "y": 0}, "node_id": "'+node_id_1+'", "port_number": '+port_1+'}, {"adapter_number": '+adapter_2+', "node_id": "'+node_id_2+'", "port_number": '+port_2+'}]}'
+    r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH, data=para)
+    return r
+
+def link_delete():
+    return
+
+def node_start_all(project_id):
+    url = GNS3_URLS['start_all_nodes'].format(project_id=project_id)
+    r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH)
+    return r
+
+def node_stop_all(project_id):
+    url = GNS3_URLS['stop_all_nodes'].format(project_id=project_id)
+    r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH)
+    return r
+
+def node_suspend_all(project_id):
+    url = GNS3_URLS['suspend__all_nodes'].format(project_id=project_id)
+    r = requests.post('{0}/{1}'.format(GNS3_ADDR, url), auth=GNS3_AUTH)
+    return r
+
+def node_start():
+    return 
+
+def node_stop():
+    return
+
+def node_suspend():
+    return
+
+
 
 #Testing
-# print(gns3_get_version())
-# gns3_get_settings()
-# print(gns3_shutdown_server())
-# print(gns3_compare_version('2.1.12dev1'))
-# print(gns3_get_drawings_list('a'))
\ No newline at end of file
+# print(get_version())
+# get_settings()
+# print(shutdown_server())
+# print(compare_version('2.1.12dev1'))
+# print(get_drawings_list('a'))
\ No newline at end of file
diff --git a/server/gns3_helper.py b/server/gns3_helper.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ef94a20c607121f8a2da16e4fbf77187384749f
--- /dev/null
+++ b/server/gns3_helper.py
@@ -0,0 +1,29 @@
+import gns3
+
+project_id ='83b40958-ede6-4dec-9cff-e11bdf38bbcc'
+
+def update_nodes_info():
+  nodes_info = []
+  info = gns3.nodes_information(project_id)
+  data = ''
+  for node in info:
+    node_info = {}
+    node_info['name'] = node.get('name')
+    node_info['node_id'] = node.get('node_id')
+    if node.get('properties').get('platform'):
+      node_info['platform'] = node.get('properties').get('platform')
+    nodes_info.append(node_info)
+  print('nodes updated')
+  return nodes_info
+
+def update_links_info():
+  links_info = []
+  info = gns3.links_information(project_id)
+  for link in info:
+    link_info = {}
+    link_info['link_id'] = link.get('link_id')
+    link_info['node_id_1'] = link.get('nodes')[0].get('node_id')
+    link_info['node_id_2'] = link.get('nodes')[1].get('node_id')
+    links_info.append(link_info)
+  print('link updated')
+  return links_info
\ No newline at end of file
diff --git a/server/index_instruction.txt b/server/index_instruction.txt
index 8f2fc130f5d6c50a147059642e736fcb07836f69..f02ed0b82ceabe32a15e7cb1778c7ccea1cf6760 100644
--- a/server/index_instruction.txt
+++ b/server/index_instruction.txt
@@ -1,10 +1,18 @@
 Provided functionality in GNS3:
 
 0: version information
-1: drawing list
-2: setting information
-3: nodes information
-4: links information
+1: nodes information
+2: links information
+3: create node
+4: delete node
+5: create link
+6: delete link
+7: start all nodes
+8: stop all nodes
+9: suspend all nodes
+10: start one node
+11: stop one node
+12: suspend one node
 -1: close connection
 
 Enter index:
\ No newline at end of file
diff --git a/server/server.py b/server/server.py
index ea4d0b1851d9c230e37c6ac67bd8c40f5afcff74..21081ac37cc14d2e5b6e31d7cfcaaae1736bad1f 100644
--- a/server/server.py
+++ b/server/server.py
@@ -2,61 +2,76 @@
 
 import socket
 import gns3
+import gns3_helper as gn
+import time
 
 
-TCP_IP = '127.0.0.1'
-TCP_PORT = 5005
+# TCP_IP = '127.0.0.1'
+# TCP_PORT = 5006
 BUFFER_SIZE = 1024  # Normally 1024, but we want fast response
 project_id ='83b40958-ede6-4dec-9cff-e11bdf38bbcc'
+UDP_IP = "127.0.0.1"
+UDP_PORT = 5005
 
-s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-s.bind((TCP_IP, TCP_PORT))
-s.listen(1)
+sock = socket.socket(socket.AF_INET, # Internet
+                     socket.SOCK_DGRAM) # UDP
+sock.bind((UDP_IP, UDP_PORT))
+
+# s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+# s.bind((TCP_IP, TCP_PORT))
+# s.listen(1)
+
+# conn, addr = s.accept()
+# print('Connection address:', addr)
+
+############update information#########
+nodes_info = gn.update_nodes_info()
+links_info = gn.update_links_info()
 
-conn, addr = s.accept()
-print('Connection address:', addr)
 while 1:
 
-  index = conn.recv(BUFFER_SIZE).decode('utf-8')
+  msg, addr = sock.recvfrom(BUFFER_SIZE)
+  index = msg.decode('utf-8')
 
   if index == '0':
-    data = str(gns3.gns3_get_version())+str('END')
+    data = str(gns3.get_version())+str('END')
 
   elif index == '1':
-    data = str(gns3.gns3_get_drawings_list(project_id))+str('END')
+    nodes_info = gn.update_nodes_info()
+    data = str(nodes_info)+str('END')
 
   elif index == '2':
-    data = str(gns3.gns3_get_settings())+str('END')
+    links_info = gn.update_links_info()
+    data = str(links_info)+str('END')
 
   elif index == '3':
-    info = gns3.gns3_nodes_information(project_id)
-    data = ''
-    for nodes in info:
-      data += str('name: ') + str(nodes.get('name')) + '\n'
-      data += str('node_id: ') + str(nodes.get('node_id')) + '\n'
-      if nodes.get('properties').get('platform'):
-        data += str('platform: ') + str(nodes.get('properties').get('platform')) + '\n'
-      data += '\n'
-    data += str('END')
+    nodes_info = gn.update_nodes_info()
+    name = len(nodes_info)+1
+    # gns3.node_create(project_id, name)
+    data = str(gns3.node_create(project_id, name))+str('END')
+    # data = str('OK 4')
 
   elif index == '4':
-    info = gns3.gns3_links_information(project_id)
-    data = ''
-    for links in info:
-      data += str('link_id: ') + str(links.get('link_id')) + '\n'
-      nodes = links.get('nodes')
-      for node in nodes:
-        data += str('node_id: ') + str(node.get('node_id')) + '\n'
-      data += '\n'
-    data += str('END')
+    nodes_info = gn.update_nodes_info()
+    node_id = nodes_info[-1].get('node_id')
+    data = str(gns3.node_delete(project_id, node_id))+str('END')
+
+  elif index == '7':
+    data = str(gns3.node_start_all(project_id))+str('END')
+
+  elif index == '8':
+    data = str(gns3.node_stop_all(project_id))+str('END')
+
+  elif index == '9':
+    data = str(gns3.node_suspend_all(project_id))+str('END')
 
   elif index == '-1':
     data = str('close')+str('END')
-    conn.send(data.encode('utf-8'))  # echo
-    break
+
+  elif not index: break
+
   else:
     data = str('incorrect msg')+str('END')
-  conn.send(data.encode('utf-8'))  # echo
-
-conn.close()
+  sock.sendto(data.encode('utf-8'), addr)  # echo
 
+# conn.close()