diff --git a/src/io/takima/agencymanagement/dao/TravelDao.java b/src/io/takima/agencymanagement/dao/TravelDao.java
index 5937d37b3d75e12d635e8bbe3adc5e4b2b425d36..20e79dbb14734eb51a6ee302c42d413342d3002f 100644
--- a/src/io/takima/agencymanagement/dao/TravelDao.java
+++ b/src/io/takima/agencymanagement/dao/TravelDao.java
@@ -16,9 +16,8 @@ public class TravelDao {
         addTravelsToMap();
     }
 
-    public Travel persist(Travel travel) {
+    public void save(Travel travel) {
         travels.put(travel.getId(), travel);
-        return travel;
     }
 
     public Travel update(Travel travel) {
diff --git a/src/io/takima/agencymanagement/dao/UserDao.java b/src/io/takima/agencymanagement/dao/UserDao.java
index 689edb65a789d6e8bb2b6cde15b36d51d27951cb..cec2f8ebe50390c524780f848e67be38a1a57c74 100644
--- a/src/io/takima/agencymanagement/dao/UserDao.java
+++ b/src/io/takima/agencymanagement/dao/UserDao.java
@@ -13,9 +13,8 @@ public class UserDao {
 
     private final Map<Long, User> users = Collections.synchronizedMap(new HashMap<>());
 
-    public User persist(User user) {
+    public void save(User user) {
         users.put(user.getId(), user);
-        return user;
     }
 
     public User update(User user) {
diff --git a/src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java b/src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java
new file mode 100644
index 0000000000000000000000000000000000000000..11ed7a3de5a9236cdf9fa5908f9d9af88c624114
--- /dev/null
+++ b/src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java
@@ -0,0 +1,7 @@
+package io.takima.agencymanagement.exception;
+
+public class AlreadyTravelSubscribedException extends Exception {
+    public AlreadyTravelSubscribedException(String message) {
+        super(message);
+    }
+}
\ No newline at end of file
diff --git a/src/io/takima/agencymanagement/model/Travel.java b/src/io/takima/agencymanagement/model/Travel.java
index e82d3cfecdaaa2dad87885dbfadff48bc1781b53..7c2e4bac4b26756bcd7736382d53110e0f8e5c9a 100644
--- a/src/io/takima/agencymanagement/model/Travel.java
+++ b/src/io/takima/agencymanagement/model/Travel.java
@@ -110,4 +110,8 @@ public class Travel {
 
         return stringBuilder.toString();
     }
+
+    public boolean hasAvailableCapacity(Set<User> participants, int capacity) {
+        return participants.size() < capacity;
+    }
 }
diff --git a/src/io/takima/agencymanagement/service/TravelService.java b/src/io/takima/agencymanagement/service/TravelService.java
index 37969c2c3a44d86e048ce96449bdf070b49a26cd..c5976d42ce746b8a01e5d81d8c5c7835dd7fd9f5 100644
--- a/src/io/takima/agencymanagement/service/TravelService.java
+++ b/src/io/takima/agencymanagement/service/TravelService.java
@@ -1,6 +1,7 @@
 package io.takima.agencymanagement.service;
 
 import io.takima.agencymanagement.dao.TravelDao;
+import io.takima.agencymanagement.exception.AlreadyTravelSubscribedException;
 import io.takima.agencymanagement.mapper.TravelDtoMapper;
 import io.takima.agencymanagement.model.Travel;
 import io.takima.agencymanagement.model.User;
@@ -24,17 +25,17 @@ public class TravelService {
     }
 
     public TravelResponseDto create(Travel travel) {
-        travelDao.persist(travel);
+        travelDao.save(travel);
         return fromTravel(travel);
     }
 
     public TravelResponseDto update(Travel travel) {
-        travelDao.persist(travel);
+        travelDao.save(travel);
         return fromTravel(travel);
     }
 
     public TravelResponseDto delete(Travel travel) {
-        travelDao.persist(travel);
+        travelDao.save(travel);
         return fromTravel(travel);
     }
 
@@ -49,6 +50,7 @@ public class TravelService {
                 .toList();
 
     }
+
     public void applyDiscounts(Travel travel) {
         if (travel.getDiscounts().isEmpty()) {
             System.out.println("Aucune réduction n'est applicable sur ce voyage !");
@@ -61,19 +63,18 @@ public class TravelService {
         }
     }
 
-    public boolean subscribe(User user, Travel travel) throws Exception {
+    public void subscribe(User user, Travel travel) throws Exception {
 
         if (travel.getParticipants().contains(user) || travel.getWaitList().contains(user)) {
             //User already subscribed or in waitList
-            throw new Exception("L'utilisateur est déjà inscrit ou en file d'attente pour ce voyage.");
+            throw new AlreadyTravelSubscribedException("L'utilisateur est déjà inscrit ou en file d'attente pour ce voyage.");
         }
 
         if (travel.getParticipants().size() < travel.getCapacity()) {
             travel.getParticipants().add(user);
-            return true;
+            return;
         }
         travel.getWaitList().add(user);
-        return false;
     }
 
     public void unsubscribe(User user, Travel travel) {
@@ -106,10 +107,11 @@ public class TravelService {
         List<Travel> travels = travelDao.findAll();
 
         return travels.stream()
-                .filter(travel -> travel.getCapacity() > travel.getParticipants().size() && travel.getDestination().equals(destination))
+                .filter(travel -> travel.hasAvailableCapacity(travel.getParticipants(), travel.getCapacity()) && travel.getDestination().equals(destination))
                 .toList();
     }
 
+
     public List<Travel> findInPriceRange(double minPrice, double maxPrice) {
         List<Travel> travels = travelDao.findAll();
 
diff --git a/src/io/takima/agencymanagement/service/UserService.java b/src/io/takima/agencymanagement/service/UserService.java
index 08903f6c0eee79fc1fc9b8c05b6e17e14caa7d4e..458e0e56a0760fdc0058d990c21c26e1945058a3 100644
--- a/src/io/takima/agencymanagement/service/UserService.java
+++ b/src/io/takima/agencymanagement/service/UserService.java
@@ -14,17 +14,17 @@ public class UserService {
     UserDao userDao = new UserDao();
 
     public UserResponseDto create(User user) {
-        userDao.persist(user);
+        userDao.save(user);
         return fromUser(user);
     }
 
     public UserResponseDto update(User  user) {
-        userDao.persist(user);
+        userDao.save(user);
         return fromUser(user);
     }
 
     public UserResponseDto delete(User  user) {
-        userDao.persist(user);
+        userDao.save(user);
         return fromUser(user);
     }