diff --git a/.DS_Store b/.DS_Store
index 2fec223903ac1694571e02c744a2c068a627bbfe..add6cc6fc0deb56d8b7edaadccd95edcfc062405 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/Lab2/__pycache__/database_helper.cpython-310.pyc b/Lab2/__pycache__/database_helper.cpython-310.pyc
index c0cb2b59bf7e62a54d13752438c29730b94473b0..99b546519230212e54a8bc011cbc93babc0b8519 100644
Binary files a/Lab2/__pycache__/database_helper.cpython-310.pyc and b/Lab2/__pycache__/database_helper.cpython-310.pyc differ
diff --git a/Lab2/__pycache__/server.cpython-310.pyc b/Lab2/__pycache__/server.cpython-310.pyc
index 9b004867109a8db67ebe33d1813dc745cabcd9d6..c45131d588856539e63fafc227021f49aca3e0e6 100644
Binary files a/Lab2/__pycache__/server.cpython-310.pyc and b/Lab2/__pycache__/server.cpython-310.pyc differ
diff --git a/Lab2/database.db b/Lab2/database.db
index b6cf4525b5d293f9e54549358aecdf98cdb5cf98..ecfc5db7f8012e708b8bb0719f07367d0c9357d9 100644
Binary files a/Lab2/database.db and b/Lab2/database.db differ
diff --git a/Lab2/database_helper.py b/Lab2/database_helper.py
index cd923d7aff01753a8477d1f12601b791f13effce..7eac6bdaa35947e244602a2cb9c9123debbb5fb2 100644
--- a/Lab2/database_helper.py
+++ b/Lab2/database_helper.py
@@ -31,7 +31,7 @@ def authenticate(email, password):
         return False
 
 
-def log_in(token, email):
+def addToLoggedInUsers(token, email):
     try:
         get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email])
         get_db().commit()
@@ -40,7 +40,7 @@ def log_in(token, email):
         return False
 
 
-def log_out(token):
+def removeFromLoggedInUsers(token):
     try:
         cursor = get_db().cursor()
         cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token])
diff --git a/Lab2/server.py b/Lab2/server.py
index 3504ab728ad07aaff9a437ae6b2451fc232f9b9f..26cc2a3c29b56e8b12b57a8e3fe314f10848bbcf 100644
--- a/Lab2/server.py
+++ b/Lab2/server.py
@@ -4,6 +4,7 @@ import database_helper
 import random
 import string
 import json
+import re
 
 app = Flask(__name__)
 
@@ -26,7 +27,8 @@ def sign_up():
         and 'country' in data and isinstance(data['country'], str)
         ):
         if(len(data['password']) > 5 and len(data['password']) < 21 and len(data['email']) > 0
-        and len(data['firstname']) > 0 and len(data['familyname']) > 0 and len(data['gender']) > 0
+        and is_valid_email(data['email']) and len(data['firstname']) > 0
+        and len(data['familyname']) > 0 and len(data['gender']) > 0
         and len(data['city']) > 0 and len(data['country']) > 0 ):
             resp = database_helper.create_user(data['email'], data['password'], data['firstname'],
             data['familyname'], data['gender'], data['city'], data['country'])
@@ -43,25 +45,28 @@ def sign_up():
 @app.route("/users/sign_in", methods = ['POST'])
 def sign_in():
     data = request.get_json()
-    if('email' in data
-        and 'password' in data):
+    if('email' in data and is_valid_email(data['email'])
+        and 'password' in data and len(data['password']) > 5):
         if not database_helper.authenticate(data['email'], data['password']):
             return "", 401
         else :
             token = generate_token()
-            if database_helper.log_in(token, data['email']):
-                return token, 201
+            value = {
+                "token" : token
+            }
+            if database_helper.addToLoggedInUsers(token, data['email']):
+                return jsonify(value), 201
             else:
                 return "", 409
     else:
         return "", 400
 
 
-@app.route("/users/sign_out", methods = ['POST'])
+@app.route("/users/sign_out", methods = ['PUT'])
 def sign_out():
     token = get_token_from_header()
     if(token != 1):
-        if database_helper.log_out(token):
+        if database_helper.removeFromLoggedInUsers(token):
             return "", 200
         else:
             return "", 401
@@ -214,6 +219,10 @@ def generate_token():
     characters = string.ascii_letters + string.digits
     return ''.join(random.choices(characters, k=36))
 
+def is_valid_email(email):
+    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
+    return re.match(pattern, email) is not None
+
 
 if __name__ == '__main__':
     app.debug = True
diff --git a/Twidder (Lab3)/database_helper.py b/Twidder (Lab3)/database_helper.py
index f69e47ba0138f2407b2e9803b2dd16f837424463..7eac6bdaa35947e244602a2cb9c9123debbb5fb2 100644
--- a/Twidder (Lab3)/database_helper.py	
+++ b/Twidder (Lab3)/database_helper.py	
@@ -10,15 +10,6 @@ def get_db():
     return db
 
 
-def clean_db():
-    try:
-        get_db().execute("DROP table USERS;")
-        get_db().execute("DROP table LOGGEDINUSERS;")
-        return True
-    except:
-        return False
-
-
 def create_user(email, password, firstname, familyname, gender, city, country):
     try:
         get_db().execute("INSERT into USERS values(?, ?, ?, ?, ?, ?, ?);", [firstname, familyname, gender, city, country, email, password])
@@ -40,7 +31,7 @@ def authenticate(email, password):
         return False
 
 
-def log_in(token, email):
+def addToLoggedInUsers(token, email):
     try:
         get_db().execute("INSERT into LOGGEDINUSERS values(?, ?)", [token, email])
         get_db().commit()
@@ -49,7 +40,7 @@ def log_in(token, email):
         return False
 
 
-def log_out(token):
+def removeFromLoggedInUsers(token):
     try:
         cursor = get_db().cursor()
         cursor.execute("SELECT * FROM LOGGEDINUSERS WHERE TOKEN=?;", [token])
diff --git a/Twidder (Lab3)/server.py b/Twidder (Lab3)/server.py
index c126024c3480985f430df62b51f7c96827ae32e1..c45c45ca0ae174bfdd77dbc72df672b049ff0b8a 100644
--- a/Twidder (Lab3)/server.py	
+++ b/Twidder (Lab3)/server.py	
@@ -4,14 +4,13 @@ import database_helper
 import random
 import string
 import json
+import re
 
 app = Flask(__name__)
 
-
-
 @app.route("/", methods = ['GET'])
 def hello_world():
-    return app.send_static_file("client.html"), 200
+    return "<p>Hello, Lab_2!</p>", 200
 
 
 @app.route("/users/sign_up", methods = ['POST'])
@@ -26,7 +25,8 @@ def sign_up():
         and 'country' in data and isinstance(data['country'], str)
         ):
         if(len(data['password']) > 5 and len(data['password']) < 21 and len(data['email']) > 0
-        and len(data['firstname']) > 0 and len(data['familyname']) > 0 and len(data['gender']) > 0
+        and is_valid_email(data['email']) and len(data['firstname']) > 0
+        and len(data['familyname']) > 0 and len(data['gender']) > 0
         and len(data['city']) > 0 and len(data['country']) > 0 ):
             resp = database_helper.create_user(data['email'], data['password'], data['firstname'],
             data['familyname'], data['gender'], data['city'], data['country'])
@@ -43,8 +43,8 @@ def sign_up():
 @app.route("/users/sign_in", methods = ['POST'])
 def sign_in():
     data = request.get_json()
-    if('email' in data
-        and 'password' in data):
+    if('email' in data and is_valid_email(data['email'])
+        and 'password' in data and len(data['password']) > 5):
         if not database_helper.authenticate(data['email'], data['password']):
             return "", 401
         else :
@@ -52,7 +52,7 @@ def sign_in():
             value = {
                 "token" : token
             }
-            if database_helper.log_in(token, data['email']):
+            if database_helper.addToLoggedInUsers(token, data['email']):
                 return jsonify(value), 201
             else:
                 return "", 409
@@ -60,11 +60,11 @@ def sign_in():
         return "", 400
 
 
-@app.route("/users/sign_out", methods = ['POST'])
+@app.route("/users/sign_out", methods = ['PUT'])
 def sign_out():
     token = get_token_from_header()
     if(token != 1):
-        if database_helper.log_out(token):
+        if database_helper.removeFromLoggedInUsers(token):
             return "", 200
         else:
             return "", 401
@@ -217,6 +217,10 @@ def generate_token():
     characters = string.ascii_letters + string.digits
     return ''.join(random.choices(characters, k=36))
 
+def is_valid_email(email):
+    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
+    return re.match(pattern, email) is not None
+
 
 if __name__ == '__main__':
     app.debug = True