diff --git a/car/src/main/java/cz/muni/pa165/car/App.java b/car/src/main/java/cz/muni/pa165/car/App.java
index 9d3cd300580e2384f6ed002b2bb5808acb450f85..8d546b5142bc6cde3c95a98f00ed947ae323e2bb 100644
--- a/car/src/main/java/cz/muni/pa165/car/App.java
+++ b/car/src/main/java/cz/muni/pa165/car/App.java
@@ -1,11 +1,10 @@
 package cz.muni.pa165.car;
 
-import org.json.JSONArray;
-import org.json.JSONObject;
+import cz.muni.pa165.common_library.exception.RestExceptionHandler;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 
 /**
@@ -14,6 +13,7 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 @SpringBootApplication(scanBasePackages = {"cz.muni.pa165.car"})
 @EnableJpaRepositories(basePackages = {"cz.muni.pa165.car"})
 @EntityScan("cz.muni.pa165.common_library")
+@Import(RestExceptionHandler.class)
 public class App {
 
   public static void main(String[] args) {
diff --git a/car/src/main/java/cz/muni/pa165/car/api/CarComponentDto.java b/car/src/main/java/cz/muni/pa165/car/api/CarComponentDto.java
deleted file mode 100644
index f24bb966eb1c83c9384a5ebef8d1dbbc97aa91a0..0000000000000000000000000000000000000000
--- a/car/src/main/java/cz/muni/pa165/car/api/CarComponentDto.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package cz.muni.pa165.car.api;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * Data Transfer object for CarComponent class.
- */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class CarComponentDto {
-
-  @NotNull
-  @Schema(description = "component id",
-          example     = "1")
-  Long id;
-
-  @NotNull
-  @Schema(description = "component name",
-          example     = "Default engine")
-  String name;
-
-}
diff --git a/car/src/main/java/cz/muni/pa165/car/data/repository/CarRepository.java b/car/src/main/java/cz/muni/pa165/car/data/repository/CarRepository.java
index 8b339b875199fa94b8e8eba1e2b3990216039a79..d624d845943bec0a1989b399f3e3a6d1cddbf885 100644
--- a/car/src/main/java/cz/muni/pa165/car/data/repository/CarRepository.java
+++ b/car/src/main/java/cz/muni/pa165/car/data/repository/CarRepository.java
@@ -1,11 +1,12 @@
 package cz.muni.pa165.car.data.repository;
 
+
 import cz.muni.pa165.common_library.racecomponents.Car;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 /**
- * Repository for car.
+ * Car Repository for Driver Manager.
  */
 @Repository
 public interface CarRepository extends JpaRepository<Car, Long> {}
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 1ef67e4bc66f882d50031118192c1cf075d28ddd..a36ff9c478bd281801c6c6afc42c0fbb71c47b2a 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,8 +1,8 @@
 package cz.muni.pa165.car.rest;
 
-import cz.muni.pa165.car.api.CarComponentDto;
-import cz.muni.pa165.car.api.CarDto;
 import cz.muni.pa165.car.service.CarComponentPairService;
+import cz.muni.pa165.common_library.dtos.CarComponentDto;
+import cz.muni.pa165.common_library.dtos.CarDto;
 import io.swagger.v3.oas.annotations.Operation;
 import java.util.List;
 import org.springframework.http.MediaType;
@@ -28,7 +28,7 @@ public class CarComponentPairController {
   }
 
   /**
-   * Calls facade to add a component to a car.
+   * Calls service to add a component to a car.
    *
    * @param componentId Id of the component.
    * @param carId       Id of the car.
@@ -43,7 +43,7 @@ public class CarComponentPairController {
   }
 
   /**
-   * Calls facade to remove a component from a car.
+   * Calls service to remove a component from a car.
    *
    * @param componentId Id of the component.
    * @param carId       Id of the car.
@@ -58,7 +58,7 @@ public class CarComponentPairController {
   }
 
   /**
-   * Calls facade to get all components of a car.
+   * Calls service to get all components of a car.
    *
    * @param carId Id of the car.
    * @return List of components.
diff --git a/car/src/main/java/cz/muni/pa165/car/rest/CarController.java b/car/src/main/java/cz/muni/pa165/car/rest/CarController.java
index e3d2b3e7be2651b074ea11f081c8643c7a48ff66..8dd02ec82a53c8306e3b962cea4889eb16a37001 100644
--- a/car/src/main/java/cz/muni/pa165/car/rest/CarController.java
+++ b/car/src/main/java/cz/muni/pa165/car/rest/CarController.java
@@ -1,7 +1,7 @@
 package cz.muni.pa165.car.rest;
 
-import cz.muni.pa165.car.api.CarDto;
 import cz.muni.pa165.car.service.CarService;
+import cz.muni.pa165.common_library.dtos.CarDto;
 import io.swagger.v3.oas.annotations.Operation;
 import jakarta.validation.Valid;
 import java.util.List;
@@ -56,7 +56,7 @@ public class CarController {
    */
   @Operation(summary = "Delete a car")
   @DeleteMapping(path = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-  public ResponseEntity<String> deleteCar(@Valid @RequestParam long carId) {
+  public ResponseEntity<String> deleteCar(@RequestParam Long carId) {
     return ResponseEntity.ok(carService.deleteById(carId));
   }
 
@@ -68,7 +68,7 @@ public class CarController {
    */
   @Operation(summary = "Get a car")
   @GetMapping(path = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
-  public ResponseEntity<CarDto> getCar(@RequestParam long carId) {
+  public ResponseEntity<CarDto> getCar(@RequestParam Long carId) {
     return ResponseEntity.ok(carService.getCarById(carId));
   }
 
diff --git a/car/src/main/java/cz/muni/pa165/car/rest/CarDriverPairController.java b/car/src/main/java/cz/muni/pa165/car/rest/CarDriverPairController.java
index 2c32e1bdc668362eda837ecd12452f0dc0fc0c1f..88631333bdac050fb34f5f198982d3c53b91a96e 100644
--- a/car/src/main/java/cz/muni/pa165/car/rest/CarDriverPairController.java
+++ b/car/src/main/java/cz/muni/pa165/car/rest/CarDriverPairController.java
@@ -1,8 +1,8 @@
 package cz.muni.pa165.car.rest;
 
-import cz.muni.pa165.car.api.CarDto;
-import cz.muni.pa165.car.api.DriverDto;
 import cz.muni.pa165.car.service.CarDriverPairService;
+import cz.muni.pa165.common_library.dtos.CarDto;
+import cz.muni.pa165.common_library.dtos.DriverDto;
 import io.swagger.v3.oas.annotations.Operation;
 import java.util.List;
 import org.springframework.http.MediaType;
@@ -28,7 +28,7 @@ public class CarDriverPairController {
   }
 
   /**
-   * Calls facade to assign a driver to a car.
+   * Calls service to assign a driver to a car.
    *
    * @param driverId Id of the driver.
    * @param carId    Id of the car.
@@ -43,7 +43,7 @@ public class CarDriverPairController {
   }
 
   /**
-   * Calls facade to unassing a driver from a car.
+   * Calls service to unassing a driver from a car.
    *
    * @param driverId Id of the driver.
    * @param carId    Id of the car.
@@ -58,7 +58,7 @@ public class CarDriverPairController {
   }
 
   /**
-   * Calls facade to return all drivers assigned to a car.
+   * Calls service to return all drivers assigned to a car.
    *
    * @param carId Id of the car.
    * @return List of drivers.
diff --git a/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairService.java b/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairService.java
index 28b96cc5638d5cd0037e9e755158d390a13570dc..5bd94c3db8f658b9be98321a7d7efb5f2a5a3750 100644
--- a/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairService.java
+++ b/car/src/main/java/cz/muni/pa165/car/service/CarComponentPairService.java
@@ -1,7 +1,7 @@
 package cz.muni.pa165.car.service;
 
-import cz.muni.pa165.car.api.CarComponentDto;
-import cz.muni.pa165.car.api.CarDto;
+import cz.muni.pa165.common_library.dtos.CarComponentDto;
+import cz.muni.pa165.common_library.dtos.CarDto;
 import java.util.List;
 
 /**
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 d14e38914c4dda89757977dc6102e76b02a11008..e136a426eb93ec0974392fbf47d08df878456a0b 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
@@ -1,10 +1,10 @@
 package cz.muni.pa165.car.service;
 
-import cz.muni.pa165.car.api.CarComponentDto;
-import cz.muni.pa165.car.api.CarDto;
 import cz.muni.pa165.car.data.repository.CarComponentPairRepository;
 import cz.muni.pa165.car.data.repository.CarComponentRepository;
 import cz.muni.pa165.car.data.repository.CarRepository;
+import cz.muni.pa165.common_library.dtos.CarComponentDto;
+import cz.muni.pa165.common_library.dtos.CarDto;
 import cz.muni.pa165.common_library.exception.DatabaseException;
 import cz.muni.pa165.common_library.racecomponents.CarComponent;
 import java.util.ArrayList;
@@ -74,6 +74,9 @@ public class CarComponentPairServiceImpl implements CarComponentPairService {
       componentDtos.add(
           new CarComponentDto(
               c.getId(),
+              c.getWeight(),
+              c.getPrice(),
+              c.getManufacturer(),
               c.getName()
           )
       );
diff --git a/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairService.java b/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairService.java
index 6136d5730cb70d0ab8d81e0f8b36f146af684804..edc598223d253a83c62269fa2b3a04ead082ab46 100644
--- a/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairService.java
+++ b/car/src/main/java/cz/muni/pa165/car/service/CarDriverPairService.java
@@ -1,7 +1,7 @@
 package cz.muni.pa165.car.service;
 
-import cz.muni.pa165.car.api.CarDto;
-import cz.muni.pa165.car.api.DriverDto;
+import cz.muni.pa165.common_library.dtos.CarDto;
+import cz.muni.pa165.common_library.dtos.DriverDto;
 import java.util.List;
 
 /**
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 0b9bee0a208e7c58d6d98de93b71a50802083940..68a4d81aae21765b8a9ad352fc3542d67fb3201d 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
@@ -1,10 +1,10 @@
 package cz.muni.pa165.car.service;
 
-import cz.muni.pa165.car.api.CarDto;
-import cz.muni.pa165.car.api.DriverDto;
 import cz.muni.pa165.car.data.repository.CarDriverPairRepository;
 import cz.muni.pa165.car.data.repository.CarRepository;
 import cz.muni.pa165.car.data.repository.DriverRepository;
+import cz.muni.pa165.common_library.dtos.CarDto;
+import cz.muni.pa165.common_library.dtos.DriverDto;
 import cz.muni.pa165.common_library.exception.DatabaseException;
 import cz.muni.pa165.common_library.racecomponents.Driver;
 import java.util.ArrayList;
diff --git a/car/src/main/java/cz/muni/pa165/car/service/CarService.java b/car/src/main/java/cz/muni/pa165/car/service/CarService.java
index 688ba89ede0c51df6e7d1ad75ed08260fe457c28..7fe1dbf0aed56f0e32d8d667c36727b59721fc4f 100644
--- a/car/src/main/java/cz/muni/pa165/car/service/CarService.java
+++ b/car/src/main/java/cz/muni/pa165/car/service/CarService.java
@@ -1,6 +1,6 @@
 package cz.muni.pa165.car.service;
 
-import cz.muni.pa165.car.api.CarDto;
+import cz.muni.pa165.common_library.dtos.CarDto;
 import java.util.List;
 
 /**
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 2be8f2e48c0d21abe01070315a01d312040078c4..628b91fd2f7939d50c718ed1d2378a7579f741e9 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
@@ -1,9 +1,9 @@
 package cz.muni.pa165.car.service;
 
-import cz.muni.pa165.car.api.CarDto;
 import cz.muni.pa165.car.data.repository.CarComponentRepository;
 import cz.muni.pa165.car.data.repository.CarRepository;
 import cz.muni.pa165.car.data.repository.DriverRepository;
+import cz.muni.pa165.common_library.dtos.CarDto;
 import cz.muni.pa165.common_library.exception.DatabaseException;
 import cz.muni.pa165.common_library.racecomponents.Car;
 import java.util.ArrayList;
diff --git a/common_library/pom.xml b/common_library/pom.xml
index 4e35100cd8de24ed9cf15c5618e487bae2cd74de..b4de2b6dd29cbad35645459ba4027021970749ab 100644
--- a/common_library/pom.xml
+++ b/common_library/pom.xml
@@ -41,5 +41,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.swagger.core.v3</groupId>
+            <artifactId>swagger-annotations-jakarta</artifactId>
+            <version>2.2.8</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/dtos/CarComponentDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/CarComponentDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..f34f23030a25f4e365386384f09ceddaa031a978
--- /dev/null
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/CarComponentDto.java
@@ -0,0 +1,41 @@
+package cz.muni.pa165.common_library.dtos;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * Data Transfer object for CarComponent class.
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CarComponentDto {
+
+  @NotNull
+  @Schema(description = "component id", example = "1")
+  Long id;
+
+  @NotNull
+  @Schema(description = "component weight", example = "50")
+  BigDecimal weight;
+
+  @NotNull
+  @Schema(description = "component price", example = "24000")
+  BigDecimal price;
+
+  @NotNull
+  @Schema(description = "name of the manufacturer", example = "Michellin")
+  String manufacturer;
+
+  @NotNull
+  @Schema(description = "component name", example = "Default engine")
+  String name;
+
+}
+
diff --git a/car/src/main/java/cz/muni/pa165/car/api/CarDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/CarDto.java
similarity index 95%
rename from car/src/main/java/cz/muni/pa165/car/api/CarDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/CarDto.java
index 309a567eb2b49e45c758f3d3e1926f9e21025bb2..1b9ce2fa9cefca649e1f5a0afd32558746565503 100644
--- a/car/src/main/java/cz/muni/pa165/car/api/CarDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/CarDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.car.api;
+package cz.muni.pa165.common_library.dtos;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
diff --git a/driver/src/main/java/cz/muni/pa165/driver/api/DriverCarDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverCarDto.java
similarity index 74%
rename from driver/src/main/java/cz/muni/pa165/driver/api/DriverCarDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverCarDto.java
index 869575aa85973d46e2242e38cf7c38d20780e1a6..316990e28552613591636bd0de08d6ef453afa80 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/api/DriverCarDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverCarDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.driver.api;
+package cz.muni.pa165.common_library.dtos;
 
 /**
  * Dto for DriverCar response.
diff --git a/car/src/main/java/cz/muni/pa165/car/api/DriverDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverDto.java
similarity index 93%
rename from car/src/main/java/cz/muni/pa165/car/api/DriverDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverDto.java
index 3c2a87281f20cc707418075f48f8642eebd39c89..c7d0036714270df6e41f6899e3a5fb4d5310e655 100644
--- a/car/src/main/java/cz/muni/pa165/car/api/DriverDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.car.api;
+package cz.muni.pa165.common_library.dtos;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
diff --git a/driver/src/main/java/cz/muni/pa165/driver/api/DriverInsightDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverInsightDto.java
similarity index 89%
rename from driver/src/main/java/cz/muni/pa165/driver/api/DriverInsightDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverInsightDto.java
index bc5325e3b30ff4f8e2f1dde8ea6bcb5a1d40367c..3525965abc5ac72276039fd5cfa34fcfc6ad2c4b 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/api/DriverInsightDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverInsightDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.driver.api;
+package cz.muni.pa165.common_library.dtos;
 
 import java.util.Map;
 
diff --git a/driver/src/main/java/cz/muni/pa165/driver/api/DriverResponseDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverResponseDto.java
similarity index 65%
rename from driver/src/main/java/cz/muni/pa165/driver/api/DriverResponseDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverResponseDto.java
index e7f27ccd099dfd74aa5b93a819412d3bf68eac22..e05bb898be587b8b8bc3a779d0f6e181af5940e2 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/api/DriverResponseDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverResponseDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.driver.api;
+package cz.muni.pa165.common_library.dtos;
 
 /**
  * Dto for driver response.
diff --git a/driver/src/main/java/cz/muni/pa165/driver/api/DriverUpdateDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverUpdateDto.java
similarity index 86%
rename from driver/src/main/java/cz/muni/pa165/driver/api/DriverUpdateDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverUpdateDto.java
index f9025444d2ae4ceab59743c2e959522891204340..4c574b86cf50c8e7b7dc110c9690de3c7e32a89a 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/api/DriverUpdateDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/DriverUpdateDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.driver.api;
+package cz.muni.pa165.common_library.dtos;
 
 import java.util.Map;
 
diff --git a/race/src/main/java/cz/muni/pa165/race/api/DriverCarDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/RaceDriverCarDto.java
similarity index 87%
rename from race/src/main/java/cz/muni/pa165/race/api/DriverCarDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/RaceDriverCarDto.java
index 9b3226ca764768c6ac7171e3c3af078cf0088f02..a950fc9846908df7655d8e9d907bcc5b430eb793 100644
--- a/race/src/main/java/cz/muni/pa165/race/api/DriverCarDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/RaceDriverCarDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.race.api;
+package cz.muni.pa165.common_library.dtos;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
@@ -10,7 +10,7 @@ import lombok.Data;
  */
 @Data
 @Builder
-public class DriverCarDto {
+public class RaceDriverCarDto {
 
   @NotNull
   @Schema(description = "driver id", example = "1")
diff --git a/race/src/main/java/cz/muni/pa165/race/api/RaceDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/RaceDto.java
similarity index 88%
rename from race/src/main/java/cz/muni/pa165/race/api/RaceDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/RaceDto.java
index 9651991554743f8b911a272f9bab07675b499357..b56ebfb297430cb017e879a3d4cc60543ec2d7cc 100644
--- a/race/src/main/java/cz/muni/pa165/race/api/RaceDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/RaceDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.race.api;
+package cz.muni.pa165.common_library.dtos;
 
 import cz.muni.pa165.common_library.racecomponents.Location;
 import cz.muni.pa165.common_library.racecomponents.Race;
@@ -26,11 +26,14 @@ public class RaceDto {
   private RaceDto.RaceInfo raceInfo;
 
   @Schema(description = "driver one", example = "{1, 1, Charles Leclerc}")
-  private DriverCarDto driverOne;
+  private RaceDriverCarDto driverOne;
 
   @Schema(description = "driver two", example = "{2, 2, Carlos Sainz}")
-  private DriverCarDto driverTwo;
+  private RaceDriverCarDto driverTwo;
 
+  /**
+   * Race information.
+   */
   @Data
   @Builder
   @AllArgsConstructor
diff --git a/race/src/main/java/cz/muni/pa165/race/api/RaceNameDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/RaceNameDto.java
similarity index 93%
rename from race/src/main/java/cz/muni/pa165/race/api/RaceNameDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/RaceNameDto.java
index 71c6c9d390ced6db7e227062857cd498dde25b5f..31e71ad9f85ea242a71d485708e7eb640ff43bb8 100644
--- a/race/src/main/java/cz/muni/pa165/race/api/RaceNameDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/RaceNameDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.race.api;
+package cz.muni.pa165.common_library.dtos;
 
 import cz.muni.pa165.common_library.racecomponents.Location;
 import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/race/src/main/java/cz/muni/pa165/race/api/SeasonDto.java b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/SeasonDto.java
similarity index 94%
rename from race/src/main/java/cz/muni/pa165/race/api/SeasonDto.java
rename to common_library/src/main/java/cz/muni/pa165/common_library/dtos/SeasonDto.java
index 8da65bb67a7a22abc1700a0ec698c462bc45c94d..f5ea5df1445b44fcf57d58797ed53e38933889d5 100644
--- a/race/src/main/java/cz/muni/pa165/race/api/SeasonDto.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/dtos/SeasonDto.java
@@ -1,4 +1,4 @@
-package cz.muni.pa165.race.api;
+package cz.muni.pa165.common_library.dtos;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.Max;
diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/CarComponent.java b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/CarComponent.java
index 64c3f9380618ed66937739000a66c3fc4874f4f3..aaf710468513b1a8b84cb711d0ff8ace99243baa 100644
--- a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/CarComponent.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/CarComponent.java
@@ -1,10 +1,12 @@
 package cz.muni.pa165.common_library.racecomponents;
 
-
 import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
 import jakarta.persistence.Id;
 import jakarta.persistence.Table;
 import jakarta.validation.constraints.NotNull;
+import java.io.Serializable;
 import java.math.BigDecimal;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -20,9 +22,10 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 @Entity
 @Table(name = "carcomponent")
-public class CarComponent {
+public class CarComponent implements Serializable {
 
   @Id
+  @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;
 
   @NotNull
diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Race.java b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Race.java
index 967905b15b7b85de3f8bd352fed5f0d42d956925..b0fd1569706d574cb861497f02561a614c0baf78 100644
--- a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Race.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Race.java
@@ -40,18 +40,21 @@ public class Race implements Serializable {
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;
 
-  @OneToOne(cascade= CascadeType.ALL)
+  @OneToOne(cascade = CascadeType.ALL)
   @JoinColumn(name = "race_info_id")
   private RaceInfo raceInfo;
 
-  @OneToOne(cascade= CascadeType.ALL)
+  @OneToOne(cascade = CascadeType.ALL)
   @JoinColumn(name = "driver_info_one_id")
   private RaceDriverinfo driver1;
 
-  @OneToOne(cascade= CascadeType.ALL)
+  @OneToOne(cascade = CascadeType.ALL)
   @JoinColumn(name = "driver_info_two_id")
   private RaceDriverinfo driver2;
 
+  /**
+   * Information about race driver.
+   */
   @Entity
   @Table(name = "racedriverinfo")
   @Data
@@ -77,6 +80,9 @@ public class Race implements Serializable {
     private int finalPosition;
   }
 
+  /**
+   * Information about race.
+   */
   @Entity
   @Table(name = "raceinfo")
   @Data
diff --git a/common_library/src/main/resources.mv.db b/common_library/src/main/resources.mv.db
index 9b1b72eccb39842839946971a1bea703e1e1f73b..2d0ad96b2093300a24f932e16ea0a59b9c26972f 100644
Binary files a/common_library/src/main/resources.mv.db and b/common_library/src/main/resources.mv.db differ
diff --git a/component/pom.xml b/component/pom.xml
index 94a7eaa7b264d4421529645ec63deb6a28251d25..9b25686fc78bd88a2147b3846ac79b44e0d96839 100644
--- a/component/pom.xml
+++ b/component/pom.xml
@@ -21,6 +21,17 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.24</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <version>2.1.214</version>
+        </dependency>
         <dependency>
             <groupId>org.springdoc</groupId>
             <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
@@ -32,6 +43,11 @@
             <version>0.0.1-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-jpa</artifactId>
+            <version>3.0.2</version>
+        </dependency>
     </dependencies>
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
diff --git a/component/src/main/java/cz/muni/pa165/component/App.java b/component/src/main/java/cz/muni/pa165/component/App.java
index 5f87d5b00817dc414a5ea4ed837d8894e72366ea..3ead9f59388d632420db1164711e386a4beb02b2 100644
--- a/component/src/main/java/cz/muni/pa165/component/App.java
+++ b/component/src/main/java/cz/muni/pa165/component/App.java
@@ -2,11 +2,15 @@ package cz.muni.pa165.component;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 
 /**
  * Main app.
  */
-@SpringBootApplication
+@SpringBootApplication(scanBasePackages = {"cz.muni.pa165.*"})
+@EnableJpaRepositories(basePackages = {"cz.muni.pa165.*"})
+@EntityScan("cz.muni.pa165.*")
 public class App {
 
   public static void main(String[] args) {
diff --git a/component/src/main/java/cz/muni/pa165/component/data/repository/ComponentRepository.java b/component/src/main/java/cz/muni/pa165/component/data/repository/ComponentRepository.java
deleted file mode 100644
index 11fce9b8a3234e184461b287ab06ba399cb5649a..0000000000000000000000000000000000000000
--- a/component/src/main/java/cz/muni/pa165/component/data/repository/ComponentRepository.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package cz.muni.pa165.component.data.repository;
-
-import org.springframework.stereotype.Repository;
-
-/**
- * Repo.
- */
-@Repository
-public class ComponentRepository {
-  // TODO CRUD operacie na generickej komponente
-}
diff --git a/component/src/main/java/cz/muni/pa165/component/data/repository/ComponentRepositoryInterface.java b/component/src/main/java/cz/muni/pa165/component/data/repository/ComponentRepositoryInterface.java
new file mode 100644
index 0000000000000000000000000000000000000000..040eec62a5d0b3abc8fc2738e0a63a8fdd38fad9
--- /dev/null
+++ b/component/src/main/java/cz/muni/pa165/component/data/repository/ComponentRepositoryInterface.java
@@ -0,0 +1,12 @@
+package cz.muni.pa165.component.data.repository;
+
+import cz.muni.pa165.common_library.racecomponents.CarComponent;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Repository of the car components.
+ */
+@Repository
+public interface ComponentRepositoryInterface extends JpaRepository<CarComponent, Long> {
+}
diff --git a/component/src/main/java/cz/muni/pa165/component/facade/ComponentInitFacade.java b/component/src/main/java/cz/muni/pa165/component/facade/ComponentInitFacade.java
deleted file mode 100644
index fe6d29ed18a3a211f1f954d25ccaa5c02026c943..0000000000000000000000000000000000000000
--- a/component/src/main/java/cz/muni/pa165/component/facade/ComponentInitFacade.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cz.muni.pa165.component.facade;
-
-import cz.muni.pa165.component.service.ComponentInitService;
-import org.springframework.stereotype.Service;
-
-/**
- * Facade for components initialization.
- */
-@Service
-public class ComponentInitFacade {
-
-  ComponentInitService componentService;
-
-  ComponentInitFacade(ComponentInitService componentService) {
-    this.componentService = componentService;
-  }
-
-}
diff --git a/component/src/main/java/cz/muni/pa165/component/rest/ComponentController.java b/component/src/main/java/cz/muni/pa165/component/rest/ComponentController.java
new file mode 100644
index 0000000000000000000000000000000000000000..d4d15522bb67540e27ac43cfbff78cffff2c34d6
--- /dev/null
+++ b/component/src/main/java/cz/muni/pa165/component/rest/ComponentController.java
@@ -0,0 +1,61 @@
+package cz.muni.pa165.component.rest;
+
+import cz.muni.pa165.common_library.dtos.CarComponentDto;
+import cz.muni.pa165.component.service.ComponentServiceInterface;
+import io.swagger.v3.oas.annotations.Operation;
+import jakarta.validation.Valid;
+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.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Controller for managing the components.
+ */
+@RestController
+@RequestMapping(path = "/component")
+@Validated
+public class ComponentController {
+
+  ComponentServiceInterface componentService;
+
+  ComponentController(ComponentServiceInterface componentFacade) {
+    this.componentService = componentFacade;
+  }
+
+  @Operation(summary = "Create new component")
+  @PostMapping(path = "/", consumes = MediaType.APPLICATION_JSON_VALUE,
+      produces = MediaType.APPLICATION_JSON_VALUE)
+  public ResponseEntity<CarComponentDto> createComponent(
+      @Valid @RequestBody CarComponentDto carComponent) {
+    return ResponseEntity.ok(componentService.postCarComponent(carComponent));
+  }
+
+  @Operation(summary = "Delete a car component")
+  @DeleteMapping(path = "/",
+      produces = MediaType.APPLICATION_JSON_VALUE)
+  public ResponseEntity<String> deleteComponent(@Valid @RequestParam long componentId) {
+    return ResponseEntity.ok(componentService.deleteById(componentId));
+  }
+
+  @Operation(summary = "Get a car component")
+  @GetMapping(path = "/id",
+      produces = MediaType.APPLICATION_JSON_VALUE)
+  public ResponseEntity<CarComponentDto> getComponent(@Valid @RequestParam long componentId) {
+    return ResponseEntity.ok(componentService.getCarComponentById(componentId));
+  }
+
+  @Operation(summary = "Get all car components")
+  @GetMapping(path = "/",
+      produces = MediaType.APPLICATION_JSON_VALUE)
+  public ResponseEntity<List<CarComponentDto>> getComponents() {
+    return ResponseEntity.ok(componentService.getAllCarComponents());
+  }
+}
diff --git a/component/src/main/java/cz/muni/pa165/component/rest/ComponentInitController.java b/component/src/main/java/cz/muni/pa165/component/rest/ComponentInitController.java
deleted file mode 100644
index 48d779fb71f63914d4601bf64726e910f66a5c15..0000000000000000000000000000000000000000
--- a/component/src/main/java/cz/muni/pa165/component/rest/ComponentInitController.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cz.muni.pa165.component.rest;
-
-import cz.muni.pa165.component.facade.ComponentInitFacade;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * Controller for initializing the components.
- */
-@RestController
-@RequestMapping(path = "/component")
-@Validated
-public class ComponentInitController {
-
-  ComponentInitFacade componentInitFacade;
-
-  ComponentInitController(ComponentInitFacade componentInitFacade) {
-    this.componentInitFacade = componentInitFacade;
-  }
-}
diff --git a/component/src/main/java/cz/muni/pa165/component/service/ComponentInitService.java b/component/src/main/java/cz/muni/pa165/component/service/ComponentInitService.java
deleted file mode 100644
index 95122c403ec350dc10190f54099d3a180d377667..0000000000000000000000000000000000000000
--- a/component/src/main/java/cz/muni/pa165/component/service/ComponentInitService.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package cz.muni.pa165.component.service;
-
-import cz.muni.pa165.component.data.repository.ComponentRepository;
-import org.springframework.stereotype.Service;
-
-/**
- * Service for component initialization.
- */
-@Service
-public class ComponentInitService {
-
-  ComponentRepository componentRepository;
-
-  ComponentInitService(ComponentRepository componentRepository) {
-    this.componentRepository = componentRepository;
-  }
-}
diff --git a/component/src/main/java/cz/muni/pa165/component/service/ComponentService.java b/component/src/main/java/cz/muni/pa165/component/service/ComponentService.java
new file mode 100644
index 0000000000000000000000000000000000000000..e311073a79507a5f2919670a721b4a926be7b114
--- /dev/null
+++ b/component/src/main/java/cz/muni/pa165/component/service/ComponentService.java
@@ -0,0 +1,83 @@
+package cz.muni.pa165.component.service;
+
+import cz.muni.pa165.common_library.dtos.CarComponentDto;
+import cz.muni.pa165.common_library.exception.DatabaseException;
+import cz.muni.pa165.common_library.racecomponents.CarComponent;
+import cz.muni.pa165.component.data.repository.ComponentRepositoryInterface;
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * Service for component initialization.
+ */
+@Service
+public class ComponentService implements ComponentServiceInterface {
+
+  @Autowired
+  ComponentRepositoryInterface componentRepository;
+
+  ComponentService(ComponentRepositoryInterface componentRepository) {
+    this.componentRepository = componentRepository;
+  }
+
+  public CarComponentDto postCarComponent(CarComponentDto carComponentDto) {
+    return carComponentConverter(componentRepository.save(
+        carComponentDtoConverter(carComponentDto)));
+  }
+
+  /**
+   * Finds and returns car component by id.
+   *
+   * @param carComponentId id of the component.
+   * @return found car component.
+   */
+  public CarComponentDto getCarComponentById(Long carComponentId) {
+    return carComponentConverter(componentRepository.findById(carComponentId).orElseThrow(
+        () -> new DatabaseException("Something went wrong when finding car component with id: "
+            + carComponentId + " in the database.")));
+  }
+
+  /**
+   * Get all the car components in the repository.
+   *
+   * @return list of stored car components.
+   */
+  public List<CarComponentDto> getAllCarComponents() {
+    return componentRepository.findAll()
+        .stream()
+        .map(this::carComponentConverter)
+        .toList();
+  }
+
+  /**
+   * Removes car component from repository based on the id.
+   *
+   * @param carComponentId of the car component for removal.
+   */
+  public String deleteById(Long carComponentId) {
+    componentRepository.deleteById(carComponentId);
+    return "Car component with id: " + carComponentId + "was successfully deleted";
+  }
+
+  CarComponent carComponentDtoConverter(CarComponentDto carComponentDto) {
+    return CarComponent.builder()
+        .id(carComponentDto.getId())
+        .weight(carComponentDto.getWeight())
+        .price(carComponentDto.getPrice())
+        .manufacturer(carComponentDto.getManufacturer())
+        .name(carComponentDto.getName())
+        .build();
+  }
+
+  CarComponentDto carComponentConverter(CarComponent carComponent) {
+    return CarComponentDto.builder()
+        .id(carComponent.getId())
+        .weight(carComponent.getWeight())
+        .price(carComponent.getPrice())
+        .manufacturer(carComponent.getManufacturer())
+        .name(carComponent.getName())
+        .build();
+  }
+}
diff --git a/component/src/main/java/cz/muni/pa165/component/service/ComponentServiceInterface.java b/component/src/main/java/cz/muni/pa165/component/service/ComponentServiceInterface.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ce60cfef740497e72bff9a7b9025491c74d45c5
--- /dev/null
+++ b/component/src/main/java/cz/muni/pa165/component/service/ComponentServiceInterface.java
@@ -0,0 +1,20 @@
+package cz.muni.pa165.component.service;
+
+import cz.muni.pa165.common_library.dtos.CarComponentDto;
+import java.util.List;
+
+
+/**
+ * Interface for the car component service.
+ */
+public interface ComponentServiceInterface {
+
+  public CarComponentDto postCarComponent(CarComponentDto carComponentDto);
+
+  public CarComponentDto getCarComponentById(Long carComponentId);
+
+  public List<CarComponentDto> getAllCarComponents();
+
+  public String deleteById(Long carComponentId);
+
+}
diff --git a/component/src/main/resources/META-INF/persistance.xml b/component/src/main/resources/META-INF/persistance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cfacab1d8187632144e7a694b873ab82e894548b
--- /dev/null
+++ b/component/src/main/resources/META-INF/persistance.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence https://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+
+    <persistence-unit name="jpa.sample.plain" transaction-type="RESOURCE_LOCAL">
+        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+        <class>cz.muni.pa165.common_library.racecomponents.CarComponent</class>
+        <properties>
+            <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
+            <property name="hibernate.connection.url" value="jdbc:hsqldb:mem:spring" />
+            <property name="hibernate.connection.driver_class" value="org.h2.Driver" />
+            <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+        </properties>
+    </persistence-unit>
+
+</persistence>
\ No newline at end of file
diff --git a/component/src/main/resources/application.yml b/component/src/main/resources/application.yml
index 3aa99d6dfb4bddba9368fbf5b1f92fd4cfbc7e79..ed9929935fee1ee9e6f64e8370f5f83107a3ce10 100644
--- a/component/src/main/resources/application.yml
+++ b/component/src/main/resources/application.yml
@@ -5,6 +5,16 @@ server:
 
 springdoc:
   api-docs:
-    path: /openapi
+    path: /componentApi
   swagger-ui:
-    path: /swagger-ui.html
\ No newline at end of file
+    path: /swagger-ui.html
+
+spring:
+  jpa:
+    open-in-view: false
+    database-platform: org.hibernate.dialect.H2Dialect
+  datasource:
+    url: jdbc:h2:mem:race;MODE=PostgreSQL
+    driverClassName: org.h2.Driver
+    username: admin
+    password: admin
\ No newline at end of file
diff --git a/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerItTest.java b/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerItTest.java
index 65fe7a4f3a0faa5f9985016bd5176fe2e8d9a561..3c9619a4f578deb24a97e86d847c650c0938ea3a 100644
--- a/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerItTest.java
+++ b/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerItTest.java
@@ -1,7 +1,7 @@
 package cz.muni.pa165.component.rest;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import cz.muni.pa165.component.service.ComponentInitService;
+import cz.muni.pa165.component.service.ComponentService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -19,7 +19,7 @@ class ComponentInitControllerItTest {
   private ObjectMapper objectMapper;
 
   @Autowired
-  ComponentInitService componentInitService;
+  ComponentService componentInitService;
 
 
 }
diff --git a/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerUnitTest.java b/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerUnitTest.java
index 0f4d36bd6752d273c2b0d8f01cffcc53b44eccd1..4586f73d2bd56cdd90c541c576fb05ec4de034e0 100644
--- a/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerUnitTest.java
+++ b/component/src/test/java/cz/muni/pa165/component/rest/ComponentInitControllerUnitTest.java
@@ -1,22 +1,18 @@
 package cz.muni.pa165.component.rest;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import cz.muni.pa165.component.facade.ComponentInitFacade;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.web.servlet.MockMvc;
 
-@WebMvcTest(ComponentInitController.class)
+@WebMvcTest(ComponentController.class)
 class ComponentInitControllerUnitTest {
 
   @Autowired
   private MockMvc mockMvc;
 
-  @MockBean
-  private ComponentInitFacade mockComponentInitFacade;
+  //@MockBean
+  //private ComponentInitFacade mockComponentInitFacade;
 
   @Autowired
   private ObjectMapper objectMapper;
diff --git a/driver/pom.xml b/driver/pom.xml
index c7efb5a8f4b2790287ea35bf26a6d747b5df74d6..73c6c6d3325e0e14af76f1d143ed003da5437ae0 100644
--- a/driver/pom.xml
+++ b/driver/pom.xml
@@ -20,11 +20,6 @@
             <artifactId>h2</artifactId>
             <version>2.1.214</version>
         </dependency>
-        <dependency>
-            <groupId>org.json</groupId>
-            <artifactId>json</artifactId>
-            <version>20210307</version>
-        </dependency>
         <dependency>
             <groupId>jakarta.validation</groupId>
             <artifactId>jakarta.validation-api</artifactId>
diff --git a/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverCarMapper.java b/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverCarMapper.java
index 2362d54974c2a05bd728c93d43c8e5c57a6fe69d..d05c75964502a714cfba9198757e6f2bdd6aeaaf 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverCarMapper.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverCarMapper.java
@@ -1,8 +1,8 @@
 package cz.muni.pa165.driver.mapper;
 
+import cz.muni.pa165.common_library.dtos.DriverCarDto;
 import cz.muni.pa165.common_library.racecomponents.Car;
 import cz.muni.pa165.common_library.racecomponents.Driver;
-import cz.muni.pa165.driver.api.DriverCarDto;
 
 /**
  * Interface of driver car mapper.
diff --git a/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverCarMapperImpl.java b/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverCarMapperImpl.java
index 0f9b3eb93df605f54aa21941745f326748d3d762..77cd236bdb84cd316c068a35a0f4cf9470aa38c4 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverCarMapperImpl.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverCarMapperImpl.java
@@ -1,8 +1,8 @@
 package cz.muni.pa165.driver.mapper;
 
+import cz.muni.pa165.common_library.dtos.DriverCarDto;
 import cz.muni.pa165.common_library.racecomponents.Car;
 import cz.muni.pa165.common_library.racecomponents.Driver;
-import cz.muni.pa165.driver.api.DriverCarDto;
 import org.springframework.stereotype.Component;
 
 /**
diff --git a/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverMapper.java b/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverMapper.java
index 67215558816b0c752a760af2937e653270e428c7..b503b6f24d622452608e90d6f2b14d39df1cc216 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverMapper.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverMapper.java
@@ -1,9 +1,9 @@
 package cz.muni.pa165.driver.mapper;
 
+import cz.muni.pa165.common_library.dtos.DriverInsightDto;
+import cz.muni.pa165.common_library.dtos.DriverResponseDto;
+import cz.muni.pa165.common_library.dtos.DriverUpdateDto;
 import cz.muni.pa165.common_library.racecomponents.Driver;
-import cz.muni.pa165.driver.api.DriverInsightDto;
-import cz.muni.pa165.driver.api.DriverResponseDto;
-import cz.muni.pa165.driver.api.DriverUpdateDto;
 
 /**
  * Interface for driver mapper.
diff --git a/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverMapperImpl.java b/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverMapperImpl.java
index cb9b0430511b2b4d4e6c792fac1bd77724c27eeb..a8d983899092be0c2275241de6bcbe65e3496e7f 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverMapperImpl.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/mapper/DriverMapperImpl.java
@@ -1,9 +1,9 @@
 package cz.muni.pa165.driver.mapper;
 
+import cz.muni.pa165.common_library.dtos.DriverInsightDto;
+import cz.muni.pa165.common_library.dtos.DriverResponseDto;
+import cz.muni.pa165.common_library.dtos.DriverUpdateDto;
 import cz.muni.pa165.common_library.racecomponents.Driver;
-import cz.muni.pa165.driver.api.DriverInsightDto;
-import cz.muni.pa165.driver.api.DriverResponseDto;
-import cz.muni.pa165.driver.api.DriverUpdateDto;
 import org.springframework.stereotype.Component;
 
 /**
diff --git a/driver/src/main/java/cz/muni/pa165/driver/rest/DriverController.java b/driver/src/main/java/cz/muni/pa165/driver/rest/DriverController.java
index 56b842dd20cdd7c2cbbfec1249c2176d0139a6db..b9608e0285968ec6bf97fa9bd94dee9ffe3835ca 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/rest/DriverController.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/rest/DriverController.java
@@ -1,9 +1,9 @@
 package cz.muni.pa165.driver.rest;
 
-import cz.muni.pa165.driver.api.DriverCarDto;
-import cz.muni.pa165.driver.api.DriverInsightDto;
-import cz.muni.pa165.driver.api.DriverResponseDto;
-import cz.muni.pa165.driver.api.DriverUpdateDto;
+import cz.muni.pa165.common_library.dtos.DriverCarDto;
+import cz.muni.pa165.common_library.dtos.DriverInsightDto;
+import cz.muni.pa165.common_library.dtos.DriverResponseDto;
+import cz.muni.pa165.common_library.dtos.DriverUpdateDto;
 import cz.muni.pa165.driver.service.CarService;
 import cz.muni.pa165.driver.service.DriverService;
 import io.swagger.v3.oas.annotations.Operation;
diff --git a/driver/src/main/java/cz/muni/pa165/driver/service/CarService.java b/driver/src/main/java/cz/muni/pa165/driver/service/CarService.java
index 8c2260c28ba8f5ad8fd5d0df1967f2194e72d520..95698d97cb9cb8bec3cab840575bff4176e3cd70 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/service/CarService.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/service/CarService.java
@@ -1,6 +1,6 @@
 package cz.muni.pa165.driver.service;
 
-import cz.muni.pa165.driver.api.DriverCarDto;
+import cz.muni.pa165.common_library.dtos.DriverCarDto;
 
 /**
  * Car service interface.
diff --git a/driver/src/main/java/cz/muni/pa165/driver/service/CarServiceImpl.java b/driver/src/main/java/cz/muni/pa165/driver/service/CarServiceImpl.java
index 46cda2b7372c5c16af002c13a36f897a6d403ff9..e9b17968fe46ae81af90466841d7e76fad956720 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/service/CarServiceImpl.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/service/CarServiceImpl.java
@@ -1,7 +1,7 @@
 package cz.muni.pa165.driver.service;
 
+import cz.muni.pa165.common_library.dtos.DriverCarDto;
 import cz.muni.pa165.common_library.exception.ResourceNotFoundException;
-import cz.muni.pa165.driver.api.DriverCarDto;
 import cz.muni.pa165.driver.data.repository.CarRepository;
 import cz.muni.pa165.driver.data.repository.DriverRepository;
 import cz.muni.pa165.driver.mapper.DriverCarMapper;
diff --git a/driver/src/main/java/cz/muni/pa165/driver/service/DriverService.java b/driver/src/main/java/cz/muni/pa165/driver/service/DriverService.java
index 3f31ded7748ec533f54822326866d93b594358ba..90aea4b74da248a7c73fb6121bdc19ed1dd1f34b 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/service/DriverService.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/service/DriverService.java
@@ -1,8 +1,8 @@
 package cz.muni.pa165.driver.service;
 
-import cz.muni.pa165.driver.api.DriverInsightDto;
-import cz.muni.pa165.driver.api.DriverResponseDto;
-import cz.muni.pa165.driver.api.DriverUpdateDto;
+import cz.muni.pa165.common_library.dtos.DriverInsightDto;
+import cz.muni.pa165.common_library.dtos.DriverResponseDto;
+import cz.muni.pa165.common_library.dtos.DriverUpdateDto;
 import java.util.List;
 
 /**
diff --git a/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java b/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java
index d6c375760589e0c7ebf85f488cd5cfa0ff0ff1ec..d5d3a153a0b5e328bafb6ecff4875e8d7eaddf8d 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java
@@ -1,9 +1,9 @@
 package cz.muni.pa165.driver.service;
 
+import cz.muni.pa165.common_library.dtos.DriverInsightDto;
+import cz.muni.pa165.common_library.dtos.DriverResponseDto;
+import cz.muni.pa165.common_library.dtos.DriverUpdateDto;
 import cz.muni.pa165.common_library.exception.ResourceNotFoundException;
-import cz.muni.pa165.driver.api.DriverInsightDto;
-import cz.muni.pa165.driver.api.DriverResponseDto;
-import cz.muni.pa165.driver.api.DriverUpdateDto;
 import cz.muni.pa165.driver.data.repository.DriverRepository;
 import cz.muni.pa165.driver.mapper.DriverMapper;
 import java.util.List;
diff --git a/race/src/main/java/cz/muni/pa165/race/data/repository/RaceRepository.java b/race/src/main/java/cz/muni/pa165/race/data/repository/RaceRepository.java
index 20681f4fb93e9e35a03931066f0e952496202b5d..cc5689af7a03444cbf25101a1c86251cf6b73e18 100644
--- a/race/src/main/java/cz/muni/pa165/race/data/repository/RaceRepository.java
+++ b/race/src/main/java/cz/muni/pa165/race/data/repository/RaceRepository.java
@@ -14,11 +14,11 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface RaceRepository extends JpaRepository<Race, Long> {
 
-  @Query("SELECT r FROM Race r" +
-      " JOIN r.raceInfo ri " +
-      " JOIN r.driver1 do " +
-      " JOIN r.driver2 dt " +
-      "WHERE ri.location = :location AND (do.id = :driverId OR dt.id = :driverId)")
+  @Query("SELECT r FROM Race r"
+      + " JOIN r.raceInfo ri "
+      + " JOIN r.driver1 do "
+      + " JOIN r.driver2 dt "
+      + "WHERE ri.location = :location AND (do.id = :driverId OR dt.id = :driverId)")
   List<Race> findAllRacesOfDriverInLocation(@Param("location") Location raceLocation,
                                            @Param("driverId") long driverId);
 }
diff --git a/race/src/main/java/cz/muni/pa165/race/rest/RaceController.java b/race/src/main/java/cz/muni/pa165/race/rest/RaceController.java
index 05a9e34a024d4119a92cfd345919022df74af1a2..24ce9dd85f436d57519406d49c03ef366d6e422a 100644
--- a/race/src/main/java/cz/muni/pa165/race/rest/RaceController.java
+++ b/race/src/main/java/cz/muni/pa165/race/rest/RaceController.java
@@ -1,7 +1,7 @@
 package cz.muni.pa165.race.rest;
 
 
-import cz.muni.pa165.race.api.RaceDto;
+import cz.muni.pa165.common_library.dtos.RaceDto;
 import cz.muni.pa165.race.service.RaceService;
 import io.swagger.v3.oas.annotations.Operation;
 import jakarta.validation.Valid;
diff --git a/race/src/main/java/cz/muni/pa165/race/rest/SeasonController.java b/race/src/main/java/cz/muni/pa165/race/rest/SeasonController.java
index bdfd5e080e0175889053da83b29f54ba188c5348..b3ced6adf195628df009699e0e7459d7358c65ea 100644
--- a/race/src/main/java/cz/muni/pa165/race/rest/SeasonController.java
+++ b/race/src/main/java/cz/muni/pa165/race/rest/SeasonController.java
@@ -1,7 +1,6 @@
 package cz.muni.pa165.race.rest;
 
-import cz.muni.pa165.common_library.racecomponents.Season;
-import cz.muni.pa165.race.api.SeasonDto;
+import cz.muni.pa165.common_library.dtos.SeasonDto;
 import cz.muni.pa165.race.service.SeasonServiceInterface;
 import io.swagger.v3.oas.annotations.Operation;
 import jakarta.validation.Valid;
diff --git a/race/src/main/java/cz/muni/pa165/race/service/RaceService.java b/race/src/main/java/cz/muni/pa165/race/service/RaceService.java
index c78471159b1909b3da171d034b21875ae10aaf43..85043c484b5a4fe51274825a9527522a5a6afcf3 100644
--- a/race/src/main/java/cz/muni/pa165/race/service/RaceService.java
+++ b/race/src/main/java/cz/muni/pa165/race/service/RaceService.java
@@ -1,11 +1,11 @@
 package cz.muni.pa165.race.service;
 
+import cz.muni.pa165.common_library.dtos.RaceDriverCarDto;
+import cz.muni.pa165.common_library.dtos.RaceDto;
 import cz.muni.pa165.common_library.exception.DatabaseException;
 import cz.muni.pa165.common_library.racecomponents.Car;
 import cz.muni.pa165.common_library.racecomponents.Driver;
 import cz.muni.pa165.common_library.racecomponents.Race;
-import cz.muni.pa165.race.api.DriverCarDto;
-import cz.muni.pa165.race.api.RaceDto;
 import cz.muni.pa165.race.data.repository.CarRepository;
 import cz.muni.pa165.race.data.repository.DriverRepository;
 import cz.muni.pa165.race.data.repository.RaceRepository;
@@ -143,7 +143,7 @@ public class RaceService {
             .build())
         .build();
     if (race.getDriver1() != null && race.getDriver1().getCar() != null) {
-      raceDto.setDriverOne(DriverCarDto.builder()
+      raceDto.setDriverOne(RaceDriverCarDto.builder()
           .carId(race.getDriver1().getCar().getId())
           .driverId(race.getDriver1().getId())
           .driverName(race.getDriver1().getDriver().getName()
@@ -151,7 +151,7 @@ public class RaceService {
           .build());
     }
     if (race.getDriver2() != null && race.getDriver2().getCar() != null) {
-      raceDto.setDriverTwo(DriverCarDto.builder()
+      raceDto.setDriverTwo(RaceDriverCarDto.builder()
           .carId(race.getDriver2().getCar().getId())
           .driverId(race.getDriver2().getId())
           .driverName(race.getDriver2().getDriver().getName()
@@ -162,13 +162,13 @@ public class RaceService {
   }
 
 
-  private Driver getDriver(DriverCarDto driverCarDto) {
+  private Driver getDriver(RaceDriverCarDto driverCarDto) {
     return driverRepository.findById(driverCarDto.getDriverId()).orElseThrow(
         () -> new DatabaseException("Something went wrong when"
             + "finding the driver with id: " + driverCarDto.getDriverId() + " in the database."));
   }
 
-  private Car getCar(DriverCarDto driverCarDto) {
+  private Car getCar(RaceDriverCarDto driverCarDto) {
     return carRepository.findById(driverCarDto.getCarId()).orElseThrow(
         () -> new DatabaseException("Something went wrong when"
             + "finding the car with id: " + driverCarDto.getCarId() + " in the database."));
diff --git a/race/src/main/java/cz/muni/pa165/race/service/SeasonService.java b/race/src/main/java/cz/muni/pa165/race/service/SeasonService.java
index c0e762c41152cafea73358affb4823670e71afd8..06d43d76fb4ab289699aa3fd30747ecfab2d1e24 100644
--- a/race/src/main/java/cz/muni/pa165/race/service/SeasonService.java
+++ b/race/src/main/java/cz/muni/pa165/race/service/SeasonService.java
@@ -1,10 +1,10 @@
 package cz.muni.pa165.race.service;
 
+import cz.muni.pa165.common_library.dtos.RaceNameDto;
+import cz.muni.pa165.common_library.dtos.SeasonDto;
 import cz.muni.pa165.common_library.exception.DatabaseException;
 import cz.muni.pa165.common_library.racecomponents.Race;
 import cz.muni.pa165.common_library.racecomponents.Season;
-import cz.muni.pa165.race.api.RaceNameDto;
-import cz.muni.pa165.race.api.SeasonDto;
 import cz.muni.pa165.race.data.repository.RaceRepository;
 import cz.muni.pa165.race.data.repository.SeasonRepository;
 import java.util.List;
diff --git a/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java b/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java
index 14e63aa012b7397cffd67ad084a3db6043b5bf61..80da12d7a9743d1a060d9e1a1ea92d1514c14eff 100644
--- a/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java
+++ b/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java
@@ -1,6 +1,6 @@
 package cz.muni.pa165.race.service;
 
-import cz.muni.pa165.race.api.SeasonDto;
+import cz.muni.pa165.common_library.dtos.SeasonDto;
 import java.util.List;
 
 /**