diff --git a/car/src/main/java/cz/muni/pa165/car/data/model/Car.java b/car/src/main/java/cz/muni/pa165/car/data/model/Car.java
index 75d61eed69f2b7274cb105df5fe2a7f16c852360..1d4d9ed2fff499e5b526ff122c9de2632b839ef1 100644
--- a/car/src/main/java/cz/muni/pa165/car/data/model/Car.java
+++ b/car/src/main/java/cz/muni/pa165/car/data/model/Car.java
@@ -8,7 +8,7 @@ import jakarta.persistence.GenerationType;
 import jakarta.persistence.Id;
 import jakarta.persistence.Table;
 import java.io.Serializable;
-import java.util.List;
+import java.util.Set;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -30,10 +30,10 @@ public class Car implements Serializable {
   private Long id;
 
   @ElementCollection(targetClass = Long.class, fetch = FetchType.EAGER)
-  private List<Long> components;
+  private Set<Long> components;
 
   @ElementCollection(targetClass = Long.class, fetch = FetchType.EAGER)
-  private List<Long> drivers;
+  private Set<Long> drivers;
 
   private Long mainDriverId;
 
diff --git a/car/src/main/java/cz/muni/pa165/car/mapper/CarMapper.java b/car/src/main/java/cz/muni/pa165/car/mapper/CarMapper.java
index 44ea6e762f75ad7b8c9d366f46c64dc6441858e8..0349e541db453f6e8d16e9d8043f8a85fb3a4a2f 100644
--- a/car/src/main/java/cz/muni/pa165/car/mapper/CarMapper.java
+++ b/car/src/main/java/cz/muni/pa165/car/mapper/CarMapper.java
@@ -1,8 +1,14 @@
 package cz.muni.pa165.car.mapper;
 
+import static cz.muni.pa165.car.restemplate.DbGetter.getComponentFromDb;
+
 import cz.muni.pa165.car.data.model.Car;
 import cz.muni.pa165.common_library.dtos.CarRequestDto;
 import cz.muni.pa165.common_library.dtos.CarResponseDto;
+import cz.muni.pa165.common_library.exception.DatabaseException;
+import cz.muni.pa165.component.data.model.CarComponent;
+import java.util.ArrayList;
+import java.util.HashSet;
 
 /**
  * Class for converting Car object and its Data Transfer Objects.
@@ -19,8 +25,8 @@ public class CarMapper {
 
     return Car.builder()
         .id(null)
-        .components(carRequestDto.getComponentIds())
-        .drivers(carRequestDto.getDriverIds())
+        .components(new HashSet<>(carRequestDto.getComponentIds()))
+        .drivers(new HashSet<>(carRequestDto.getDriverIds()))
         .mainDriverId(carRequestDto.getMainDriverId())
         .build();
   }
@@ -35,10 +41,11 @@ public class CarMapper {
 
     return CarResponseDto.builder()
         .id(car.getId())
-        .componentIdsNames(car.getComponents())
-        .driverIdsNames(car.getDrivers())
+        .componentIdsNames(new ArrayList<>(car.getComponents()))
+        .driverIdsNames(new ArrayList<>(car.getDrivers()))
         .mainDriverId(car.getMainDriverId())
         .build();
   }
 
+
 }
diff --git a/car/src/main/java/cz/muni/pa165/car/rest/CarComponentPairController.java b/car/src/main/java/cz/muni/pa165/car/rest/CarComponentPairController.java
index 8cbf5a412fee36051c429724beaf427698a88b8f..fda1065405516adde4a0118955571469e1d75a76 100644
--- a/car/src/main/java/cz/muni/pa165/car/rest/CarComponentPairController.java
+++ b/car/src/main/java/cz/muni/pa165/car/rest/CarComponentPairController.java
@@ -1,5 +1,6 @@
 package cz.muni.pa165.car.rest;
 
+import cz.muni.pa165.car.restemplate.DbGetter;
 import cz.muni.pa165.car.service.CarComponentPairService;
 import cz.muni.pa165.common_library.dtos.CarComponentDto;
 import cz.muni.pa165.common_library.dtos.CarRequestDto;
@@ -9,6 +10,8 @@ import java.util.List;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.Mapping;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -71,5 +74,17 @@ public class CarComponentPairController {
     return ResponseEntity.ok(carComponentService.getAllComponentsOfCar(carId));
   }
 
+  /**
+   * Calls service to get all components.
+   *
+   * @return List of components.
+   */
+  @Operation(summary = "Get all components from component repo")
+  @GetMapping(path = "/getcomponents",
+          produces = MediaType.APPLICATION_JSON_VALUE)
+  public ResponseEntity<List<CarComponentDto>> getAllCarComponents() {
+    return ResponseEntity.ok(DbGetter.getAllComponentsFromDb());
+  }
+
 
 }
diff --git a/car/src/main/java/cz/muni/pa165/car/restemplate/DbGetter.java b/car/src/main/java/cz/muni/pa165/car/restemplate/DbGetter.java
index 3274ed957b8ba8174fae68c3f2e12e8ce424719f..4d4c0f7115ed091733abc690264131eb38025af1 100644
--- a/car/src/main/java/cz/muni/pa165/car/restemplate/DbGetter.java
+++ b/car/src/main/java/cz/muni/pa165/car/restemplate/DbGetter.java
@@ -1,5 +1,6 @@
 package cz.muni.pa165.car.restemplate;
 
+import cz.muni.pa165.common_library.dtos.CarComponentDto;
 import cz.muni.pa165.component.data.model.CarComponent;
 import cz.muni.pa165.driver.data.model.Driver;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -7,18 +8,20 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * Class for retrieving data from other modules using RestTemplate.
  */
 @Component
 public class DbGetter {
 
-  @Autowired
   private static RestTemplate client = new RestTemplate();
 
   private static final String GET_DRIVER_URL = "http://localhost:8083/driver/get/id=";
-  private static final String GET_COMPONENT_URL = "http://localhost:8084/component?id=";
-  private static final String GET_ALL_COMPONENTS = "http://localhost:8084/component";
+  private static final String GET_COMPONENT_URL = "http://localhost:8084/component/id?componentId=";
+  private static final String GET_ALL_COMPONENTS = "http://localhost:8084/component/";
 
   /**
    * Get a driver using RestTemplate client.
@@ -44,4 +47,12 @@ public class DbGetter {
     return response.getBody();
   }
 
+  public static List<CarComponentDto> getAllComponentsFromDb() {
+    String url = GET_ALL_COMPONENTS;
+    var response = client.getForEntity(url, CarComponentDto[].class);
+    CarComponentDto[] carComponents = response.getBody();
+    assert carComponents != null;
+    return Arrays.stream(carComponents).toList();
+  }
+
 }
diff --git a/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairServiceImpl.java b/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairServiceImpl.java
index f0afe6ccf9ef3677214f516a2c6e32136946a6b8..b7007a67fde7f088299429a6fa32ff5fb7599b3a 100644
--- a/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairServiceImpl.java
+++ b/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairServiceImpl.java
@@ -2,6 +2,7 @@ package cz.muni.pa165.car.service;
 
 import static cz.muni.pa165.car.restemplate.DbGetter.getComponentFromDb;
 
+import cz.muni.pa165.car.data.model.Car;
 import cz.muni.pa165.car.data.repository.CarRepository;
 import cz.muni.pa165.car.mapper.CarMapper;
 import cz.muni.pa165.common_library.dtos.CarComponentDto;
@@ -9,6 +10,7 @@ import cz.muni.pa165.common_library.dtos.CarResponseDto;
 import cz.muni.pa165.common_library.exception.DatabaseException;
 import cz.muni.pa165.component.data.model.CarComponent;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
 import org.springframework.stereotype.Service;
@@ -34,8 +36,13 @@ public class CarComponentPairServiceImpl implements CarComponentPairService {
   public CarResponseDto addComponent(Long componentId, Long carId) {
     var car = carRepository.findById(carId).orElseThrow(
         () -> new DatabaseException("Car not found"));
+
+    if (isComponentInUse(componentId, carId)) {
+      throw new DatabaseException("Component with id " + componentId + " already in use");
+    }
     var components = car.getComponents();
-    components.add(componentId);
+    CarComponent carComponent = getComponentFromDb(componentId);
+    components.add(carComponent.getId());
     car.setComponents(components);
     carRepository.save(car);
     return CarMapper.carConverterToDto(car);
@@ -45,7 +52,7 @@ public class CarComponentPairServiceImpl implements CarComponentPairService {
   public CarResponseDto removeComponent(Long componentId, Long carId) {
     var car = carRepository.findById(carId).orElseThrow(
         () -> new DatabaseException("Car not found"));
-    var components = new ArrayList<Long>();
+    var components = new HashSet<Long>();
     for (Long id : car.getComponents()) {
       if (!Objects.equals(id, componentId)) {
         components.add(id);
@@ -76,4 +83,15 @@ public class CarComponentPairServiceImpl implements CarComponentPairService {
     return componentDtos;
   }
 
+  private boolean isComponentInUse(Long componentId, Long carId) {
+    var cars = carRepository.findAll();
+
+    for (Car car : cars) {
+      if (car.getComponents().stream()
+          .anyMatch(x -> x.longValue() == componentId && !Objects.equals(car.getId(), carId))) {
+        return true;
+      }
+    }
+    return false;
+  }
 }
diff --git a/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairServiceImpl.java b/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairServiceImpl.java
index dabba4a173a72b33faefd6aed346f495597243d5..013c4eeceae1d2d5cc1041a4bcd3da364f3118a8 100644
--- a/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairServiceImpl.java
+++ b/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairServiceImpl.java
@@ -9,6 +9,7 @@ import cz.muni.pa165.common_library.dtos.DriverDto;
 import cz.muni.pa165.common_library.exception.DatabaseException;
 import cz.muni.pa165.driver.data.model.Driver;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
 import org.springframework.stereotype.Service;
@@ -34,9 +35,12 @@ public class CarDriverPairServiceImpl implements CarDriverPairService {
   public CarResponseDto assignDriverToCar(Long driverId, Long carId) {
     var car = carRepository.findById(carId).orElseThrow(
         () -> new DatabaseException("Car not found"));
+
     var drivers = car.getDrivers();
-    drivers.add(driverId);
+    var savedDriver = getDriverFromDb(driverId);
+    drivers.add(savedDriver.getId());
     car.setDrivers(drivers);
+
     carRepository.save(car);
     return CarMapper.carConverterToDto(car);
   }
@@ -45,7 +49,7 @@ public class CarDriverPairServiceImpl implements CarDriverPairService {
   public CarResponseDto unassignDriverFromCar(Long driverId, Long carId) {
     var car = carRepository.findById(carId).orElseThrow(
         () -> new DatabaseException("Car not found"));
-    var drivers = new ArrayList<Long>();
+    var drivers = new HashSet<Long>();
     for (Long id : car.getDrivers()) {
       if (!Objects.equals(id, driverId)) {
         drivers.add(id);
@@ -76,7 +80,9 @@ public class CarDriverPairServiceImpl implements CarDriverPairService {
   public CarResponseDto setMainDriver(Long carId, Long driverId) {
     var car = carRepository.findById(carId).orElseThrow(
         () -> new DatabaseException("Car not found"));
-    car.setMainDriverId(driverId);
+
+    var savedDriver = getDriverFromDb(driverId);
+    car.setMainDriverId(savedDriver.getId());
     carRepository.save(car);
     return CarMapper.carConverterToDto(car);
   }
diff --git a/car/src/main/java/cz/muni/pa165/car/service/CarServiceImpl.java b/car/src/main/java/cz/muni/pa165/car/service/CarServiceImpl.java
index 874dbf4a907219b91a5d232c17e6f5dd64113cd9..38f8d647f3621f3baa6413ab6d99339b8f83d58a 100644
--- a/car/src/main/java/cz/muni/pa165/car/service/CarServiceImpl.java
+++ b/car/src/main/java/cz/muni/pa165/car/service/CarServiceImpl.java
@@ -3,12 +3,15 @@ package cz.muni.pa165.car.service;
 import static cz.muni.pa165.car.mapper.CarMapper.carConverterToDto;
 import static cz.muni.pa165.car.mapper.CarMapper.carDtoConverter;
 
+import cz.muni.pa165.car.data.model.Car;
 import cz.muni.pa165.car.data.repository.CarRepository;
 import cz.muni.pa165.car.mapper.CarMapper;
+import cz.muni.pa165.car.restemplate.DbGetter;
 import cz.muni.pa165.common_library.dtos.CarRequestDto;
 import cz.muni.pa165.common_library.dtos.CarResponseDto;
 import cz.muni.pa165.common_library.exception.DatabaseException;
 import java.util.List;
+import java.util.Objects;
 import org.springframework.stereotype.Service;
 
 
@@ -31,6 +34,14 @@ public class CarServiceImpl implements CarService {
 
   @Override
   public CarResponseDto postCar(CarRequestDto carRequestDto) {
+
+    var componentIds = carRequestDto.getComponentIds();
+    for (Long componentId : componentIds) {
+      if (isComponentInUse(componentId)) {
+        throw new DatabaseException("Component with id " + componentId + " already in use");
+      }
+      DbGetter.getComponentFromDb(componentId);
+    }
     return carConverterToDto(carRepository.save(carDtoConverter(carRequestDto)));
   }
 
@@ -58,4 +69,15 @@ public class CarServiceImpl implements CarService {
     return "Car with id = " + carId + " deleted!";
   }
 
+  private boolean isComponentInUse(Long componentId) {
+    var cars = carRepository.findAll();
+
+    for (Car car : cars) {
+      if (car.getComponents().stream()
+          .anyMatch(x -> x.longValue() == componentId)) {
+        return true;
+      }
+    }
+    return false;
+  }
 }