diff --git a/mods/CORE/mcl_enchanting/enchantments.lua b/mods/CORE/mcl_enchanting/enchantments.lua
index f232f11d1..01b1bd9a4 100644
--- a/mods/CORE/mcl_enchanting/enchantments.lua
+++ b/mods/CORE/mcl_enchanting/enchantments.lua
@@ -189,7 +189,7 @@ mcl_enchanting.enchantments.fortune = {
 	requires_tool = false,
 }
 
--- unimplemented
+-- implemented using walkover.register_global
 mcl_enchanting.enchantments.frost_walker = {
 	name = "Frost Walker",
 	max_level = 2,
@@ -204,6 +204,23 @@ mcl_enchanting.enchantments.frost_walker = {
 	requires_tool = false,
 }
 
+walkover.register_global(function(pos, _, player)
+	local boots = player:get_inventory():get_stack("armor", 5)
+	local frost_walker = mcl_enchanting.get_enchantment(boots, "frost_walker")
+	if frost_walker <= 0 then
+		return
+	end
+	local radius = frost_walker + 2
+	local minp = {x = pos.x - radius, y = pos.y, z = pos.z - radius}
+	local maxp = {x = pos.x + radius, y = pos.y, z = pos.z + radius}
+	local positions = minetest.find_nodes_in_area_under_air(minp, maxp, "mcl_core:water_source")
+	for _, p in ipairs(positions) do
+		if vector.distance(pos, p) <= radius then
+			minetest.set_node(p, {name = "mcl_core:frosted_ice_0"})
+		end
+	end
+end)
+
 -- implemented in mcl_bows
 mcl_enchanting.enchantments.infinity = {
 	name = "Infinity",
diff --git a/mods/CORE/mcl_enchanting/init.lua b/mods/CORE/mcl_enchanting/init.lua
index 2398dc8b4..1d4a9f7c3 100644
--- a/mods/CORE/mcl_enchanting/init.lua
+++ b/mods/CORE/mcl_enchanting/init.lua
@@ -1,7 +1,6 @@
 local modpath = minetest.get_modpath("mcl_enchanting")
 
 mcl_enchanting = {
-	lapis_itemstring = "mcl_dye:blue",
 	book_offset = vector.new(0, 0.75, 0),
 	roman_numerals = dofile(modpath .. "/roman_numerals.lua"), 			-- https://exercism.io/tracks/lua/exercises/roman-numerals/solutions/73c2fb7521e347209312d115f872fa49
 	enchantments = {},
diff --git a/mods/CORE/mcl_enchanting/mod.conf b/mods/CORE/mcl_enchanting/mod.conf
index 3680b4fa9..fef460ab1 100644
--- a/mods/CORE/mcl_enchanting/mod.conf
+++ b/mods/CORE/mcl_enchanting/mod.conf
@@ -1,5 +1,5 @@
 name = mcl_enchanting
 description = The rewrite of the Enchanting mod for MineClone2
-depends = mcl_formspec, tt, mcl_books
+depends = mcl_formspec, tt, mcl_books, walkover
 optional_depends = screwdriver
 author = Fleckenstein
diff --git a/mods/CORE/walkover/init.lua b/mods/CORE/walkover/init.lua
index 1e2749ff5..6bbd505d2 100644
--- a/mods/CORE/walkover/init.lua
+++ b/mods/CORE/walkover/init.lua
@@ -1,4 +1,11 @@
 -- register extra flavours of a base nodedef
+walkover = {}
+walkover.registered_globals = {}
+
+function walkover.register_global(func)
+	table.insert(walkover.registered_globals, func)
+end
+
 local timer = 0
 minetest.register_globalstep(function(dtime)
 	timer = timer + dtime;
@@ -10,11 +17,15 @@ minetest.register_globalstep(function(dtime)
             if loc ~= nil then
                
                 local nodeiamon = minetest.get_node(loc)
+                
                 if nodeiamon ~= nil then
                     local def = minetest.registered_nodes[nodeiamon.name]
                     if def ~= nil and def.on_walk_over ~= nil then
                         def.on_walk_over(loc, nodeiamon, player)
                     end
+                    for _, func in ipairs(walkover.registered_globals) do
+						func(loc, nodeiamon, player)
+                    end
                 end   
             end
         end