diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java
index 671164801e1d893f710130b370d3ba0d077d5c9f..06dd6c54e3565b769a7bcff5cfba233dc10b0236 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/facades/TeamManagerFacadeImpl.java
@@ -38,7 +38,7 @@ public class TeamManagerFacadeImpl implements TeamManagerFacade{
         );
         Player newPlayer = beanMappingService.mapTo(playerCreateDTO, Player.class);
         playerService.createPlayer(newPlayer, team);
-        teamService.addPlayerToTeam(newPlayer, team);
+        teamService.addPlayerToTeam(team, newPlayer);
     }
 
     @Override
@@ -49,7 +49,8 @@ public class TeamManagerFacadeImpl implements TeamManagerFacade{
         Player player = playerService.findPlayer(playerId).orElseThrow(
                 () -> new UnknownPlayerException("Player not found")
         );
-        teamService.addPlayerToTeam(player, team);
+        teamService.addPlayerToTeam(team, player);
+        playerService.addTeamToPlayer(player, team);
     }
 
     @Override
@@ -60,6 +61,13 @@ public class TeamManagerFacadeImpl implements TeamManagerFacade{
 
     @Override
     public void firePlayer(long playerId, long teamId) {
-
+        Team team = teamService.getTeam(teamId).orElseThrow(
+                () -> new UnknownTeamException("Team not found")
+        );
+        Player player = playerService.findPlayer(playerId).orElseThrow(
+                () -> new UnknownPlayerException("Player not found")
+        );
+        teamService.removePlayerFromTeam(team, player);
+        playerService.removeTeamFromPlayer(player, team);
     }
 }
diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/model/Team.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/model/Team.java
index ab5bc00d52168b0e94a5ee903fd07cdc002789a4..2b6208224be44470c0ede848582b760d802586cf 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/model/Team.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/model/Team.java
@@ -65,6 +65,10 @@ public class Team implements IDEqual, DirtyHash {
         return players.remove(player);
     }
 
+    public boolean containsPlayer(Player player) {
+        return players.contains(player);
+    }
+
     @Override
     public String toString() {
         return "Team{" +
diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerService.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerService.java
index 035ccfbe6ab7b9f6b6c70f1dbbdc1bc48ef595da..e9f887a510dbe04e6048dc76212dfde0734a705a 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerService.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerService.java
@@ -23,4 +23,9 @@ public interface PlayerService {
     void createPlayer(Player player, Team team);
 
     Collection<Player> getFreePlayers();
+
+    void addTeamToPlayer(Player player, Team team);
+
+    void removeTeamFromPlayer(Player player, Team team);
+
 }
diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerServiceImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerServiceImpl.java
index 809883662f5f2e733cf8993693b329ef4962dcfd..c97e71939cc803d47ea22a44ad503122228ad246 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerServiceImpl.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/PlayerServiceImpl.java
@@ -1,6 +1,7 @@
 package cz.muni.fi.pa165.icehockeymanager.services;
 
 import cz.muni.fi.pa165.icehockeymanager.dao.PlayerDao;
+import cz.muni.fi.pa165.icehockeymanager.exceptions.PlayerNotInTeamException;
 import cz.muni.fi.pa165.icehockeymanager.model.Player;
 import cz.muni.fi.pa165.icehockeymanager.model.Team;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,4 +36,19 @@ public class PlayerServiceImpl implements PlayerService {
     public Collection<Player> getFreePlayers() {
         return playerDao.getAllFreePlayers();
     }
+
+    @Override
+    public void addTeamToPlayer(Player player, Team team) {
+        player.setTeam(team);
+        playerDao.update(player);
+    }
+
+    @Override
+    public void removeTeamFromPlayer(Player player, Team team) {
+        if(!player.getTeam().equals(team)){
+            throw new PlayerNotInTeamException("Player not in this team");
+        }
+        player.setTeam(null);
+        playerDao.update(player);
+    }
 }
diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java
index 492b6eecf3ce1b4882672a6d65d5baa9eb8282ca..bb249c8c1a13e4de2a2d5d4389302ce43b2b6982 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamService.java
@@ -26,5 +26,7 @@ public interface TeamService {
      */
     Optional<Team> getTeam(long id);
 
-    void addPlayerToTeam(Player player, Team team);
+    void addPlayerToTeam(Team team, Player player);
+
+    void removePlayerFromTeam(Team team, Player player);
 }
diff --git a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamServiceImpl.java b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamServiceImpl.java
index 797fd6e702bd8f511b0d56680c874e0237264a05..a8c9a5d8879c7ec4c636e1586dfa1a509fdd3c91 100644
--- a/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamServiceImpl.java
+++ b/src/main/java/cz/muni/fi/pa165/icehockeymanager/services/TeamServiceImpl.java
@@ -1,6 +1,7 @@
 package cz.muni.fi.pa165.icehockeymanager.services;
 
 import cz.muni.fi.pa165.icehockeymanager.dao.TeamDao;
+import cz.muni.fi.pa165.icehockeymanager.exceptions.PlayerNotInTeamException;
 import cz.muni.fi.pa165.icehockeymanager.model.Player;
 import cz.muni.fi.pa165.icehockeymanager.model.Team;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,8 +33,17 @@ public class TeamServiceImpl implements TeamService {
     }
 
     @Override
-    public void addPlayerToTeam(Player player, Team team){
+    public void addPlayerToTeam(Team team, Player player) {
         team.addPlayer(player);
         teamDao.update(team);
     }
+
+    @Override
+    public void removePlayerFromTeam(Team team, Player player) {
+        if(!team.containsPlayer(player)){
+            throw new PlayerNotInTeamException("Player not in this team");
+        }
+        team.removePlayer(player);
+        teamDao.update(team);
+    }
 }