diff --git a/death.lua b/death.lua
deleted file mode 100644
index 6d36664510982986f2494609afc718d637cab6d6..0000000000000000000000000000000000000000
--- a/death.lua
+++ /dev/null
@@ -1,299 +0,0 @@
-
--- adapted from https://github.com/pandorabox-io/pandorabox_custom/blob/master/death.lua
-local WAYPOINT_EXPIRES_SECONDS = tonumber(minetest.settings:get("kif_custom.death.waypoint_expires_seconds")) or 60 * 60
-local WAYPOINT_EXPIRES_SECONDS_CREATIVE = tonumber(minetest.settings:get("kif_custom.death.waypoint_expires_seconds_creative")) or 5 * 60
-
-local UPDATE_INTERVAL = tonumber(minetest.settings:get("kif_custom.death.update_interval")) or 5
-local WAYPOINT_SATURATION = tonumber(minetest.settings:get("kif_custom.death.waypoint_saturation")) or 1
-
-local MARKERS_FILE = minetest.get_worldpath().."/death_markers.json"
-
-
--- table for deaths indexed by player name and pos
-local death_markers = {}
-local dirty = false
-local WRITEBACK_INTERVAL_SEC = 10
-
--- table to remember which hud elements we know and manage (per player and pos)
-local managed_hud_ids = {}
-
--- color calculation got a bit crazy, so let's cache these...
-local color_cache = {}
-
-
-local read_json_file = function(path)
-	local file = io.open(path, "r")
-	local content = {}
-	if file then
-		local json = file:read("*a")
-		content = minetest.parse_json(json or "[]") or {}
-		file:close()
-	end
-	return content
-end
-
-local write_json_file = function(path, content)
-	local file = io.open(path,"w")
-	local json = minetest.write_json(content)
-	if file and file:write(json) and file:close() then
-		return true
-	else
-		return false
-	end
-end
-
-death_markers = read_json_file(MARKERS_FILE)
-
-local mark_dirty_and_schedule_writeback = function()
-	if not dirty then
-		dirty = true
-		minetest.after(WRITEBACK_INTERVAL_SEC, function()
-			if dirty then
-				write_json_file(MARKERS_FILE, death_markers)
-				dirty = false
-			end
-		end)
-	end
-end
-
-
--- add something to the bones on_punch to remove markers when the bones are picked up
-
-local bones_def = minetest.registered_items["bones:bones"]
-assert(bones_def)
-
-local bones_on_punch = bones_def.on_punch
-assert(bones_on_punch)
-assert(type(bones_on_punch) == "function")
-
-minetest.override_item("bones:bones", {
-	on_punch = function(pos, node, player)
-		-- call original function
-		bones_on_punch(pos, node, player)
-
-		local player_name = player:get_player_name()
-		local pos_string = minetest.pos_to_string(pos)
-
-		if death_markers[player_name] ~= nil and death_markers[player_name][pos_string] ~= nil then
-			minetest.after(1, function()
-				if minetest.get_node(pos).name ~= "bones:bones" then
-					death_markers[player_name][pos_string] = nil
-					update_hud_markers(player_name)
-				end
-			end)
-		end
-	end
-})
-
-
-minetest.register_on_shutdown(function()
-	if dirty then
-		write_json_file(MARKERS_FILE, death_markers)
-		dirty = false
-	end
-
-	-- clean up markers (not sure if this makes sense, but I got weird results before, so...)
-	for player_name, hud_ids in pairs(managed_hud_ids) do
-		local player = minetest.get_player_by_name(player_name)
-
-		if player ~= nil then
-			for pos_string, marker in pairs(hud_ids) do
-				player:hud_remove(hud_id)
-			end
-		end
-		managed_hud_ids[player_name] = nil
-	end
-end)
-
-
-local interpolate = function(a, b, t)
-	return t*(b-a) + a
-end
-
-local calculate_color = function(t)
-	-- clamp t between 0 and 1, in steps of 0.01
-	t = math.max(0, math.min(1, math.floor(t * 100 + 0.5) / 100))
-
-	if color_cache[t] == nil then
-		-- helper variables
-		local t2 = t^2	-- t squared
-		local it = 1 - t	-- inverse t
-		local it2 = it^2	-- inverse t squared
-
-		local r = t2
-		local g = 2*t * it
-		local b = it2
-		local avg = math.sqrt(r^2 + g^2 + b^2)
-
-		r = interpolate(avg, r, WAYPOINT_SATURATION)
-		g = interpolate(avg, g, WAYPOINT_SATURATION)
-		b = interpolate(avg, b, WAYPOINT_SATURATION)
-
-		local white_start = it2^2
-		local dimming = 1 - t^8
-
-		r = (r * (1-white_start) + white_start) * dimming
-		g = (g * (1-white_start) + white_start) * dimming
-		b = (b * (1-white_start) + white_start) * dimming
-
-		-- we have 255 steps per subpixel
-		local base = 0xFF
-
-		-- clamp values, discard fractions
-		r = math.floor(base * math.max(0, math.min(1, r)))
-		g = math.floor(base * math.max(0, math.min(1, g)))
-		b = math.floor(base * math.max(0, math.min(1, b)))
-
-		-- pack it into one number representing the RGB values
-		color_cache[t] = r*2^16 + g*2^8 + b
-	end
-
-	return color_cache[t]
-end
-
-local update_hud_markers = function(player_name)
-	if death_markers[player_name] ~= nil then
-		local player = minetest.get_player_by_name(player_name)
-		local now = os.time()
-		local valid_hud_ids = {}
-
-		for pos_string, marker in pairs(death_markers[player_name]) do
-			local t = now - marker.timestamp
-			if marker.is_creative then
-				t = t / WAYPOINT_EXPIRES_SECONDS_CREATIVE
-			else
-				t = t / WAYPOINT_EXPIRES_SECONDS
-			end
-
-			if managed_hud_ids[player_name] ~= nil and managed_hud_ids[player_name][pos_string] ~= nil then
-				local hud_id = managed_hud_ids[player_name][pos_string]
-				valid_hud_ids[hud_id] = hud_id
-
-				if t > 1 then
-					death_markers[player_name][pos_string] = nil
-					mark_dirty_and_schedule_writeback()
-
-					if player ~= nil then
-						player:hud_remove(hud_id)
-						managed_hud_ids[player_name][pos_string] = nil
-					end
-				else
-					if player ~= nil then
-						player:hud_change(hud_id, "name", marker.text)--.." (t = "..tostring(math.floor(t * 100 + 0.5) / 100)..")")
-						player:hud_change(hud_id, "number", calculate_color(t))
-					end
-				end
-			else
-				if player ~= nil and t < 1 then
-					if managed_hud_ids[player_name] == nil then
-						managed_hud_ids[player_name] = {}
-					end
-
-					local pos = minetest.string_to_pos(pos_string)
-
-					local hud_id = player:hud_add({
-						hud_elem_type = "waypoint",
-						name = marker.text,--.." (add | t = "..tostring(math.floor(t * 100 + 0.5) / 100)..")",
-						text = "m",
-						number = calculate_color(t),
-						world_pos = pos
-					})
-					managed_hud_ids[player_name][pos_string] = hud_id
-					valid_hud_ids[hud_id] = hud_id
-				end
-			end
-		end
-
-		if player ~= nil and managed_hud_ids[player_name] ~= nil then
-			-- everything that remains should be removed
-			for pos_string, hud_id in pairs(managed_hud_ids[player_name]) do
-				if valid_hud_ids[hud_id] == nil then
-					player:hud_remove(hud_id)
-					managed_hud_ids[player_name][pos_string] = nil
-				end
-			end
-		end
-	end
-end
-
-minetest.register_on_dieplayer(function(player)
-	local player_name = player:get_player_name()
-	local is_creative = creative and creative.is_enabled_for(player_name)
-
-	local pos = player:get_pos()
-
-	pos.x = math.floor(pos.x + 0.5)
-	pos.y = math.floor(pos.y + 0.5)
-	pos.z = math.floor(pos.z + 0.5)
-
-	local pos_string = minetest.pos_to_string(pos)
-
-	minetest.log("action", "[death] player '" .. player_name .. "' died at " .. pos_string .. (is_creative and " (creative)" or ""))
-	minetest.chat_send_player(player_name, "You died at " .. pos_string)
-
-	local msg_string = ""
-
-	if not is_creative then
-		msg_string = "Bones"
-
-		if player.get_attribute then
-			-- [xp_redo] keeps track of deathcount, let's see if it is there
-			local count = player:get_attribute("died")
-			if count then
-				msg_string = "Bone #" .. tostring(count)
-			end
-		end
-	else
-		msg_string = "Death"
-	end
-
-	if death_markers[player_name] == nil then
-		death_markers[player_name] = {}
-	end
-	death_markers[player_name][pos_string] = {
-		text = msg_string,
-		timestamp = os.time(),
-		is_creative = is_creative,
-	}
-	mark_dirty_and_schedule_writeback()
-
-	update_hud_markers(player_name)
-end)
-
-minetest.register_on_joinplayer(function(player)
-	local player_name = player:get_player_name()
-	update_hud_markers(player_name)
-
-	if death_markers[player_name] ~= nil then
-		minetest.after(2, function()
-			local markers = {}
-			for pos_string, marker in pairs(death_markers[player_name]) do
-				table.insert(markers, pos_string.." "..marker.text..(marker.is_creative and " (creative)" or ""))
-			end
-			--minetest.chat_send_player(player_name, "Your death markers ("..tostring(#markers).."): "..table.concat(markers, ", "))
-		end)
-	end
-end)
-
-minetest.register_on_leaveplayer(function(player)
-	local player_name = player:get_player_name()
-
-	--[[
-	for pos_string, marker in pairs(managed_hud_ids[player_name]) do
-		player:hud_remove(hud_id)
-	end
-	managed_hud_ids[player_name] = nil
-	]]--
-end)
-
-
-local update_loop
-update_loop = function()
-	for player_name, markers in pairs(managed_hud_ids) do
-		update_hud_markers(player_name)
-	end
-
-	minetest.after(UPDATE_INTERVAL, update_loop)
-end
-
-update_loop()
diff --git a/init.lua b/init.lua
index 63b5ca7a530377492197284406e75095ccdfaaa7..bc605651008a4364c5fc06a1ef0333d41385653b 100644
--- a/init.lua
+++ b/init.lua
@@ -19,8 +19,5 @@ end
 -- /spawn command
 dofile(MP.."/chat/spawn.lua")
 
--- death message
-dofile(MP.."/death.lua")
-
 -- by popular demand
 dofile(MP.."/additional_stuff/salad_pickaxe.lua")