diff --git a/game/modules/tome/data/talents/chronomancy/chronomancy.lua b/game/modules/tome/data/talents/chronomancy/chronomancy.lua
index 3fd24d8e57655f61daa57ec09833f96fe14c5372..6410b3fd853237e613a6887c415b51e4bb841e87 100644
--- a/game/modules/tome/data/talents/chronomancy/chronomancy.lua
+++ b/game/modules/tome/data/talents/chronomancy/chronomancy.lua
@@ -124,13 +124,9 @@ newTalent{
 		return tostring(math.ceil(val)), fnt
 	end,
 	activate = function(self, t)
-		local d = require("mod.dialogs.talents.ChronomancyContingency").new(self)
-		game:registerDialog(d)
-		local co = coroutine.running()
-		d.unload = function() coroutine.resume(co, d.contingecy_talent) end
-		if not coroutine.yield() then return nil end
-		local talent = d.contingecy_talent
-				
+		local talent = self:talentDialog(require("mod.dialogs.talents.ChronomancyContingency").new(self))
+		if not talent then return nil end
+
 		return {
 			talent = talent, rest_count = 0
 		}
diff --git a/game/modules/tome/dialogs/talents/ChronomancyContingency.lua b/game/modules/tome/dialogs/talents/ChronomancyContingency.lua
index ccc9e4a0cd96fb3e99a4d12412071f205c904b14..ebb807e82fb2f95f08fc973050d51b10afcf0050 100644
--- a/game/modules/tome/dialogs/talents/ChronomancyContingency.lua
+++ b/game/modules/tome/dialogs/talents/ChronomancyContingency.lua
@@ -83,7 +83,7 @@ end
 
 function _M:use(item)
 	if not item or not item.talent then return end
-	self.contingecy_talent = item.talent
+	self.actor:talentDialogReturn(item.talent)
 	game:unregisterDialog(self)
 end