diff --git a/init.lua b/init.lua
index 71b402760e9b67ce8478a5f64b68223636ddb0f7..20822d59a4f43417a172047ca9406e4ad87a3343 100644
--- a/init.lua
+++ b/init.lua
@@ -2,7 +2,6 @@
 
 bows={
 	pvp=minetest.setting_getbool("enable_pvp"),
-	tnt=minetest.setting_getbool("enable_tnt") and minetest.get_modpath("tnt"),
 	creative=minetest.setting_getbool("creative_mode"),
 	mesecons=minetest.get_modpath("mesecons"),
 	registed_arrows={},
@@ -127,4 +126,4 @@ end
 
 dofile(minetest.get_modpath("bows") .. "/arrow.lua")
 dofile(minetest.get_modpath("bows") .. "/items_functions.lua")
-dofile(minetest.get_modpath("bows") .. "/items.lua")
\ No newline at end of file
+dofile(minetest.get_modpath("bows") .. "/items.lua")
diff --git a/items.lua b/items.lua
index df2a3a060fc82f942bded8fa7437918c5bb52c9f..4c6833100d97210c44aa75690082abb358a6adbb 100644
--- a/items.lua
+++ b/items.lua
@@ -47,19 +47,6 @@ bows.register_bow("bow_wood",{
 	},
 })
 
-bows.register_bow("bow_stone",{
-	description="Stone bow",
-	texture="bows_bow_stone.png",
-	texture_loaded="bows_bow_loaded_stone.png",
-	uses=70,
-	level=4,
-	craft={
-		{"","group:stone","farming:cotton"},
-		{"group:stone","","farming:cotton"},
-		{"","group:stone","farming:cotton"}
-	},
-})
-
 bows.register_bow("bow_steel",{
 	description="Steel bow",
 	texture="bows_bow_steel.png",
@@ -73,73 +60,21 @@ bows.register_bow("bow_steel",{
 	},
 })
 
-bows.register_bow("bow_bronze",{
-	description="Bronze bow",
-	texture="bows_bow_bronze.png",
-	texture_loaded="bows_bow_loaded_bronze.png",
-	uses=280,
-	level=10,
-	craft={
-		{"","default:bronze_ingot","farming:cotton"},
-		{"default:bronze_ingot","","farming:cotton"},
-		{"","default:bronze_ingot","farming:cotton"}
-	},
-})
-
-bows.register_bow("bow_obsidian",{
-	description="Obsidian bow",
-	texture="bows_bow_ob.png",
-	texture_loaded="bows_bow_loaded_ob.png",
-	uses=400,
-	level=11,
-	craft={
-		{"","default:obsidian","farming:cotton"},
-		{"default:obsidian","","farming:cotton"},
-		{"","default:obsidian","farming:cotton"}
-	},
-})
-
-bows.register_bow("bow_mese",{
-	description="Mese bow",
-	texture="bows_bow_mese.png",
-	texture_loaded="bows_bow_loaded_mese.png",
-	uses=500,
-	level=13,
-	craft={
-		{"","default:mese_crystal","farming:cotton"},
-		{"default:mese_crystal","","farming:cotton"},
-		{"","default:mese_crystal","farming:cotton"}
-	},
-})
-
-bows.register_bow("bow_diamond",{
-	description="Diamond bow",
-	texture="bows_bow_diamond.png",
-	texture_loaded="bows_bow_loaded_diamond.png",
-	uses=800,
-	level=19,
-	craft={
-		{"","default:diamond","farming:cotton"},
-		{"default:diamond","","farming:cotton"},
-		{"","default:diamond","farming:cotton"}
-	},
-})
-
-bows.register_bow("bow_rainbow",{
-	description="Rainbow bow",
-	texture="bows_bow_rain.png",
-	texture_loaded="bows_bow_loaded_rain.png",
-	uses=1100,
+bows.register_bow("bow_mithril",{
+	description="Mithril bow",
+	texture="bows_bow_mithril.png",
+	texture_loaded="bows_bow_loaded_mithril.png",
+	uses=910,
 	level=19,
 	craft={
-		{"","default:nyancat_rainbow","farming:cotton"},
-		{"default:nyancat_rainbow","","farming:cotton"},
-		{"","default:nyancat_rainbow","farming:cotton"}
+		{"","moreores:mithril_ingot","farming:cotton"},
+		{"moreores:mithril_ingot","","farming:cotton"},
+		{"","moreores:mithril_ingot","farming:cotton"}
 	},
 })
 
 bows.register_bow("bow_admin",{
-	description="Admin bow (admin arrows = bows:arrow_admin)",
+	description="Admin bow",
 	texture="bows_bow_admin.png",
 	texture_loaded="bows_bow_loaded_admin.png",
 	level=39,
@@ -213,6 +148,17 @@ bows.register_arrow("arrow_diamond",{
 	}
 })
 
+bows.register_arrow("arrow_mithril",{
+    description="Mithril arrow",
+    texture="bows_arrow_wood.png^[colorize:#3957A2cc",
+    damage=15,
+    craft_count=8,
+    craft={
+        {"group:arrow","group:arrow","group:arrow"},
+        {"group:arrow","default:diamond","group:arrow"},
+        {"group:arrow","group:arrow","group:arrow"},
+    }
+})
 
 bows.register_arrow("arrow_fire",{
 	description="Fire arrow",
@@ -226,32 +172,6 @@ bows.register_arrow("arrow_fire",{
 	}
 })
 
-bows.register_arrow("arrow_build",{
-	description="Build arrow",
-	texture="bows_arrow_wood.png^[colorize:#33336677",
-	on_hit_node=bows.arrow_build,
-	craft_count=8,
-	damage=8,
-	craft={
-		{"group:arrow","group:arrow","group:arrow"},
-		{"group:arrow","default:obsidian_shard","group:arrow"},
-		{"group:arrow","group:arrow","group:arrow"}
-	}
-})
-
-bows.register_arrow("arrow_dig",{
-	description="Dig arrow",
-	texture="bows_arrow_wood.png^[colorize:#333333aa",
-	on_hit_node=bows.arrow_dig,
-	craft_count=16,
-	damage=8,
-	craft={
-		{"group:arrow","group:arrow","group:arrow"},
-		{"group:arrow","default:pick_steel","group:arrow"},
-		{"group:arrow","group:arrow","group:arrow"}
-	}
-})
-
 bows.register_arrow("arrow_toxic",{
 	description="Toxic arrow",
 	texture="bows_arrow_wood.png^[colorize:#66aa11aa",
@@ -262,43 +182,3 @@ bows.register_arrow("arrow_toxic",{
 		{"group:arrow","default:papyrus"},
 	}
 })
-
-bows.register_arrow("arrow_Tetanus",{
-	description="Tetanus arrow",
-	texture="bows_arrow_wood.png^[colorize:#aa5500aa",
-	on_hit_object=bows.arrow_tetanus,
-	craft_count=4,
-	damage=2,
-	craft={
-		{"","group:arrow",""},
-		{"group:arrow","bucket:bucket_water","group:arrow"},
-		{"","group:arrow",""}
-	}
-})
-
-
-if bows.tnt then
-bows.register_arrow("arrow_tnt",{
-	description="TNT arrow",
-	texture="bows_arrow_wood.png^[colorize:#aa0000aa",
-	on_hit_object=bows.arrow_tnt_object,
-	on_hit_node=bows.arrow_tnt_node,
-	craft_count=1,
-	damage=25,
-	craft={{"tnt:tnt","group:arrow"}}
-})
-end
-
-bows.register_arrow("arrow_rainbow",{
-	description="Rainbow arrow",
-	texture="bows_arrow_wood.png^bows_rainbow.png",
-	craft_count=8,
-	damage=11,
-	craft={
-		{"group:arrow","group:arrow","group:arrow"},
-		{"group:arrow","default:nyancat_rainbow","group:arrow"},
-		{"group:arrow","group:arrow","group:arrow"}
-	},
-	on_step=bows.arrow_rainbow_step,
-	on_hit_object=bows.arrow_rainbow_object
-})
\ No newline at end of file
diff --git a/items_functions.lua b/items_functions.lua
index d035a3034606fd357a8da4e2b14cba6d34966458..02a4beaeef153be98fb029ed651c58f41dde0412 100644
--- a/items_functions.lua
+++ b/items_functions.lua
@@ -1,11 +1,3 @@
-
-bows.arrow_dig=function(self,pos,user,lastpos)
-	minetest.node_dig(pos, minetest.get_node(pos), user)
-	bows.arrow_remove(self)
-	return self
-end
-
-
 bows.arrow_fire_object=function(self,target,hp,user,lastpos)
 	bows.arrow_fire(self,lastpos,user,target:getpos())
 	return self
@@ -23,25 +15,6 @@ bows.arrow_fire=function(self,pos,user,lastpos)
 	return self
 end
 
-bows.arrow_build=function(self,pos,user,lastpos)
-	local name=user:get_player_name()
-	local node=minetest.get_node(lastpos).name
-	local index=user:get_wield_index()+1
-	local inv=user:get_inventory()
-	local stack=inv:get_stack("main", index)
-	if minetest.is_protected(lastpos, name) then
-		minetest.chat_send_player(name, minetest.pos_to_string(lastpos) .." is protected")
-	elseif minetest.registered_nodes[node].buildable_to
-	and minetest.registered_nodes[stack:get_name()] then
-		minetest.set_node(lastpos,{name=stack:get_name()})
-		if bows.creative==false then
-			inv:set_stack("main",index,ItemStack(stack:get_name() .. " " .. (stack:get_count()-1)))
-		end
-	end
-	bows.arrow_remove(self)
-	return self
-end
-
 bows.arrow_toxic=function(self,target,hp,user,lastpos)
 	if self.object==nil or user==nil or target==nil or target:get_properties()==nil then
 		bows.arrow_remove(self)
@@ -58,43 +31,6 @@ bows.arrow_toxic=function(self,target,hp,user,lastpos)
 	end
 end
 
-bows.arrow_tetanus=function(self,target,hp,user,lastpos)
-	if self.object==nil or user==nil or target==nil or target:get_properties()==nil then
-		bows.arrow_remove(self)
-		return self
-	end
-	if target:get_attach()==nil then
-		self.object:set_detach()
-		local col=target:get_properties().collisionbox
-		self.object:set_properties({
-			collisionbox=col,
-			physical=true,
-			visual_size={x=1,y=1},
-			visual="sprite",
-			textures={"bows_hidden.png"}
-		})
-		self.object:setpos(target:getpos())
-		target:set_attach(self.object, "", {x=0,y=0,z=0},{x=0,y=0,z=0})
-		self.target=target
-		self.hp=self.object:get_hp()
-		self.object:setvelocity({x=0, y=-3, z=0})
-		self.object:setacceleration({x=0, y=-3, z=0})
-		return self
-	end
-
-	local rnd=math.random(1,10)
-	if rnd~=4 and  target:get_hp()>0 then
-		minetest.after(math.random(4), function(self,target,hp,user,lastpos)
-			bows.arrow_tetanus(self,target,hp,user,lastpos)
-		end, self,target,hp,user,lastpos)
-	else
-		target:set_detach()
-		target:setvelocity({x=0, y=4, z=0})
-		target:setacceleration({x=0, y=-10, z=0})
-		bows.arrow_remove(self)
-	end
-end
-
 bows.arrow_admin_object=function(self,target,hp,user,lastpos)
 	target:set_hp(0)
 	target:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:sword_wood", nil)
@@ -106,74 +42,3 @@ bows.arrow_admin_node=function(self,pos,user,lastpos)
 	bows.arrow_remove(self)
 	return self
 end
-
-bows.arrow_tnt_object=function(self,target,hp,user,lastpos)
-	local name=user:get_player_name()
-	local node=minetest.get_node(lastpos).name
-	if minetest.is_protected(lastpos, name) then
-		minetest.chat_send_player(name, minetest.pos_to_string(lastpos) .." is protected")
-	elseif minetest.registered_nodes[node].buildable_to then
-		tnt.boom(lastpos, {damage_radius=5,radius=3,ignore_protection=false})
-	end
-	bows.arrow_remove(self)
-	return self
-end
-
-bows.arrow_tnt_node=function(self,pos,user,lastpos)
-	local name=user:get_player_name()
-	local node=minetest.get_node(lastpos).name
-	if minetest.is_protected(lastpos, name) then
-		minetest.chat_send_player(name, minetest.pos_to_string(lastpos) .." is protected")
-	elseif minetest.registered_nodes[node].buildable_to then
-		tnt.boom(pos, {damage_radius=5,radius=3,ignore_protection=false})
-	end
-	bows.arrow_remove(self)
-	return self
-end
-
-bows.arrow_rainbow_step=function(self,dtime,user,pos,lastpos)
-minetest.add_particlespawner({
-	amount = 90,
-	time =0.5,
-	minpos = pos,
-	maxpos =pos,
-	minvel = {x=-1, y=-1, z=-1},
-	maxvel = {x=1, y=-0.5, z=1},
-	minacc = {x=0, y=0, z=0},
-	maxacc = {x=0, y=0, z=0},
-	minexptime = 1.0,
-	maxexptime = 1.5,
-	minsize = 2.6,
-	maxsize = 1.2,
-	texture = "bows_rainbow.png",
-})
-end
-
-bows.arrow_rainbow_object=function(self,target,hp,user,lastpos)
-	local pos=target:getpos()
-	minetest.add_particle({
-		pos = pos,
-		velocity = vector.new(),
-		acceleration = vector.new(),
-		expirationtime = 0.4,
-		size = 20,
-		collisiondetection = false,
-		vertical = false,
-		texture = "bows_rainbow.png",
-	})
-	minetest.add_particlespawner({
-		amount = 100,
-		time = 0.5,
-		minpos = vector.subtract(pos, 3),
-		maxpos = vector.add(pos, 3),
-		minvel = {x = -10, y = -10, z = -10},
-		maxvel = {x = 10, y = 10, z = 10},
-		minacc = vector.new(),
-		maxacc = vector.new(),
-		minexptime = 1,
-		maxexptime = 2.5,
-		minsize = 3,
-		maxsize = 9,
-		texture = "bows_rainbow.png",
-	})
-end
\ No newline at end of file
diff --git a/textures/bows_bow_diamond.png b/textures/bows_bow_diamond.png
deleted file mode 100644
index 9baa9c4d43bf2963d3fc7fd0ffb8539d6d97972c..0000000000000000000000000000000000000000
Binary files a/textures/bows_bow_diamond.png and /dev/null differ
diff --git a/textures/bows_bow_loaded_diamond.png b/textures/bows_bow_loaded_diamond.png
deleted file mode 100644
index 9880a5e1cb01a7a0f5fa5cf9fb5068303b4108e9..0000000000000000000000000000000000000000
Binary files a/textures/bows_bow_loaded_diamond.png and /dev/null differ