diff --git a/game/modules/tome/class/NicerTiles.lua b/game/modules/tome/class/NicerTiles.lua
index 6be661d14407ad2216cbb8a9d9689510bb4598f3..05a3b3ae21a3a741f46ad610396598e301e09626 100644
--- a/game/modules/tome/class/NicerTiles.lua
+++ b/game/modules/tome/class/NicerTiles.lua
@@ -452,18 +452,30 @@ slime_wall = { method="borders", type="slime_wall", forbid={}, use_type=true,
 
 	default7i={add_mos={{image="terrain/slime/slime_edge_upper_left_01.png", display_y=-1, display_x=-0.03125}}, min=1, max=1},
 	default9i={add_mos={{image="terrain/slime/slime_edge_upper_right_01.png", display_y=-1, display_x=0.03125}}, min=1, max=1},
-
---[[
-	default1={add_mos={{image="terrain/mountain9i.png", display_x=-1, display_y=1}}, min=1, max=1},
-	default3={add_mos={{image="terrain/mountain7i.png", display_x=1, display_y=1}}, min=1, max=1},
-	default7={add_mos={{image="terrain/mountain3i.png", display_x=-1, display_y=-1}}, min=1, max=1},
-	default9={add_mos={{image="terrain/mountain1i.png", display_x=1, display_y=-1}}, min=1, max=1},
-
-	default1i={add_mos={{image="terrain/mountain1.png", display_x=-1, display_y=1}}, min=1, max=1},
-	default3i={add_mos={{image="terrain/mountain3.png", display_x=1, display_y=1}}, min=1, max=1},
-	default7i={add_displays={{image="terrain/mountain7.png", display_x=-1, display_y=-1, z=17}}, min=1, max=1},
-	default9i={add_displays={{image="terrain/mountain9.png", display_x=1, display_y=-1, z=18}}, min=1, max=1},
-]]
+},
+sandwall = { method="walls", type="sandwall", forbid={}, use_type=true, extended=true,
+	default8={add_displays={{image="terrain/sand/sandwall_8_1.png", display_y=-1, z=16}}, min=1, max=1},
+	default8p={add_displays={{image="terrain/sand/sand_V3_pillar_top_01.png", display_y=-1, z=16}}, min=1, max=1},
+	default7={add_displays={{image="terrain/sand/sand_V3_inner_7_01.png", display_y=-1, z=16}}, min=1, max=1},
+	default9={add_displays={{image="terrain/sand/sand_V3_inner_9_01.png", display_y=-1, z=16}}, min=1, max=1},
+	default7i={add_displays={{image="terrain/sand/sand_V3_3_01.png", display_y=-1, z=16}}, min=1, max=1},
+	default8i={add_displays={{image="terrain/sand/sandwall_8h_1.png", display_y=-1, z=16}}, min=1, max=1},
+	default9i={add_displays={{image="terrain/sand/sand_V3_1_01.png", display_y=-1, z=16}}, min=1, max=1},
+	default73i={add_displays={{image="terrain/sand/sandwall_91d_1.png", display_y=-1, z=16}}, min=1, max=1},
+	default91i={add_displays={{image="terrain/sand/sandwall_73d_1.png", display_y=-1, z=16}}, min=1, max=1},
+
+	default2={image="terrain/sand/sand_V3_8_01.png", min=1, max=1},
+	default2p={image="terrain/sand.png", add_mos={{image="terrain/sand/sand_V3_pillar_bottom_01.png"}}, min=1, max=1},
+	default1={image="terrain/sand.png", add_mos={{image="terrain/sand/sand_V3_inner_1_01.png"}}, min=1, max=1},
+	default3={image="terrain/sand.png", add_mos={{image="terrain/sand/sand_V3_inner_3_01.png"}}, min=1, max=1},
+	default1i={image="terrain/sand/sand_V3_7_01.png", min=1, max=1},
+	default2i={image="terrain/sand/sandwall_2h_1.png", min=1, max=1},
+	default3i={image="terrain/sand/sand_V3_9_01.png", min=1, max=1},
+	default19i={image="terrain/sand/sandwall_19d_1.png", min=1, max=1},
+	default37i={image="terrain/sand/sandwall_37d_1.png", min=1, max=1},
+
+	default4={add_displays={{image="terrain/sand/sand_ver_edge_left_01.png", display_x=-1}}, min=1, max=1},
+	default6={add_displays={{image="terrain/sand/sand_ver_edge_right_01.png", display_x=1}}, min=1, max=1},
 },
 }
 
@@ -558,6 +570,71 @@ function _M:editTileGenericWalls(level, i, j, g, nt, type)
 	if     g5 ~= g6 and g5 ~= g9 and g5 ~= g8 then self:edit(i, j, id, nt[g9.."9i"] or nt["default9i"]) end
 end
 
+--- Make water have nice transition to other stuff
+function _M:editTileGenericSandWalls(level, i, j, g, nt, type)
+	local kind = nt.use_type and "type" or "subtype"
+	local g5 = level.map:checkEntity(i, j,   Map.TERRAIN, kind) or type
+	local g8 = level.map:checkEntity(i, j-1, Map.TERRAIN, kind) or type
+	local g2 = level.map:checkEntity(i, j+1, Map.TERRAIN, kind) or type
+	local g4 = level.map:checkEntity(i-1, j, Map.TERRAIN, kind) or type
+	local g6 = level.map:checkEntity(i+1, j, Map.TERRAIN, kind) or type
+	local g7 = level.map:checkEntity(i-1, j-1, Map.TERRAIN, kind) or type
+	local g9 = level.map:checkEntity(i+1, j-1, Map.TERRAIN, kind) or type
+	local g1 = level.map:checkEntity(i-1, j+1, Map.TERRAIN, kind) or type
+	local g3 = level.map:checkEntity(i+1, j+1, Map.TERRAIN, kind) or type
+	if nt.forbid then
+		if nt.forbid[g5] then g5 = type end
+		if nt.forbid[g4] then g4 = type end
+		if nt.forbid[g6] then g6 = type end
+		if nt.forbid[g8] then g8 = type end
+		if nt.forbid[g2] then g2 = type end
+		if nt.forbid[g1] then g1 = type end
+		if nt.forbid[g3] then g3 = type end
+		if nt.forbid[g7] then g7 = type end
+		if nt.forbid[g9] then g9 = type end
+	end
+
+	local id = "sandwall:"..table.concat({type,tostring(g1==g5),tostring(g2==g5),tostring(g3==g5),tostring(g4==g5),tostring(g5==g5),tostring(g6==g5),tostring(g7==g5),tostring(g8==g5),tostring(g9==g5)}, ",")
+
+	-- Sides
+	if     g5 ~= g8 and g5 ~= g7 and g5 ~= g9 then
+		if     g5 ~= g4 and g5 ~= g6 then self:edit(i, j, id, nt[g8.."8p"] or nt["default8p"])
+		elseif g5 == g4 and g5 == g6 then self:edit(i, j, id, nt[g8.."8"] or nt["default8"])
+		elseif g5 ~= g4 and g5 == g6 then self:edit(i, j, id, nt[g7.."7"] or nt["default7"])
+		elseif g5 == g4 and g5 ~= g6 then self:edit(i, j, id, nt[g9.."9"] or nt["default9"])
+		end
+	elseif g5 ~= g8 and g5 ~= g7 and g5 == g9 then
+		if     g5 == g4 then self:edit(i, j, id, nt[g7.."7i"] or nt["default7i"])
+		elseif g5 ~= g4 then self:edit(i, j, id, nt[g7.."73i"] or nt["default73i"])
+		end
+	elseif g5 ~= g8 and g5 == g7 and g5 ~= g9 then
+		if     g5 == g6 then self:edit(i, j, id, nt[g9.."9i"] or nt["default9i"])
+		elseif g5 ~= g6 then self:edit(i, j, id, nt[g9.."91i"] or nt["default91i"])
+		end
+	elseif g5 ~= g8 and g5 == g7 and g5 == g9 then self:edit(i, j, id, nt[g8.."8i"] or nt["default8i"])
+	end
+
+	if     g5 ~= g2 and g5 ~= g1 and g5 ~= g3 then
+		if     g5 ~= g4 and g5 ~= g6 then self:edit(i, j, id, nt[g2.."2p"] or nt["default2p"])
+		elseif g5 == g4 and g5 == g6 then self:edit(i, j, id, nt[g2.."2"] or nt["default2"])
+		elseif g5 ~= g4 and g5 == g6 then self:edit(i, j, id, nt[g1.."1"] or nt["default1"])
+		elseif g5 == g4 and g5 ~= g6 then self:edit(i, j, id, nt[g3.."3"] or nt["default3"])
+		end
+	elseif g5 ~= g2 and g5 ~= g1 and g5 == g3 then
+		if     g5 == g4 then self:edit(i, j, id, nt[g3.."3i"] or nt["default3i"])
+		elseif g5 ~= g4 then self:edit(i, j, id, nt[g3.."37i"] or nt["default37i"])
+		end
+	elseif g5 ~= g2 and g5 == g1 and g5 ~= g3 then
+		if     g5 == g6 then self:edit(i, j, id, nt[g1.."1i"] or nt["default1i"])
+		elseif g5 ~= g6 then self:edit(i, j, id, nt[g1.."19i"] or nt["default19i"])
+		end
+	elseif g5 ~= g2 and g5 == g1 and g5 == g3 then self:edit(i, j, id, nt[g2.."2i"] or nt["default2i"])
+	end
+
+	if     g5 ~= g4 and g5 == g2 and g5 ~= g1 then self:edit(i, j, id, nt[g4.."4"] or nt["default4"]) end
+	if     g5 ~= g6 and g5 == g2 and g5 ~= g3 then self:edit(i, j, id, nt[g6.."6"] or nt["default6"]) end
+end
+
 function _M:editTileBorders(level, i, j, g, nt)
 	self:editTileGenericBorders(level, i, j, g, nt, nt.type or "grass")
 end
@@ -567,6 +644,9 @@ end
 function _M:editTileWalls_def(level, i, j, g, nt)
 	self:editTileGenericWalls(level, i, j, g, defs[nt.def], defs[nt.def].type or "grass")
 end
+function _M:editTileSandWalls_def(level, i, j, g, nt)
+	self:editTileGenericSandWalls(level, i, j, g, defs[nt.def], defs[nt.def].type or "grass")
+end
 
 -- This array is precomputed, it holds the possible combinations of walls and the nice tile they generate
 -- The data is bit-encoded
diff --git a/game/modules/tome/data/general/grids/sand.lua b/game/modules/tome/data/general/grids/sand.lua
index b079bbc119ceed52b2c4dcf7b76cf625ec9f7745..9b6f9367f4bd60fe76468b5a95b93e64422e3545 100644
--- a/game/modules/tome/data/general/grids/sand.lua
+++ b/game/modules/tome/data/general/grids/sand.lua
@@ -17,7 +17,7 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-local sand_editer = { method="borders_def", def="sand"}
+local sand_wall_editer = { method="sandWalls_def", def="sandwall"}
 
 newEntity{
 	define_as = "SAND",
@@ -41,7 +41,7 @@ for i = 1, 11 do newEntity{ base = "UNDERGROUND_SAND", define_as = "UNDERGROUND_
 newEntity{
 	define_as = "SANDWALL",
 	type = "wall", subtype = "sand",
-	name = "sandwall", image = "terrain/sandwall.png",
+	name = "sandwall", image = "terrain/sand/sand_V3_5_01.png",
 	display = '#', color={r=203,g=189,b=72}, back_color={r=93,g=79,b=22},
 	always_remember = true,
 	can_pass = {pass_wall=1},
@@ -86,62 +86,16 @@ newEntity{
 		game.level:addEntity(sand)
 		return nil, sand, true
 	end,
-	nice_tiler = { method="roundwall3d",
-		inner={"SANDWALL", 100, 1, 1},
-		wall8={"SANDWALL_8", 100, 1, 1},
-		wall2={"SANDWALL_2", 100, 1, 1},
-		wall82={"SANDWALL_NORTH_SOUTH", 100, 1, 1},
-		wall1={"SANDWALL_1", 100, 1, 1},
-		wall3={"SANDWALL_3", 100, 1, 1},
-		wall7={"SANDWALL_7", 100, 1, 1},
-		wall9={"SANDWALL_9", 100, 1, 1},
-		wall1d={"SANDWALL_1D", 100, 1, 1},
-		wall3d={"SANDWALL_3D", 100, 1, 1},
-		wall7d={"SANDWALL_7D", 100, 1, 1},
-		wall9d={"SANDWALL_9D", 100, 1, 1},
-		wall19d={"SANDWALL_19D", 100, 1, 1},
-		wall37d={"SANDWALL_37D", 100, 1, 1},
-		wall73d={"SANDWALL_73D", 100, 1, 1},
-		wall91d={"SANDWALL_91D", 100, 1, 1},
-		hole2={"SANDWALL_HOLE_2", 100, 1, 1},
-		hole8={"SANDWALL_HOLE_8", 100, 1, 1},
-		pillar2={"SANDWALL_PILLAR_2", 100, 1, 1},
-		pillar8={"SANDWALL_PILLAR_8", 100, 1, 1},
-		pillar4={"SANDWALL_PILLAR_4", 100, 1, 1},
-		pillar6={"SANDWALL_PILLAR_6", 100, 1, 1},
-		pillar_small={"SANDWALL_PILLAR_SMALL", 100, 1, 1},
-	},
+	nice_editer = sand_wall_editer,
+	nice_tiler = { method="replace", base={"SANDWALL", 20, 1, 6}},
 }
-
-local i = 1
-newEntity{ base = "SANDWALL", define_as = "SANDWALL"..i, image = "terrain/sandwall_5_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_2"..i, image = "terrain/sandwall_2_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_1"..i, image = "terrain/sandwall_1_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_3"..i, image = "terrain/sandwall_3_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_8"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_8_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_NORTH_SOUTH"..i, image = "terrain/sandwall_2_"..i..".png", add_displays = {class.new{image="terrain/sandwall_8_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_7"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_7_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_9"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_9_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_1D"..i, image = "terrain/sandwall_1d_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_3D"..i, image = "terrain/sandwall_3d_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_7D"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_7d_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_9D"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_9d_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_19D"..i, image = "terrain/sandwall_19d_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_37D"..i, image = "terrain/sandwall_37d_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_73D"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_73d_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_91D"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_91d_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_PILLAR_2"..i, image = "terrain/sandwall_2p_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_PILLAR_8"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_8p_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_PILLAR_4"..i, image = "terrain/sandwall_1_"..i..".png", add_displays = {class.new{image="terrain/sandwall_7_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_PILLAR_6"..i, image = "terrain/sandwall_3_"..i..".png", add_displays = {class.new{image="terrain/sandwall_9_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_HOLE_2"..i, image = "terrain/sandwall_2h_"..i..".png"}
-newEntity{ base = "SANDWALL", define_as = "SANDWALL_HOLE_8"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_8h_1.png", z=18, display_y=-1}}}
+for i = 1, 6 do newEntity{ base = "SANDWALL", define_as = "SANDWALL"..i, image = "terrain/sand/sandwall_5_"..i..".png"} end
 
 
 newEntity{
 	define_as = "SANDWALL_STABLE",
 	type = "wall", subtype = "sand",
-	name = "sandwall", image = "terrain/sandwall.png",
+	name = "sandwall", image = "terrain/sand/sand_V3_5_01.png",
 	display = '#', color={r=203,g=189,b=72}, back_color={r=93,g=79,b=22},
 	always_remember = true,
 	can_pass = {pass_wall=1},
@@ -149,56 +103,10 @@ newEntity{
 	block_sight = true,
 	air_level = -10,
 	dig = "UNDERGROUND_SAND",
-	nice_tiler = { method="roundwall3d",
-		inner={"SANDWALL_STABLE", 100, 1, 1},
-		wall8={"SANDWALL_STABLE_8", 100, 1, 1},
-		wall2={"SANDWALL_STABLE_2", 100, 1, 1},
-		wall82={"SANDWALL_STABLE_NORTH_SOUTH", 100, 1, 1},
-		wall1={"SANDWALL_STABLE_1", 100, 1, 1},
-		wall3={"SANDWALL_STABLE_3", 100, 1, 1},
-		wall7={"SANDWALL_STABLE_7", 100, 1, 1},
-		wall9={"SANDWALL_STABLE_9", 100, 1, 1},
-		wall1d={"SANDWALL_STABLE_1D", 100, 1, 1},
-		wall3d={"SANDWALL_STABLE_3D", 100, 1, 1},
-		wall7d={"SANDWALL_STABLE_7D", 100, 1, 1},
-		wall9d={"SANDWALL_STABLE_9D", 100, 1, 1},
-		wall19d={"SANDWALL_STABLE_19D", 100, 1, 1},
-		wall37d={"SANDWALL_STABLE_37D", 100, 1, 1},
-		wall73d={"SANDWALL_STABLE_73D", 100, 1, 1},
-		wall91d={"SANDWALL_STABLE_91D", 100, 1, 1},
-		hole2={"SANDWALL_STABLE_HOLE_2", 100, 1, 1},
-		hole8={"SANDWALL_STABLE_HOLE_8", 100, 1, 1},
-		pillar2={"SANDWALL_STABLE_PILLAR_2", 100, 1, 1},
-		pillar8={"SANDWALL_STABLE_PILLAR_8", 100, 1, 1},
-		pillar4={"SANDWALL_STABLE_PILLAR_4", 100, 1, 1},
-		pillar6={"SANDWALL_STABLE_PILLAR_6", 100, 1, 1},
-		pillar_small={"SANDWALL_STABLE_PILLAR_SMALL", 100, 1, 1},
-	},
+	nice_editer = sand_wall_editer,
+	nice_tiler = { method="replace", base={"SANDWALL_STABLE", 20, 1, 6}},
 }
-
-local i = 1
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE"..i, image = "terrain/sandwall_5_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_2"..i, image = "terrain/sandwall_2_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_1"..i, image = "terrain/sandwall_1_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_3"..i, image = "terrain/sandwall_3_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_8"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_8_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_NORTH_SOUTH"..i, image = "terrain/sandwall_2_"..i..".png", add_displays = {class.new{image="terrain/sandwall_8_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_7"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_7_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_9"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_9_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_1D"..i, image = "terrain/sandwall_1d_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_3D"..i, image = "terrain/sandwall_3d_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_7D"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_7d_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_9D"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_9d_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_19D"..i, image = "terrain/sandwall_19d_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_37D"..i, image = "terrain/sandwall_37d_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_73D"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_73d_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_91D"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_91d_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_PILLAR_2"..i, image = "terrain/sandwall_2p_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_PILLAR_8"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_8p_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_PILLAR_4"..i, image = "terrain/sandwall_1_"..i..".png", add_displays = {class.new{image="terrain/sandwall_7_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_PILLAR_6"..i, image = "terrain/sandwall_3_"..i..".png", add_displays = {class.new{image="terrain/sandwall_9_1.png", z=18, display_y=-1}}}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_HOLE_2"..i, image = "terrain/sandwall_2h_"..i..".png"}
-newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE_HOLE_8"..i, image = "terrain/sandwall_5_"..i..".png", add_displays = {class.new{image="terrain/sandwall_8h_1.png", z=18, display_y=-1}}}
+for i = 1, 6 do newEntity{ base = "SANDWALL_STABLE", define_as = "SANDWALL_STABLE"..i, image = "terrain/sand/sandwall_5_"..i..".png"} end
 
 newEntity{
 	define_as = "PALMTREE",
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_1_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_1_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..e688ce22c105f2f3ec54fee42d545bb16817a50c
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_1_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_3_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_3_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..88600a56813ddc0e5b934216b4074cc8c507a8ef
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_3_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_5_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_5_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b8b8c438c01a3415ad798a9521afc91df94eaef
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_5_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_7_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_7_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..45c0daf1a6b797e4056eaa4e519191a21f2abc94
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_7_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_8_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_8_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..d757a1b78734db4f19727c955852cc157c52c90d
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_8_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_9_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_9_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..c6d928150e363ff444e75fc4bc8cc5382405dfd9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_9_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_1_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_1_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8be8eccb1ae3a8455b1a5cbfbe64d065efbd612
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_1_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_3_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_3_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..37136546baac23679a6d1abdc61c223717233f42
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_3_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_7_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_7_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..b94e0bb458c819b622f001d598eec465ef7d5bcc
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_7_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_9_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_9_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..6071d826b4a3b48f56626e7546a1efc92ca3e2a9
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_inner_9_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_pillar_bottom_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_pillar_bottom_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..29f59256f1d388edc710b079f2196fe6cd719109
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_pillar_bottom_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_pillar_top_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_pillar_top_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c6838587a54e226bda268672a5afb8218ae2899
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_V3_pillar_top_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_ver_edge_left_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_ver_edge_left_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..5628ec2b654c80d38afe35d473330a710c1979c0
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_ver_edge_left_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_ver_edge_right_01.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_ver_edge_right_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1219832b7a3dc699e1091dc17f82d446dfba16b
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sand_ver_edge_right_01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_19d_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_19d_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..79f3de916120d0d1fda78b3531b7749857a95c06
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_19d_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_2h_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_2h_1.png
similarity index 100%
rename from game/modules/tome/data/gfx/shockbolt/terrain/sandwall_2h_1.png
rename to game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_2h_1.png
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_37d_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_37d_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..6912d849f7c6239bf04d68715595453c448d80ce
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_37d_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..5009466a414193ca211a15627ebb0f9954a88839
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_2.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5fb40b357b105337ccc9b603aa475893a732836
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_2.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_5_3.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_3.png
similarity index 100%
rename from game/modules/tome/data/gfx/shockbolt/terrain/sandwall_5_3.png
rename to game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_3.png
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_5_4.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_4.png
similarity index 100%
rename from game/modules/tome/data/gfx/shockbolt/terrain/sandwall_5_4.png
rename to game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_4.png
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_5.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..165b1de88044b69941cf53fab9c72eb5d033f21a
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_5.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_6.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_6.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4ae11176c70021c65cfc22d99cecf9374b42a12
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_5_6.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_73d_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_73d_1.png
similarity index 100%
rename from game/modules/tome/data/gfx/shockbolt/terrain/sandwall_73d_1.png
rename to game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_73d_1.png
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_8_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_8_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..843356f1005cb6f7fcb59ec738c4cf7c5e76d672
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_8_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_8h_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_8h_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad226cab9d8d762759c21f7a68d562feae63a286
Binary files /dev/null and b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_8h_1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_91d_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_91d_1.png
similarity index 100%
rename from game/modules/tome/data/gfx/shockbolt/terrain/sandwall_91d_1.png
rename to game/modules/tome/data/gfx/shockbolt/terrain/sand/sandwall_91d_1.png
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_1_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_1_1.png
deleted file mode 100644
index 4bb535995a203f498aa17238f2dff673224e4f66..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_1_1.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_1_2.png b/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_1_2.png
deleted file mode 100644
index 1df8ddf86830d68436a504fd41b28a7b2ad91227..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_1_2.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_1d_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_1d_1.png
deleted file mode 100644
index db8c62e64c8ac741116ade87cdaf6a12430e8763..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_1d_1.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_2_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_2_1.png
deleted file mode 100644
index 98252e74bbe8c5438c0749f971258e8e906e8dbd..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_2_1.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_2p_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_2p_1.png
deleted file mode 100644
index cb7fa7d90cec754243f1c26113af5b90aef9284f..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_2p_1.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_3_2.png b/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_3_2.png
deleted file mode 100644
index 368e4f37d63e09dbe8d5a8fa04c26f7c86a3ea31..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_3_2.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_3d_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_3d_1.png
deleted file mode 100644
index 24bb718765b4f9b5ad6ae1efdd705f241f168ca5..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_3d_1.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_7_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_7_1.png
deleted file mode 100644
index 15c1bb28af33c836d2589e3f73d193fe65cd9299..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_7_1.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_9_1.png b/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_9_1.png
deleted file mode 100644
index 0559fefc33142130f5d4bbaec485240ff10bb7fa..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/sandwall_9_1.png and /dev/null differ