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 d2beea3ad986ed8802d02576a3885ece7e0399ba..f15e48c2b8569a653c035cfbcd210accda60eb87 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
@@ -25,10 +25,7 @@ public class CarRepository {
   public Optional<Car> assignDriverToCar(Long driverId, Long carId) {
     var car = new Car();
     car.setId(carId);
-    CarConfig config = new CarConfig();
-    car.setCarConfig(config);
-    var driver =
-        new Driver();
+    var driver = new Driver();
     driver.setId(driverId);
     driver.setName("Max");
     driver.setSurname("Verstappen");
diff --git a/car/src/test/java/cz/muni/pa165/car/rest/DriverManagerControllerItTest.java b/car/src/test/java/cz/muni/pa165/car/rest/DriverManagerControllerItTest.java
index 613d52e773f56877a75c97ffc22001bf8a5789ef..6cf909c531b516ca26858c26e9ab5538d8e624b4 100644
--- a/car/src/test/java/cz/muni/pa165/car/rest/DriverManagerControllerItTest.java
+++ b/car/src/test/java/cz/muni/pa165/car/rest/DriverManagerControllerItTest.java
@@ -39,7 +39,6 @@ class DriverManagerControllerItTest {
     Car carResponse = objectMapper.readValue(response, Car.class);
     Assertions.assertAll(
         () -> Assertions.assertEquals(car.getId(), carResponse.getId()),
-        () -> Assertions.assertEquals(car.getCarConfig(), carResponse.getCarConfig()),
         () -> Assertions.assertEquals(car.getDrivers(), carResponse.getDrivers())
     );
   }
diff --git a/common_library/pom.xml b/common_library/pom.xml
index 580c992879d8d47e7420a19fb743e07b53e5cfbc..e76ce03c68ab1470945e0329df81c2d202573d43 100644
--- a/common_library/pom.xml
+++ b/common_library/pom.xml
@@ -32,5 +32,13 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
     </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Car.java b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Car.java
index 37a50c141233ee8376b9dec36b461b87dc4093a1..2536fb9898c870b2f0f60a0b96913ecb4501091a 100644
--- a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Car.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Car.java
@@ -1,9 +1,16 @@
 package cz.muni.pa165.common_library.racecomponents;
 
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
 import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotNull;
+import java.io.Serializable;
 import java.util.List;
-
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -13,17 +20,29 @@ import lombok.NoArgsConstructor;
  * Class for Car instance.
  */
 @Data
+@Builder
 @NoArgsConstructor
 @AllArgsConstructor
-@Builder
-public class Car {
+@Entity
+@Table(name = "car")
+public class Car implements Serializable {
+
+  @Id
+  @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;
 
-  @NotNull
-  @Valid
-  private CarConfig carConfig;
+  //@NotNull
+  @OneToMany(fetch    = FetchType.EAGER,
+      mappedBy = "id",
+      cascade  = {CascadeType.REMOVE, CascadeType.PERSIST, CascadeType.MERGE})
+  private List<@Valid CarComponent> components;
 
-  @NotNull
+  //@NotNull
+  @OneToMany(fetch    = FetchType.EAGER,
+      mappedBy = "id",
+      cascade  = {CascadeType.REMOVE, CascadeType.PERSIST, CascadeType.MERGE})
   private List<@Valid Driver> drivers;
+
 }
 
+
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 292793a7ab7c1af278c2b21b846bfee4c45ef481..789aacb569f72e37c0fa6802a2988fef3b560674 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,17 +1,34 @@
 package cz.muni.pa165.common_library.racecomponents;
 
 
+import jakarta.persistence.Entity;
+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;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * Component class.
  */
 @Data
-public abstract class CarComponent {
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "carcomponent")
+public class CarComponent implements Serializable {
+
+  @Id
   private Long id;
 
+  @NotNull
+  private String name;
+
   @NotNull
   private BigDecimal weight;
 
@@ -20,5 +37,7 @@ public abstract class CarComponent {
 
   @NotNull
   private String manufacturer;
+
 }
 
+
diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Characteristic.java b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Characteristic.java
index 5f067f092e1202c487f7d22d5b52a9af7951354d..8dbc7430406dcaee4222fc956b674ff8e9e52124 100644
--- a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Characteristic.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Characteristic.java
@@ -1,8 +1,11 @@
 package cz.muni.pa165.common_library.racecomponents;
 
+import jakarta.persistence.Embeddable;
+
 /**
  * Characteristics of F1 drivers.
  */
+@Embeddable
 public enum Characteristic {
   AGGRESSIVENESS,
   CONSISTENCY,
diff --git a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Driver.java b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Driver.java
index 8902c36cf9c371b3de834f8f943297556c714062..d792d14d668f3fd72ec79bc49996df737ddbe845 100644
--- a/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Driver.java
+++ b/common_library/src/main/java/cz/muni/pa165/common_library/racecomponents/Driver.java
@@ -2,10 +2,13 @@ package cz.muni.pa165.common_library.racecomponents;
 
 import jakarta.persistence.ElementCollection;
 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.util.Set;
-
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -15,19 +18,23 @@ import lombok.NoArgsConstructor;
  * Driver Class.
  */
 @Data
-@Entity
+@Builder
 @NoArgsConstructor
 @AllArgsConstructor
-@Builder
-public class Driver {
+@Entity
+@Table(name = "driver")
+public class Driver implements Serializable {
 
   @Id
+  @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;
 
   @NotNull
   private String name;
+
   @NotNull
   private String surname;
+
   @NotNull
   private String nationality;
 
@@ -36,6 +43,5 @@ public class Driver {
 
   @NotNull
   private boolean isMain;
-
 }
 
diff --git a/driver/pom.xml b/driver/pom.xml
index a0d37f2a3365efec50a355d07c060f997a570aa0..c7efb5a8f4b2790287ea35bf26a6d747b5df74d6 100644
--- a/driver/pom.xml
+++ b/driver/pom.xml
@@ -16,10 +16,19 @@
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
         <dependency>
-            <groupId>fi.muni</groupId>
-            <artifactId>common_library</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-            <scope>compile</scope>
+            <groupId>com.h2database</groupId>
+            <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>
+            <version>3.0.2</version>
         </dependency>
         <dependency>
             <groupId>org.springdoc</groupId>
@@ -35,6 +44,12 @@
             <artifactId>spring-data-jpa</artifactId>
             <version>3.0.2</version>
         </dependency>
+        <dependency>
+            <groupId>fi.muni</groupId>
+            <artifactId>common_library</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <properties>
diff --git a/driver/src/main/java/cz/muni/pa165/driver/App.java b/driver/src/main/java/cz/muni/pa165/driver/App.java
index b58d4debbdc6de93f475d606d070fe460ef40c51..290e18c6f820434030f6c249abd3bde53db5b349 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/App.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/App.java
@@ -2,11 +2,15 @@ package cz.muni.pa165.driver;
 
 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/driver/src/main/java/cz/muni/pa165/driver/api/CarDto.java b/driver/src/main/java/cz/muni/pa165/driver/api/CarDto.java
index b0b858d71fded391e9aefeeb12993ff956a36a5e..f09919d4bff173d4607b44137a90d61a2e28555a 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/api/CarDto.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/api/CarDto.java
@@ -2,27 +2,35 @@ package cz.muni.pa165.driver.api;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
+import java.util.List;
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
-
-import java.util.List;
+import lombok.NoArgsConstructor;
+import org.springframework.data.util.Pair;
 
 /**
  * Dto for Car entity.
  */
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class CarDto {
 
   @NotNull
   @Schema(description = "car id", example = "1")
-  Long carId;
+  long id;
 
   @NotNull
-  @Schema(description = "config id", example = "1")
-  Long configId;
+  @Schema(description = "car's components ids and names",
+      example = "[]")
+  List<Pair<Long, String>> componentIdsNames;
 
   @NotNull
-  @Schema(description = "config id", example = "1")
-  List<Long> driversId;
+  @Schema(description = "car's drivers ids and names",
+      example = "[]")
+  List<Pair<Long, String>> driverIdsNames;
+
 }
+
diff --git a/driver/src/main/java/cz/muni/pa165/driver/api/DriverCarDto.java b/driver/src/main/java/cz/muni/pa165/driver/api/DriverCarDto.java
index 2e3b4c491d3e4efba26f6ebb17967e0d57f77676..4ca4a5081a6101eb64565722a68cecae3bd8aec0 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/api/DriverCarDto.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/api/DriverCarDto.java
@@ -19,4 +19,8 @@ public class DriverCarDto {
   @NotNull
   @Schema(description = "car id", example = "1")
   Long carId;
+
+  @Schema(description = "driver name", example = "1")
+  String driverName;
 }
+
diff --git a/driver/src/main/java/cz/muni/pa165/driver/api/DriverDto.java b/driver/src/main/java/cz/muni/pa165/driver/api/DriverDto.java
index 94551178d18227cfe9e559ef7439768aa9a42edf..af9838231c8a62b029b8939b4bbb37485b6729e9 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/api/DriverDto.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/api/DriverDto.java
@@ -1,44 +1,32 @@
 package cz.muni.pa165.driver.api;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
-
-import java.util.Set;
+import lombok.NoArgsConstructor;
 
 /**
  * Dto for Driver entity.
  */
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class DriverDto {
 
   @NotNull
   @Schema(description = "driver id", example = "1")
-  Long driverId;
-
-  @NotNull
-  @NotBlank
-  @Schema(description = "driver first name", example = "Fernando")
-  String driverFirstName;
+  long id;
 
   @NotNull
-  @NotBlank
-  @Schema(description = "driver surname", example = "Alonso")
-  String driverSurName;
+  @Schema(description = "driver name", example = "Max")
+  String name;
 
   @NotNull
-  @NotBlank
-  @Schema(description = "driver nationality", example = "Spanish")
-  String driverNationality;
+  @Schema(description = "driver surname", example = "Verstappen")
+  String surname;
 
-  @NotNull
-  @Schema(description = "driver characteristics", example = "{AGGRESSIVENESS, CONSISTENCY}")
-  Set<String> driverCharacteristics;
-
-  @NotNull
-  @Schema(description = "is driver a main driver", example = "true")
-  String driverIsMain;
 }
+
diff --git a/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarComponentRepository.java b/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarComponentRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..0701d3b757b9dbfbc2c80a218041890da8309fe4
--- /dev/null
+++ b/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarComponentRepository.java
@@ -0,0 +1,12 @@
+package cz.muni.pa165.driver.data.repository;
+
+import cz.muni.pa165.common_library.racecomponents.CarComponent;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * Repository for car config.
+ */
+@Repository
+public interface CarComponentRepository extends JpaRepository<CarComponent, Long> {
+}
diff --git a/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarConfigRepository.java b/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarConfigRepository.java
deleted file mode 100644
index 60d929fb2278dd6a9af79355a564dc560ee9be2e..0000000000000000000000000000000000000000
--- a/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarConfigRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package cz.muni.pa165.driver.data.repository;
-
-import cz.muni.pa165.common_library.racecomponents.CarConfig;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface CarConfigRepository extends JpaRepository<CarConfig, Long> {
-}
diff --git a/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarRepository.java b/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarRepository.java
index 335817a570e81acd133077c7cdebf4b18b89a46e..a366121271d36d12730301323aa3c8c41fa04955 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarRepository.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/data/repository/CarRepository.java
@@ -4,9 +4,6 @@ import cz.muni.pa165.common_library.racecomponents.Car;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Repository for car.
  */
diff --git a/driver/src/main/java/cz/muni/pa165/driver/data/repository/DriverRepository.java b/driver/src/main/java/cz/muni/pa165/driver/data/repository/DriverRepository.java
index a5ebd647b4e1a1adc7f19cb4d2ba14075bc62f19..8c41e4c4778b4a7a5b2467b6c74b9cd4ab940d99 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/data/repository/DriverRepository.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/data/repository/DriverRepository.java
@@ -1,12 +1,11 @@
 package cz.muni.pa165.driver.data.repository;
 
 import cz.muni.pa165.common_library.racecomponents.Driver;
+import java.util.List;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
-import java.util.List;
-
 /**
  * Repository for driver.
  */
diff --git a/driver/src/main/java/cz/muni/pa165/driver/rest/CarController.java b/driver/src/main/java/cz/muni/pa165/driver/rest/CarController.java
index b994554fa98c10322640559de0bbffc1a37c7019..a61c5dec29677f510c07191641c8be95e0d7f6c2 100644
--- a/driver/src/main/java/cz/muni/pa165/driver/rest/CarController.java
+++ b/driver/src/main/java/cz/muni/pa165/driver/rest/CarController.java
@@ -1,5 +1,14 @@
 package cz.muni.pa165.driver.rest;
 
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
+/**
+ * Rest controller for car.
+ */
+@RestController
+@RequestMapping(path = "/car")
+@Validated
 public class CarController {
 }
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 1adc77ee4280b8a46ff84012dd499df26530ea71..995f031c74e6c521cda156e2f2f2c93997bd465a 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
@@ -2,9 +2,10 @@ package cz.muni.pa165.driver.rest;
 
 import cz.muni.pa165.common_library.racecomponents.Driver;
 import cz.muni.pa165.driver.api.DriverDto;
-import cz.muni.pa165.driver.service.IDriverService;
+import cz.muni.pa165.driver.service.DriverService;
 import io.swagger.v3.oas.annotations.Operation;
 import jakarta.validation.Valid;
+import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
@@ -18,21 +19,18 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.List;
-
 /**
- * Controller for initialization and destruction of drivers.
+ * Rest controller for driver.
  */
 @RestController
 @RequestMapping(path = "/driver")
 @Validated
-
 public class DriverController {
 
-  private final IDriverService driverService;
+  private final DriverService driverService;
 
   @Autowired
-  public DriverController(IDriverService driverService) {
+  public DriverController(DriverService driverService) {
     this.driverService = driverService;
   }
 
@@ -62,13 +60,14 @@ public class DriverController {
 
   @Operation(summary = "Get all the signed driver of the team")
   @GetMapping(path = "/get/all", produces = MediaType.APPLICATION_JSON_VALUE)
-  public ResponseEntity<List<Driver>> getAllDrivers() {
+  public ResponseEntity<List<DriverDto>> getAllDrivers() {
     return ResponseEntity.ok(driverService.getAllDrivers());
   }
 
+
   @Operation(summary = "Get a signed driver specified by his id")
   @GetMapping(path = "/get/id={id}", produces = MediaType.APPLICATION_JSON_VALUE)
-  public ResponseEntity<Driver> getDriverById(@PathVariable("id") Long id) {
+  public ResponseEntity<DriverDto> getDriverById(@PathVariable("id") Long id) {
     return ResponseEntity.ok(driverService.getDriverById(id));
   }
 }
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 77a13ff99b706a94520e28b8ca1bff6b2b82fca8..0bd0ec51c6938111f79c507d9c2b4017e5f69836 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,47 +1,26 @@
 package cz.muni.pa165.driver.service;
 
 import cz.muni.pa165.common_library.racecomponents.Car;
-import cz.muni.pa165.common_library.racecomponents.Driver;
 import cz.muni.pa165.driver.api.CarDto;
-import cz.muni.pa165.driver.data.repository.CarConfigRepository;
-import cz.muni.pa165.driver.data.repository.CarRepository;
-import cz.muni.pa165.driver.data.repository.DriverRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 
-import java.util.stream.Collectors;
+/**
+ * Car service interface.
+ */
+public interface CarService {
 
-@Service
-public class CarService implements ICarService {
+  /**
+   * Converts a car dto into car class.
+   *
+   * @param carDto car dto object
+   * @return car class object
+   */
+  Car convertDtoToCar(CarDto carDto);
 
-  private final DriverRepository driverRepository;
-  private final CarRepository carRepository;
-  private final CarConfigRepository carConfigRepository;
-
-  @Autowired
-  CarService(DriverRepository driverRepository, CarRepository carRepository,
-             CarConfigRepository carConfigRepository) {
-    this.driverRepository = driverRepository;
-    this.carRepository = carRepository;
-    this.carConfigRepository = carConfigRepository;
-  }
-
-  private Car convertDtoToCar(CarDto carDto) {
-    return Car.builder()
-        .id(carDto.getCarId())
-        .carConfig(carConfigRepository.findById(carDto.getConfigId()).get())
-        .drivers(driverRepository.findAllById(carDto.getDriversId()))
-        .build();
-  }
-
-  private CarDto convertCarToDto(Car car) {
-    return CarDto.builder()
-        .carId(car.getId())
-        .configId(car.getCarConfig().getId())
-        .driversId(car.getDrivers()
-            .stream()
-            .map(Driver::getId)
-            .collect(Collectors.toList()))
-        .build();
-  }
+  /**
+   * Converts a car class object to car dto object.
+   *
+   * @param car car class object
+   * @return car dto object
+   */
+  CarDto convertCarToDto(Car car);
 }
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
new file mode 100644
index 0000000000000000000000000000000000000000..b842ee36aa34af678480f3011884e69a3ea18c40
--- /dev/null
+++ b/driver/src/main/java/cz/muni/pa165/driver/service/CarServiceImpl.java
@@ -0,0 +1,84 @@
+package cz.muni.pa165.driver.service;
+
+import cz.muni.pa165.common_library.exceptions.DatabaseException;
+import cz.muni.pa165.common_library.racecomponents.Car;
+import cz.muni.pa165.common_library.racecomponents.CarComponent;
+import cz.muni.pa165.common_library.racecomponents.Driver;
+import cz.muni.pa165.driver.api.CarDto;
+import cz.muni.pa165.driver.data.repository.CarComponentRepository;
+import cz.muni.pa165.driver.data.repository.CarRepository;
+import cz.muni.pa165.driver.data.repository.DriverRepository;
+import java.util.ArrayList;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.util.Pair;
+import org.springframework.stereotype.Service;
+
+/**
+ * Implementation of car service.
+ */
+@Service
+public class CarServiceImpl implements CarService {
+
+  private final DriverRepository driverRepository;
+  private final CarRepository carRepository;
+  private final CarComponentRepository carComponentRepository;
+
+  @Autowired
+  CarServiceImpl(DriverRepository driverRepository, CarRepository carRepository,
+                 CarComponentRepository carComponentRepository) {
+    this.driverRepository = driverRepository;
+    this.carRepository = carRepository;
+    this.carComponentRepository = carComponentRepository;
+  }
+
+  /**
+   * Converts a car dto into car class.
+   *
+   * @param carDto car dto object
+   * @return car class object
+   */
+  public Car convertDtoToCar(CarDto carDto) {
+    var car = Car.builder()
+        .id(carDto.getId())
+        .build();
+
+    var components = new ArrayList<CarComponent>();
+    for (Pair<Long, String> componentPair : carDto.getComponentIdsNames()) {
+      Long id = componentPair.getFirst();
+      components.add(carComponentRepository.findById(id).orElseThrow(
+          () -> new DatabaseException("Component not found")
+      ));
+    }
+    car.setComponents(components);
+    var drivers = new ArrayList<Driver>();
+    for (Pair<Long, String> driverPair : carDto.getDriverIdsNames()) {
+      Long id = driverPair.getFirst();
+      drivers.add(driverRepository.findById(id).orElseThrow(
+          () -> new DatabaseException("Driver not found")
+      ));
+    }
+    car.setDrivers(drivers);
+    return car;
+
+  }
+
+  /**
+   * Converts a car class object to car dto object.
+   *
+   * @param car car class object
+   * @return car dto object
+   */
+  public CarDto convertCarToDto(Car car) {
+    return CarDto.builder()
+        .id(car.getId())
+        .componentIdsNames(car.getComponents()
+            .stream()
+            .map(carComponent -> Pair.of(carComponent.getId(), carComponent.getName()))
+            .toList())
+        .driverIdsNames(car.getDrivers()
+            .stream()
+            .map(driver -> Pair.of(driver.getId(), driver.getName()))
+            .toList())
+        .build();
+  }
+}
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 861cd9e2268fde32015249f2088c983a33d555c1..5aa24549943ff082239744eda7538a2893700350 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,87 +1,67 @@
 package cz.muni.pa165.driver.service;
 
-import cz.muni.pa165.common_library.exceptions.DatabaseException;
-import cz.muni.pa165.common_library.exceptions.ResourceNotFoundException;
-import cz.muni.pa165.common_library.racecomponents.Characteristic;
 import cz.muni.pa165.common_library.racecomponents.Driver;
 import cz.muni.pa165.driver.api.DriverDto;
-import cz.muni.pa165.driver.data.repository.CarRepository;
-import cz.muni.pa165.driver.data.repository.DriverRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
- * Service for initialization and destruction of drivers.
+ * Driver service interface.
  */
-@Service
-public class DriverService implements IDriverService {
-
-  private final DriverRepository driverRepository;
-  private final CarRepository carRepository;
+public interface DriverService {
 
-  @Autowired
-  DriverService(DriverRepository driverRepository, CarRepository carRepository) {
-    this.driverRepository = driverRepository;
-    this.carRepository = carRepository;
-  }
+  /**
+   * Adds given driver to database.
+   *
+   * @param driverDto driver dto object
+   * @return added driver class object
+   */
+  Driver addDriver(DriverDto driverDto);
 
-  private Driver convertDtoToDriver(DriverDto driverDto) {
-    return Driver.builder()
-        .id(driverDto.getDriverId())
-        .name(driverDto.getDriverFirstName())
-        .surname(driverDto.getDriverSurName())
-        .nationality(driverDto.getDriverNationality())
-        .isMain(Boolean.parseBoolean(driverDto.getDriverIsMain()))
-        .characteristics(driverDto.getDriverCharacteristics()
-            .stream()
-            .map(Characteristic::valueOf)
-            .collect(Collectors.toSet()))
-        .build();
-  }
+  /**
+   * Updates driver with given id by given data.
+   *
+   * @param id driver id
+   * @param driverDto data to be updated
+   * @return updated driver class object
+   */
+  Driver updateDriverById(Long id, DriverDto driverDto);
 
-  private DriverDto convertDriverToDto(Driver driver) {
-    return DriverDto.builder()
-        .driverId(driver.getId())
-        .driverFirstName(driver.getName())
-        .driverSurName(driver.getSurname())
-        .driverNationality(driver.getNationality())
-        .driverIsMain(String.valueOf(driver.isMain()))
-        .driverCharacteristics(driver.getCharacteristics()
-            .stream()
-            .map(Characteristic::name)
-            .collect(Collectors.toSet()))
-        .build();
-  }
+  /**
+   * Removes driver with given id.
+   *
+   * @param id driver id
+   * @return removed driver class object
+   */
+  Driver removeDriverById(Long id);
 
-  public Driver addDriver(DriverDto driverDto) {
-    return driverRepository.save(convertDtoToDriver(driverDto));
-  }
+  /**
+   * Gets all stored drivers.
+   *
+   * @return all stored drivers list
+   */
+  List<DriverDto> getAllDrivers();
 
-  public Driver updateDriverById(Long id, DriverDto driverDto) {
-    var oldObj = driverRepository.findById(id).get();
-    var newObj = convertDtoToDriver(driverDto);
-    oldObj.setName(newObj.getName());
-    oldObj.setSurname(newObj.getSurname());
-    oldObj.setCharacteristics(newObj.getCharacteristics());
-    oldObj.setMain(newObj.isMain());
-    return driverRepository.save(oldObj);
-  }
+  /**
+   * Gets driver with given id.
+   *
+   * @param id driver id
+   * @return found driver class object
+   */
+  DriverDto getDriverById(Long id);
 
-  public Driver removeDriverById(Long id) {
-    var found = driverRepository.findById(id).get();
-    driverRepository.delete(found);
-    return found;
-  }
+  /**
+   * Converts driver class object into dto object.
+   *
+   * @param driver driver class object
+   * @return driver dto object
+   */
+  DriverDto convertDriverToDto(Driver driver);
 
-  public List<Driver> getAllDrivers() {
-    return driverRepository.findAll();
-  }
-
-  public Driver getDriverById(Long id) {
-    return driverRepository.findById(id).get();
-  }
+  /**
+   * Converts driver dto object into driver class object.
+   *
+   * @param driverDto driver dto object
+   * @return driver class object
+   */
+  Driver convertDtoToDriver(DriverDto driverDto);
 }
-
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
new file mode 100644
index 0000000000000000000000000000000000000000..dc0f5ee2c0c1240e0dc116768d86b090634f94cf
--- /dev/null
+++ b/driver/src/main/java/cz/muni/pa165/driver/service/DriverServiceImpl.java
@@ -0,0 +1,122 @@
+package cz.muni.pa165.driver.service;
+
+import cz.muni.pa165.common_library.exceptions.DatabaseException;
+import cz.muni.pa165.common_library.racecomponents.Driver;
+import cz.muni.pa165.driver.api.DriverDto;
+import cz.muni.pa165.driver.data.repository.CarRepository;
+import cz.muni.pa165.driver.data.repository.DriverRepository;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Implementation of driver service.
+ */
+@Service
+public class DriverServiceImpl implements DriverService {
+
+  private final DriverRepository driverRepository;
+  private final CarRepository carRepository;
+
+  @Autowired
+  DriverServiceImpl(DriverRepository driverRepository, CarRepository carRepository) {
+    this.driverRepository = driverRepository;
+    this.carRepository = carRepository;
+  }
+
+  /**
+   * Converts driver dto object into driver class object.
+   *
+   * @param driverDto driver dto object
+   * @return driver class object
+   */
+  public Driver convertDtoToDriver(DriverDto driverDto) {
+    var driver = Driver.builder()
+        .id(driverDto.getId())
+        .name(driverDto.getName())
+        .surname(driverDto.getSurname());
+    var db = driverRepository.findById(driverDto.getId()).orElseThrow(
+        () -> new DatabaseException("Driver not found."));
+    driver.nationality(db.getNationality());
+    driver.isMain(db.isMain());
+    driver.characteristics(db.getCharacteristics());
+    return driver.build();
+  }
+
+  /**
+   * Converts driver class object into dto object.
+   *
+   * @param driver driver class object
+   * @return driver dto object
+   */
+  public DriverDto convertDriverToDto(Driver driver) {
+    return DriverDto.builder()
+        .id(driver.getId())
+        .name(driver.getName())
+        .surname(driver.getSurname())
+        .build();
+  }
+
+  /**
+   * Adds given driver to database.
+   *
+   * @param driverDto driver dto object
+   * @return added driver class object
+   */
+  public Driver addDriver(DriverDto driverDto) {
+    return driverRepository.save(convertDtoToDriver(driverDto));
+  }
+
+  /**
+   * Updates driver with given id by given data.
+   *
+   * @param id driver id
+   * @param driverDto data to be updated
+   * @return updated driver class object
+   */
+  public Driver updateDriverById(Long id, DriverDto driverDto) {
+    var oldObj = driverRepository.findById(id).get();
+    var newObj = convertDtoToDriver(driverDto);
+    oldObj.setName(newObj.getName());
+    oldObj.setSurname(newObj.getSurname());
+    oldObj.setCharacteristics(newObj.getCharacteristics());
+    oldObj.setMain(newObj.isMain());
+    return driverRepository.save(oldObj);
+  }
+
+  /**
+   * Removes driver with given id.
+   *
+   * @param id driver id
+   * @return removed driver class object
+   */
+  public Driver removeDriverById(Long id) {
+    var found = driverRepository.findById(id).get();
+    driverRepository.delete(found);
+    return found;
+  }
+
+  /**
+   * Gets all stored drivers.
+   *
+   * @return all stored drivers list
+   */
+  public List<DriverDto> getAllDrivers() {
+    return driverRepository.findAll()
+        .stream()
+        .map(this::convertDriverToDto)
+        .collect(Collectors.toList());
+  }
+
+  /**
+   * Gets driver with given id.
+   *
+   * @param id driver id
+   * @return found driver class object
+   */
+  public DriverDto getDriverById(Long id) {
+    return convertDriverToDto(driverRepository.findById(id).get());
+  }
+}
+
diff --git a/driver/src/main/java/cz/muni/pa165/driver/service/ICarService.java b/driver/src/main/java/cz/muni/pa165/driver/service/ICarService.java
deleted file mode 100644
index 0731d41430a82f19c99779c19b9197b938f8cf59..0000000000000000000000000000000000000000
--- a/driver/src/main/java/cz/muni/pa165/driver/service/ICarService.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package cz.muni.pa165.driver.service;
-
-
-public interface ICarService {
-}
diff --git a/driver/src/main/java/cz/muni/pa165/driver/service/IDriverService.java b/driver/src/main/java/cz/muni/pa165/driver/service/IDriverService.java
deleted file mode 100644
index 3424b921ca480e88e23ec1d16535c6392bcd89ee..0000000000000000000000000000000000000000
--- a/driver/src/main/java/cz/muni/pa165/driver/service/IDriverService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package cz.muni.pa165.driver.service;
-
-import cz.muni.pa165.common_library.racecomponents.Driver;
-import cz.muni.pa165.driver.api.DriverDto;
-
-import java.util.List;
-
-
-public interface IDriverService {
-
-  Driver addDriver(DriverDto driverDto);
-
-  Driver updateDriverById(Long id, DriverDto driverDto);
-
-  Driver removeDriverById(Long id);
-
-  List<Driver> getAllDrivers();
-
-  Driver getDriverById(Long id);
-}
diff --git a/driver/src/main/resources/application.yml b/driver/src/main/resources/application.yml
index 389724063bd2a7c1167d286afad930ed5b30b13e..142acbe921b9fd92cc99c90489970ef5e6af82ee 100644
--- a/driver/src/main/resources/application.yml
+++ b/driver/src/main/resources/application.yml
@@ -8,3 +8,15 @@ springdoc:
     path: /openapi
   swagger-ui:
     path: /swagger-ui.html
+
+spring:
+  jpa:
+    open-in-view: false
+    database-platform: org.hibernate.dialect.H2Dialect
+    hibernate:
+      ddl-auto: create-drop
+  datasource:
+    url: jdbc:h2:mem:race;MODE=PostgreSQL
+    driverClassName: org.h2.Driver
+    username: admin
+    password: admin
diff --git a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverInitControllerTest.java b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverInitControllerTest.java
index 5afbf9033302677d2c6150de17b690f8dcbe3f09..ffc54109a36c4a23735b55093dc244b290d08616 100644
--- a/driver/src/test/java/cz/muni/pa165/driver/rest/DriverInitControllerTest.java
+++ b/driver/src/test/java/cz/muni/pa165/driver/rest/DriverInitControllerTest.java
@@ -40,7 +40,7 @@
 //            .contentType(MediaType.APPLICATION_JSON)
 //            .content(objectMapper.writeValueAsString(driver)))
 //        .andExpect(status().isOk())
-//        .andReturn().getResponse().getContentAsString();
+//        .andReturn(). ().getContentAsString();
 //    Driver driverController = objectMapper.readValue(response, Driver.class);
 //    assertingDriver(driverService, driverController);
 //  }