diff --git a/overcooked_simulator/counters.py b/overcooked_simulator/counters.py
index 8955bc66b91c36afe46337d196161f89758ab3e8..742b9bb166953ebf2c4a9f1ec535fc2042cdb873 100644
--- a/overcooked_simulator/counters.py
+++ b/overcooked_simulator/counters.py
@@ -46,6 +46,8 @@ class Counter:
         """
         if self.occupied_by is None:
             self.occupied_by = item
+        elif self.occupied_by.can_combine(item):
+            self.occupied_by.combine(item)
 
     def interact_start(self):
         """Starts an interaction by the player. Nothing happens for the standard counter."""
diff --git a/overcooked_simulator/game_items.py b/overcooked_simulator/game_items.py
index 4255e14e9f480dc69616563e19ffb2e380741e67..a40ad99dfa52abe17e6f2552c59cbc10dd54af7b 100644
--- a/overcooked_simulator/game_items.py
+++ b/overcooked_simulator/game_items.py
@@ -3,6 +3,31 @@ class HoldableItem:
 
     pass
 
+    def can_combine(self, other):
+        return False
+
+    def combine(self, other):
+        pass
+
+
+class Plate(HoldableItem):
+    def __init__(self):
+        self.clean = True
+        self.holds = None
+
+        super().__init__()
+
+    def can_combine(self, other):
+        if self.holds is None:
+            if isinstance(other, HoldableItem):
+                return True
+
+    def combine(self, other):
+        self.holds = other
+
+    def __repr__(self):
+        return f"Plate({self.holds})"
+
 
 class ProgressibleItem(HoldableItem):
     """Class for items which need to be processed (cut, cooked, ...)"""
@@ -37,5 +62,8 @@ class CuttableItem(ProgressibleItem):
 class Tomato(CuttableItem):
     """Item class representing a tomato. Can be cut on the cutting board"""
 
+    def can_combine(self, other):
+        return False
+
     def __init__(self):
         super().__init__(steps_needed=1500)
diff --git a/overcooked_simulator/main.py b/overcooked_simulator/main.py
index ea66b93ab47e97284f48254bf3dc981a2a957e94..5138cab16b5e8d3d449c7b9d1f7fde4022750490 100644
--- a/overcooked_simulator/main.py
+++ b/overcooked_simulator/main.py
@@ -4,7 +4,7 @@ from pathlib import Path
 import numpy as np
 import pygame
 
-from overcooked_simulator.game_items import Tomato
+from overcooked_simulator.game_items import Tomato, Plate
 from overcooked_simulator.player import Player
 from overcooked_simulator.pygame_gui.pygame_gui import PyGameGUI
 from overcooked_simulator.simulation_runner import Simulator
@@ -19,6 +19,8 @@ def main():
 
     simulator.env.counters[3].occupied_by = Tomato()
     simulator.env.counters[4].occupied_by = Tomato()
+    simulator.env.counters[6].occupied_by = Plate()
+    simulator.env.counters[7].occupied_by = Plate()
 
     # TODO maybe read the player names and keyboard keys from config file?
     keys1 = [
diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py
index 3c8c036d040fb2d85f06c71db88e83471dd9523f..8aa9f198f2f51e6da32f4eea9cf825dd9c0554c7 100644
--- a/overcooked_simulator/overcooked_environment.py
+++ b/overcooked_simulator/overcooked_environment.py
@@ -183,9 +183,9 @@ class Environment:
         Returns: True if the player is intersecting with any object in the environment.
         """
         return (
-                self.detect_player_collision(player)
-                or self.detect_collision_counters(player)
-                or self.detect_collision_world_bounds(player)
+            self.detect_player_collision(player)
+            or self.detect_collision_counters(player)
+            or self.detect_collision_world_bounds(player)
         )
 
     def detect_player_collision(self, player: Player):
diff --git a/overcooked_simulator/player.py b/overcooked_simulator/player.py
index 9ae0c9f2b72d702ffe69bb0e2cc64a955b8175d6..48dd8c443b7d59e4721d4e2f4f4e405a1c58ee39 100644
--- a/overcooked_simulator/player.py
+++ b/overcooked_simulator/player.py
@@ -79,6 +79,10 @@ class Player:
             counter.drop_off(self.holding)
             self.holding = None
 
+        elif self.holding.can_combine(counter.occupied_by):
+            returned_by_counter = counter.pick_up()
+            self.holding.combine(returned_by_counter)
+
     def perform_interact_hold_start(self, counter: Counter):
         """Starts an interaction with the counter. Should be called for a
         keydown event, for holding down a key on the keyboard.
diff --git a/overcooked_simulator/pygame_gui/pygame_gui.py b/overcooked_simulator/pygame_gui/pygame_gui.py
index eff1e36452a21bdddd6c3564f7d3aa7d69c80a2b..2db2b590d54011007ac04573a05c4074b663a034 100644
--- a/overcooked_simulator/pygame_gui/pygame_gui.py
+++ b/overcooked_simulator/pygame_gui/pygame_gui.py
@@ -2,7 +2,7 @@ import numpy as np
 import pygame
 
 from overcooked_simulator.counters import CuttingBoard
-from overcooked_simulator.game_items import ProgressibleItem
+from overcooked_simulator.game_items import ProgressibleItem, Plate
 from overcooked_simulator.game_items import Tomato
 from overcooked_simulator.overcooked_environment import Action
 from overcooked_simulator.simulation_runner import Simulator
@@ -177,6 +177,17 @@ class PyGameGUI:
             rect.center = pos
             self.screen.blit(image, rect)
 
+        if isinstance(item, Plate):
+            image = pygame.image.load(
+                "overcooked_simulator/pygame_gui/images/plate.png"
+            ).convert_alpha()  # or .convert_alpha()
+            rect = image.get_rect()
+            rect.center = pos
+            self.screen.blit(image, rect)
+
+            if item.holds is not None:
+                self.draw_item(pos, item.holds)
+
         if isinstance(item, ProgressibleItem) and not item.finished:
             self.draw_progress_bar(pos, item.progressed_steps, item.steps_needed)