diff --git a/TP1/rest/rest-client.py b/TP1/rest/rest-client.py
new file mode 100644
index 0000000000000000000000000000000000000000..431ec07acead056be88d83605539dc255e1a0d06
--- /dev/null
+++ b/TP1/rest/rest-client.py
@@ -0,0 +1,54 @@
+import urllib2 
+import argparse
+import pprint
+import os
+import json
+from os.path import join
+# put here your own ip
+SERVER_URL = 'http://127.0.0.1:8122'
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Simple REST FTP client')
+    
+    subparsers  = parser.add_subparsers(help='sub-command help', dest='which')
+
+    parser_list = subparsers.add_parser('list',help='list directory')
+    parser_list.add_argument('directory', type=str)
+
+    parser_get  = subparsers.add_parser('get', help='get file')
+    parser_get.add_argument('file', type=str)
+    parser_get.add_argument('destination', type=str)
+    
+    parser_put  = subparsers.add_parser('put', help='put file in ftp')
+    parser_put.add_argument('source', type=str)
+    parser_put.add_argument('destination', type=str)
+
+    args = parser.parse_args()
+    
+    if args.which == 'list':
+        directory = join(args.which, args.directory) if args.directory != '.' else args.which
+        req = urllib2.Request(join(SERVER_URL, directory))
+        pprint.pprint(join(SERVER_URL, directory))
+        req.add_header('Content-Type', 'application/json')
+        response = json.loads(urllib2.urlopen(req).read())
+        dir, sdirs, files   = response['dir'], response['subdirs'], response['files']
+        print "[%s]" % dir
+        for d in sdirs:
+            print "[%s/%s]" % (dir, d)
+        for f in files:
+            print "%s/%s" % (dir, f)
+    elif args.which == 'get':
+        req = urllib2.Request(join(SERVER_URL, join(args.which, args.file)))
+        req.add_header('Content-Type', 'application/json')
+        response = json.loads(urllib2.urlopen(req).read())
+        directory, filename, data = response['dir'], response['file'], response['data']
+        with open(args.destination, 'w+') as f:
+            f.write(data)
+    elif args.which == 'put':
+        req = urllib2.Request(join(SERVER_URL, args.which))
+        req.add_header('Content-Type', 'application/json')
+        with open(args.source, 'r') as src:
+            data = src.read() 
+        response = urllib2.urlopen(req, json.dumps({'destination': args.destination, 'data': data})).read()
+        print response
+
diff --git a/TP1/rest/rest-server.py b/TP1/rest/rest-server.py
new file mode 100644
index 0000000000000000000000000000000000000000..56583a95ded2b8085bf8721771c134c38c5ded55
--- /dev/null
+++ b/TP1/rest/rest-server.py
@@ -0,0 +1,49 @@
+from flask import Flask, request, jsonify
+import argparse
+from os.path import expanduser, join, isdir, abspath
+from os import listdir
+
+app = Flask(__name__)
+main_directory = None
+
+@app.route('/list', defaults={'relative_directory': '.'})
+@app.route('/list/<path:relative_directory>')
+def list(relative_directory):
+    global main_directory
+    target_directory = join(main_directory, relative_directory) if relative_directory != '.' else main_directory
+    dirs = listdir(target_directory)
+    s = [d for d in dirs if isdir(d)]
+    f = [f for f in dirs if not isdir(f)]
+    return jsonify(dir=target_directory, subdirs=s, files=f)
+
+@app.route('/get/<path:relative_path>')
+def get(relative_path):
+    global main_directory
+    with open(join(main_directory,relative_path), 'r') as f:
+        data = f.read()
+    return jsonify(dir=main_directory, file=relative_path, data=data)
+
+@app.route('/put', methods=['POST'])
+def put():
+    from pprint import pprint
+    
+    relative_path = request.json['destination']
+    data          = request.json['data']
+    global main_directory
+    new_file = join(main_directory, relative_path)
+    try:
+        with open(new_file, 'w+') as f:
+            f.write(data)
+    except:
+        return 'Error while writing %s :(' % new_file
+    return '%s added successfuly!' % new_file
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Simple REST FTP server')
+    parser.add_argument('-p', '--port', type=int, required=True, help='Listening port')
+    parser.add_argument('-d', '--directory', type=str, required=True, help='Home directory of the FTP')
+    parser.add_argument('-D', '--debug', action='store_true', help='Activate debug mode')
+    args = parser.parse_args()
+    main_directory = abspath(args.directory)
+    
+    app.run(host='0.0.0.0', port=args.port, debug=args.debug)
diff --git a/TP1/soap/.soap-client.py.swp b/TP1/soap/.soap-client.py.swp
deleted file mode 100644
index d9907ad2928ab17b24f37d2f76af56c9bf455001..0000000000000000000000000000000000000000
Binary files a/TP1/soap/.soap-client.py.swp and /dev/null differ
diff --git a/TP1/soap/.soap-server.py.swp b/TP1/soap/.soap-server.py.swp
deleted file mode 100644
index c8d9d2b208520ea8e793df6f52c8e0c0cb15aab9..0000000000000000000000000000000000000000
Binary files a/TP1/soap/.soap-server.py.swp and /dev/null differ
diff --git a/TP1/soap/soap-server.py b/TP1/soap/soap-server.py
index 77e03fb7499ad50c12c53634ebb611a88054c72b..c43384a3494c26b5648dad7c144c219bfb3530ff 100644
--- a/TP1/soap/soap-server.py
+++ b/TP1/soap/soap-server.py
@@ -11,21 +11,21 @@ def list(relative_directory):
     target_directory = join(main_directory, relative_directory) if relative_directory != '.' else main_directory
     dirs = listdir(target_directory)
     s = [d for d in dirs if isdir(d)]
-    f = [f for f in dirs if not isdir(d)]
+    f = [f for f in dirs if not isdir(f)]
     return (target_directory, s, f)
 
 def get(relative_path):
     global main_directory
     with open(join(main_directory,relative_path), 'r') as f:
-        payload = f.read()
-    return (main_directory, relative_path, payload)
+        data = f.read()
+    return (main_directory, relative_path, data)
 
-def put(relative_path, payload):
+def put(relative_path, data):
     global main_directory
     new_file = join(main_directory, relative_path)
     try:
         with open(new_file, 'w+') as f:
-            f.write(payload)
+            f.write(data)
     except:
         return 'Error while writing %s :(' % new_file
     return '%s added successfuly!' % new_file