diff --git a/overcooked_simulator/counters.py b/overcooked_simulator/counters.py
index 49716e667f69849e2ec4cd4dbc41215856c7f420..f63d77aac4d9a2ae6a146b164051c23a4ca3e90f 100644
--- a/overcooked_simulator/counters.py
+++ b/overcooked_simulator/counters.py
@@ -543,6 +543,11 @@ class CookingCounter(Counter):
     def __repr__(self):
         return f"{self.name}(pos={self.pos},occupied_by={self.occupied_by})"
 
+    def to_dict(self) -> dict:
+        d = super().to_dict()
+        d.update((("type", self.name),))
+        return d
+
 
 class Sink(Counter):
     """The counter in which the dirty plates can be washed to clean plates.
diff --git a/overcooked_simulator/gui_2d_vis/drawing.py b/overcooked_simulator/gui_2d_vis/drawing.py
index 11ee0c93137eccb0fd0c0c471a589755728bc5c7..415e0ce302c93ce2857f58569e5ed89e41c0aacd 100644
--- a/overcooked_simulator/gui_2d_vis/drawing.py
+++ b/overcooked_simulator/gui_2d_vis/drawing.py
@@ -373,10 +373,16 @@ class Visualizer:
         if counter_type in self.config:
             self.draw_thing(screen, pos, grid_size, self.config[counter_type]["parts"])
         else:
+            if counter_type in self.config:
+                parts = self.config[counter_type]["parts"]
+            elif counter_type.endswith("Dispenser"):
+                parts = self.config["Dispenser"]["parts"]
+            else:
+                raise ValueError(f"Can not draw counter type {counter_type}")
             self.draw_thing(
                 screen=screen,
                 pos=pos,
-                parts=self.config[counter_type]["parts"],
+                parts=parts,
                 grid_size=grid_size,
             )
 
diff --git a/overcooked_simulator/gui_2d_vis/overcooked_gui.py b/overcooked_simulator/gui_2d_vis/overcooked_gui.py
index e1f5a5592f098ea4eaf1560818b93e9845c9a672..1370d8475ccf53668005af4902b9939b1420d201 100644
--- a/overcooked_simulator/gui_2d_vis/overcooked_gui.py
+++ b/overcooked_simulator/gui_2d_vis/overcooked_gui.py
@@ -15,14 +15,7 @@ from websockets.sync.client import connect
 from overcooked_simulator import ROOT_DIR
 from overcooked_simulator.game_server import CreateEnvironmentConfig
 from overcooked_simulator.gui_2d_vis.drawing import Visualizer
-from overcooked_simulator.gui_2d_vis.game_colors import BLUE, colors, Color
-from overcooked_simulator.counters import Counter, CookingCounter
-from overcooked_simulator.game_items import (
-    Item,
-    CookingEquipment,
-    Plate,
-)
-from overcooked_simulator.order import Order
+from overcooked_simulator.gui_2d_vis.game_colors import colors
 from overcooked_simulator.overcooked_environment import (
     Action,
     ActionType,
diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py
index 0f4214afe3316daa1a0bca132a825bca2319af95..ce79e280b4760a59ab92129f86bd26c905639a1f 100644
--- a/overcooked_simulator/overcooked_environment.py
+++ b/overcooked_simulator/overcooked_environment.py
@@ -714,7 +714,9 @@ class Environment:
                     self.perform_movement(player, passed_time)
 
             for counter in self.counters:
-                if isinstance(counter, (CuttingBoard, Stove, Sink, PlateDispenser)):
+                if isinstance(
+                    counter, (CuttingBoard, CookingCounter, Sink, PlateDispenser)
+                ):
                     counter.progress(passed_time=passed_time, now=self.env_time)
             self.order_and_score.progress(passed_time=passed_time, now=self.env_time)