diff --git a/fireplace/game.py b/fireplace/game.py
index <HASH>..<HASH> 100644
--- a/fireplace/game.py
+++ b/fireplace/game.py
@@ -172,6 +172,9 @@ class BaseGame(Entity):
 					else:
 						player.playstate = PlayState.WON
 			self.state = State.COMPLETE
+			self.manager.step(self.next_step, Step.FINAL_WRAPUP)
+			self.manager.step(self.next_step, Step.FINAL_GAMEOVER)
+			self.manager.step(self.next_step)
 			raise GameOver("The game has ended.")
 
 	def queue_actions(self, source, actions, event_args=None):
diff --git a/fireplace/managers.py b/fireplace/managers.py
index <HASH>..<HASH> 100644
--- a/fireplace/managers.py
+++ b/fireplace/managers.py
@@ -73,11 +73,12 @@ class GameManager(Manager):
 		for observer in self.observers:
 			observer.start_game()
 
-	def step(self, step, next_step):
+	def step(self, step, next_step=None):
 		for observer in self.observers:
 			observer.game_step(step, next_step)
 		self.obj.step = step
-		self.obj.next_step = next_step
+		if next_step is not None:
+			self.obj.next_step = next_step
 
 
 class PlayerManager(Manager):
Walk through WRAPUP and GAMEOVER at the end of the game

Touches #<I>