diff --git a/race/pom.xml b/race/pom.xml
index 724c41b9a3e206e732cc80eb0f6b20b788bab4ec..266c650e014f8a1ddca70c7dbf43f2ba0338defa 100644
--- a/race/pom.xml
+++ b/race/pom.xml
@@ -32,24 +32,6 @@
             <version>0.0.1-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>fi.muni</groupId>
-            <artifactId>car</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>fi.muni</groupId>
-            <artifactId>driver</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>fi.muni</groupId>
-            <artifactId>component</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
diff --git a/race/src/main/java/cz/muni/pa165/race/App.java b/race/src/main/java/cz/muni/pa165/race/App.java
index 172899c5771f8e094eeb302d6d95f80b0fe27573..874755e90d6b2d58231719d80c9f79ee6e25937f 100644
--- a/race/src/main/java/cz/muni/pa165/race/App.java
+++ b/race/src/main/java/cz/muni/pa165/race/App.java
@@ -1,10 +1,8 @@
 package cz.muni.pa165.race;
 
-import cz.muni.pa165.car.data.model.Car;
+
 import cz.muni.pa165.common_library.client.ClientConfig;
 import cz.muni.pa165.common_library.exception.RestExceptionHandler;
-import cz.muni.pa165.component.data.model.CarComponent;
-import cz.muni.pa165.driver.data.model.Driver;
 import cz.muni.pa165.race.data.model.Race;
 import cz.muni.pa165.race.data.model.Season;
 import org.springframework.boot.SpringApplication;
@@ -20,8 +18,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @SpringBootApplication
 @EnableJpaRepositories(basePackages = "cz.muni.pa165.race.data.repository")
 @EnableTransactionManagement
-@EntityScan(basePackageClasses = {Race.class, Season.class, Car.class, Driver.class,
-    CarComponent.class})
+@EntityScan(basePackageClasses = {Race.class, Season.class})
 @Import({RestExceptionHandler.class, ClientConfig.class})
 public class App {
 
diff --git a/race/src/main/java/cz/muni/pa165/race/data/model/Race.java b/race/src/main/java/cz/muni/pa165/race/data/model/Race.java
index e158c0f1934cd7d407ef4c0ad48f9f9a291e5530..dba10990acb1741bf1f97e1432d46d74bac7c17e 100644
--- a/race/src/main/java/cz/muni/pa165/race/data/model/Race.java
+++ b/race/src/main/java/cz/muni/pa165/race/data/model/Race.java
@@ -1,20 +1,15 @@
 package cz.muni.pa165.race.data.model;
 
-import cz.muni.pa165.car.data.model.Car;
 import cz.muni.pa165.common_library.dtos.Location;
-import cz.muni.pa165.driver.data.model.Driver;
 import jakarta.persistence.CascadeType;
 import jakarta.persistence.Column;
 import jakarta.persistence.Entity;
 import jakarta.persistence.EnumType;
 import jakarta.persistence.Enumerated;
-import jakarta.persistence.FetchType;
 import jakarta.persistence.GeneratedValue;
 import jakarta.persistence.GenerationType;
 import jakarta.persistence.Id;
 import jakarta.persistence.JoinColumn;
-import jakarta.persistence.ManyToOne;
-import jakarta.persistence.OneToMany;
 import jakarta.persistence.OneToOne;
 import jakarta.persistence.Table;
 import jakarta.validation.constraints.Max;
diff --git a/race/src/main/java/cz/muni/pa165/race/data/repository/CarRepository.java b/race/src/main/java/cz/muni/pa165/race/data/repository/CarRepository.java
deleted file mode 100644
index b0f8e24736e5d946c712c7caa9a2ee8fcf763c03..0000000000000000000000000000000000000000
--- a/race/src/main/java/cz/muni/pa165/race/data/repository/CarRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cz.muni.pa165.race.data.repository;
-
-import cz.muni.pa165.car.data.model.Car;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-/**
- * Repository for car.
- */
-@Repository
-public interface CarRepository extends JpaRepository<Car, Long> {
-
-}
diff --git a/race/src/main/java/cz/muni/pa165/race/data/repository/DriverRepository.java b/race/src/main/java/cz/muni/pa165/race/data/repository/DriverRepository.java
deleted file mode 100644
index c5738d33a2066923df8aed853f8efb0ed2504c03..0000000000000000000000000000000000000000
--- a/race/src/main/java/cz/muni/pa165/race/data/repository/DriverRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cz.muni.pa165.race.data.repository;
-
-
-import cz.muni.pa165.driver.data.model.Driver;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-/**
- * Driver repository.
- */
-@Repository
-public interface DriverRepository extends JpaRepository<Driver, Long> {
-}
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 6c9f7ce68d5a82f47cbea4cc8750a87508bb973f..b1bdd7be9675172e847cfbbfd19ab69e1fb066e5 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
@@ -21,4 +21,9 @@ public interface RaceRepository extends JpaRepository<Race, Long> {
       + "WHERE ri.location = :location AND (do.id = :driverId OR dt.id = :driverId)")
   List<Race> findAllRacesOfDriverInLocation(@Param("location") Location raceLocation,
                                            @Param("driverId") long driverId);
+
+  @Query("SELECT r FROM Race r"
+      + " JOIN r.raceInfo ri "
+      + "WHERE ri.location = :location")
+  List<Race> findRacesByLocation(@Param("location") Location raceLocation);
 }
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 94b7693e2e13a22f2576440950ce28251ac2d7d6..80de83e4a69788982a29cc3c922fcc0cbe352822 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,11 +1,15 @@
 package cz.muni.pa165.race.rest;
 
 
+import cz.muni.pa165.common_library.dtos.Location;
 import cz.muni.pa165.common_library.dtos.RaceDto;
+import cz.muni.pa165.race.data.model.Race;
 import cz.muni.pa165.race.service.RaceService;
+import cz.muni.pa165.race.service.RaceServiceI;
 import io.swagger.v3.oas.annotations.Operation;
 import jakarta.validation.Valid;
 import java.util.List;
+import java.util.Set;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
@@ -26,9 +30,9 @@ import org.springframework.web.bind.annotation.RestController;
 @Validated
 public class RaceController {
 
-  RaceService raceService;
+  RaceServiceI raceService;
 
-  public RaceController(RaceService raceService) {
+  public RaceController(RaceServiceI raceService) {
     this.raceService = raceService;
   }
 
@@ -77,4 +81,26 @@ public class RaceController {
                                                 @RequestParam Long carId) {
     return ResponseEntity.ok(raceService.assignDriverTwo(driverTwoId, raceId, carId));
   }
+
+  @Operation(summary = "Assign position for driver two")
+  @PatchMapping(path = "/assignPointsDriverTwo",
+      produces = MediaType.APPLICATION_JSON_VALUE)
+  public ResponseEntity<RaceDto> assignPositionDriverTwo(@RequestParam Long raceId,
+                                                      @RequestParam Integer position) {
+    return ResponseEntity.ok(raceService.assignPositionForDriverTwo(raceId, position));
+  }
+
+  @Operation(summary = "Assign position for driver two")
+  @PatchMapping(path = "/assignPointsDriverOne",
+      produces = MediaType.APPLICATION_JSON_VALUE)
+  public ResponseEntity<RaceDto> assignPositionDriverOne(@RequestParam Long raceId,
+                                                         @RequestParam Integer position) {
+    return ResponseEntity.ok(raceService.assignPositionForDriverOne(raceId, position));
+  }
+
+  @Operation(summary = "get races")
+  @GetMapping(path = "/findMostSuitableDriversForLocation")
+  public ResponseEntity<Set<Long>> getMostSuitableDriversForLocation(@RequestParam Location location) {
+    return ResponseEntity.ok(raceService.findMostSuitableDriver(location));
+  }
 }
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 b3ced6adf195628df009699e0e7459d7358c65ea..18526b60120d6ef8529b817dddfa6fabafe8a25a 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,7 @@
 package cz.muni.pa165.race.rest;
 
 import cz.muni.pa165.common_library.dtos.SeasonDto;
-import cz.muni.pa165.race.service.SeasonServiceInterface;
+import cz.muni.pa165.race.service.SeasonServiceI;
 import io.swagger.v3.oas.annotations.Operation;
 import jakarta.validation.Valid;
 import java.util.List;
@@ -25,9 +25,9 @@ import org.springframework.web.bind.annotation.RestController;
 @Validated
 public class SeasonController {
 
-  SeasonServiceInterface seasonService;
+  SeasonServiceI seasonService;
 
-  public SeasonController(SeasonServiceInterface seasonService) {
+  public SeasonController(SeasonServiceI seasonService) {
     this.seasonService = seasonService;
   }
 
diff --git a/race/src/main/java/cz/muni/pa165/race/service/PointsUtil.java b/race/src/main/java/cz/muni/pa165/race/service/PointsUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..7b7d9711a1dd09ec6e433ab968aca1480708a95a
--- /dev/null
+++ b/race/src/main/java/cz/muni/pa165/race/service/PointsUtil.java
@@ -0,0 +1,24 @@
+package cz.muni.pa165.race.service;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class PointsUtil {
+
+  public Map<Integer, Integer> points;
+
+  public PointsUtil() {
+    points = new HashMap<>();
+    points.put(1, 25);
+    points.put(2, 18);
+    points.put(3, 15);
+    points.put(4, 12);
+    points.put(5, 10);
+    points.put(6, 8);
+    points.put(7, 6);
+    points.put(8, 4);
+    points.put(9, 2);
+    points.put(10, 1);
+  }
+}
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 7da921067a2552e039ce9fe188e3418c82b44f17..81145b65ca554891015385854f969ce7671b99ba 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,17 +1,21 @@
 package cz.muni.pa165.race.service;
 
-import cz.muni.pa165.car.data.model.Car;
+import cz.muni.pa165.common_library.dtos.CarResponseDto;
+import cz.muni.pa165.common_library.dtos.DriverDto;
+import cz.muni.pa165.common_library.dtos.Location;
 import cz.muni.pa165.common_library.dtos.RaceDriverCarDto;
 import cz.muni.pa165.common_library.dtos.RaceDto;
 import cz.muni.pa165.common_library.exception.BadRequestException;
 import cz.muni.pa165.common_library.exception.DatabaseException;
-import cz.muni.pa165.driver.data.model.Driver;
 import cz.muni.pa165.race.data.model.Race;
-import cz.muni.pa165.race.data.repository.CarRepository;
-import cz.muni.pa165.race.data.repository.DriverRepository;
 import cz.muni.pa165.race.data.repository.RaceRepository;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
+import java.util.Set;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
@@ -21,20 +25,17 @@ import org.springframework.web.client.RestTemplate;
  */
 // TODO chybnú hlášku spraviť konštantu
 @Service
-public class RaceService {
+public class RaceService implements RaceServiceI {
+
+  PointsUtil pointsUtil = new PointsUtil();
 
   RaceRepository raceRepository;
-  CarRepository carRepository;
-  DriverRepository driverRepository;
 
   @Autowired
   RestTemplate client;
 
-  RaceService(RaceRepository raceRepository, CarRepository carRepository,
-              DriverRepository driverRepository) {
+  RaceService(RaceRepository raceRepository) {
     this.raceRepository = raceRepository;
-    this.carRepository = carRepository;
-    this.driverRepository = driverRepository;
   }
 
   /**
@@ -97,7 +98,8 @@ public class RaceService {
 
     race.getDriver2().setDriverId(driver.getId());
     race.getDriver2().setCarId(car.getId());
-    return convertRace(raceRepository.save(race));
+    var a = convertRace(raceRepository.save(race));
+    return a;
   }
 
   /**
@@ -121,6 +123,55 @@ public class RaceService {
     return raceRepository.findAll().stream().map(this::convertRace).toList();
   }
 
+  public RaceDto assignPositionForDriverTwo(Long raceId, Integer position) {
+    var race =
+        raceRepository.findById(raceId).orElseThrow(() -> new DatabaseException("Race not found"));
+    race.getDriver2().setFinalPosition(position);
+    return convertRace(raceRepository.save(race));
+  }
+
+  public RaceDto assignPositionForDriverOne(Long raceId, Integer position) {
+    var race =
+        raceRepository.findById(raceId).orElseThrow(() -> new DatabaseException("Race not found"));
+    race.getDriver2().setFinalPosition(position);
+    return convertRace(raceRepository.save(race));
+  }
+
+  public Set<Long> findMostSuitableDriver(Location location) {
+    var races = raceRepository.findRacesByLocation(location);
+    Map<Long, Integer> driverWithPoints = new HashMap<>();
+
+    for (Race race : races) {
+      updatePointsForDriver(race.getDriver1(), driverWithPoints);
+      updatePointsForDriver(race.getDriver2(), driverWithPoints);
+    }
+
+    var max = Collections.max(driverWithPoints.values());
+    Set<Long> drivers = new HashSet<>();
+    for (Map.Entry<Long, Integer> entry : driverWithPoints.entrySet()) {
+      if (Objects.equals(entry.getValue(), max)) {
+        drivers.add(entry.getKey());
+      }
+    }
+    return drivers;
+  }
+
+  private void updatePointsForDriver(Race.RaceDriverinfo driverinfo,
+                                     Map<Long, Integer> driverWithPoints) {
+    if (driverinfo == null || driverinfo.getDriverId() == null) {
+      return;
+    }
+
+    Integer points;
+    if (driverinfo.getFinalPosition() != null) {
+      points = pointsUtil.points.get(driverinfo.getFinalPosition());
+    } else {
+      points = 0;
+    }
+
+    driverWithPoints.merge(driverinfo.getDriverId(), points, Integer::sum);
+  }
+
   private Race convertRaceDto(RaceDto raceDto) {
     var race = Race.builder()
         .id(raceDto.getId())
@@ -176,20 +227,21 @@ public class RaceService {
     if (race.getDriver2() != null) {
       raceDto.setDriverTwo(RaceDriverCarDto.builder()
           .carId(race.getDriver2().getCarId())
-          .driverId(race.getDriver2().getCarId())
+          .driverId(race.getDriver2().getDriverId())
           .build());
     }
     return raceDto;
   }
 
-  private Driver getDriver(Long driverId) {
+  private DriverDto getDriver(Long driverId) {
     var response =
-        client.getForEntity("http://localhost:8083/driver/get/id=" + driverId, Driver.class);
+        client.getForEntity("http://localhost:8083/driver/get/id=" + driverId, DriverDto.class);
     return response.getBody();
   }
 
-  private Car getCar(Long carId) {
-    var response = client.getForEntity("http://localhost:8082/car/id=" + carId, Car.class);
+  private CarResponseDto getCar(Long carId) {
+    var response =
+        client.getForEntity("http://localhost:8082/car/?carId=" + carId, CarResponseDto.class);
     return response.getBody();
   }
 }
diff --git a/race/src/main/java/cz/muni/pa165/race/service/RaceServiceI.java b/race/src/main/java/cz/muni/pa165/race/service/RaceServiceI.java
new file mode 100644
index 0000000000000000000000000000000000000000..1727f7ca1fd871735d5dbf1731808b97689b14ba
--- /dev/null
+++ b/race/src/main/java/cz/muni/pa165/race/service/RaceServiceI.java
@@ -0,0 +1,28 @@
+package cz.muni.pa165.race.service;
+
+import cz.muni.pa165.common_library.dtos.Location;
+import cz.muni.pa165.common_library.dtos.RaceDto;
+import cz.muni.pa165.race.data.model.Race;
+import java.util.List;
+import java.util.Set;
+
+public interface RaceServiceI {
+
+  RaceDto postRace(RaceDto raceDto);
+
+  RaceDto findRaceById(Long raceId);
+
+  List<RaceDto> findRaces();
+
+  String deleteRace(Long raceId);
+
+  RaceDto assignDriverOne(Long driverId, Long raceId, Long carId);
+
+  RaceDto assignDriverTwo(Long driverId, Long raceId, Long carId);
+
+  Set<Long> findMostSuitableDriver(Location location);
+
+  RaceDto assignPositionForDriverTwo(Long raceId, Integer position);
+
+  RaceDto assignPositionForDriverOne(Long raceId, Integer position);
+}
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 a625082e7da5bc751f85052ff2c79fa6bf1b9c45..78670308be1f9f75ec5a07814ebf7bb58841bf21 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
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
  * Season service.
  */
 @Service
-public class SeasonService implements SeasonServiceInterface {
+public class SeasonService implements SeasonServiceI {
 
   @Autowired
   SeasonRepository seasonRepository;
diff --git a/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java b/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceI.java
similarity index 89%
rename from race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java
rename to race/src/main/java/cz/muni/pa165/race/service/SeasonServiceI.java
index 80da12d7a9743d1a060d9e1a1ea92d1514c14eff..004dc30a05f931574772f302c4081bf80cfac28f 100644
--- a/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceInterface.java
+++ b/race/src/main/java/cz/muni/pa165/race/service/SeasonServiceI.java
@@ -6,7 +6,7 @@ import java.util.List;
 /**
  * Interface for season service.
  */
-public interface SeasonServiceInterface {
+public interface SeasonServiceI {
 
   SeasonDto postSeason(SeasonDto seasonDto);