diff --git a/mods/default/functions.lua b/mods/default/functions.lua
index 8a173ef2..4f5f85d4 100644
--- a/mods/default/functions.lua
+++ b/mods/default/functions.lua
@@ -132,41 +132,49 @@ minetest.register_on_punchnode(on_punchnode)
 --
 
 minetest.register_abm({
-        nodenames = {"default:sapling"},
-        interval = 10,
-        chance = 50,
-        action = function(pos, node)
-                local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil
-                if is_soil == nil or is_soil == 0 then return end
-                print("A sapling grows into a tree at "..minetest.pos_to_string(pos))
-                local vm = minetest.get_voxel_manip()
-                local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16})
-                local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp}
-                local data = vm:get_data()
-                default.grow_tree(data, a, pos, math.random(1, 4) == 1, math.random(1,100000))
-                vm:set_data(data)
-                vm:write_to_map(data)
-                vm:update_map()
-        end
+	nodenames = {"default:sapling"},
+	interval = 10,
+	chance = 50,
+	action = function(pos, node)
+		local nu =  minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name
+		local is_soil = minetest.get_item_group(nu, "soil")
+		if is_soil == 0 then
+			return
+		end
+		
+		minetest.log("action", "A sapling grows into a tree at "..minetest.pos_to_string(pos))
+		local vm = minetest.get_voxel_manip()
+		local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16})
+		local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp}
+		local data = vm:get_data()
+		default.grow_tree(data, a, pos, math.random(1, 4) == 1, math.random(1,100000))
+		vm:set_data(data)
+		vm:write_to_map(data)
+		vm:update_map()
+	end
 })
 
 minetest.register_abm({
-        nodenames = {"default:junglesapling"},
-        interval = 10,
-        chance = 50,
-        action = function(pos, node)
-                local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil
-                if is_soil == nil or is_soil == 0 then return end
-                print("A jungle sapling grows into a tree at "..minetest.pos_to_string(pos))
-                local vm = minetest.get_voxel_manip()
-                local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y-1, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16})
-                local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp}
-                local data = vm:get_data()
-                default.grow_jungletree(data, a, pos, math.random(1,100000))
-                vm:set_data(data)
-                vm:write_to_map(data)
-                vm:update_map()
-        end
+	nodenames = {"default:junglesapling"},
+	interval = 10,
+	chance = 50,
+	action = function(pos, node)
+		local nu =  minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name
+		local is_soil = minetest.get_item_group(nu, "soil")
+		if is_soil == 0 then
+			return
+		end
+		
+		minetest.log("action", "A jungle sapling grows into a tree at "..minetest.pos_to_string(pos))
+		local vm = minetest.get_voxel_manip()
+		local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y-1, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16})
+		local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp}
+		local data = vm:get_data()
+		default.grow_jungletree(data, a, pos, math.random(1,100000))
+		vm:set_data(data)
+		vm:write_to_map(data)
+		vm:update_map()
+	end
 })
 
 --