diff --git a/game/engine/Map.lua b/game/engine/Map.lua
index 2b8e393356d8aff5a0b48feea1f8c71c471f9b94..75a9f365a07bee2513364c32e9c0775c2d05265b 100644
--- a/game/engine/Map.lua
+++ b/game/engine/Map.lua
@@ -667,6 +667,9 @@ function _M:import(map, dx, dy, sx, sy, sw, sh)
 	for i = sx, sx + sw - 1 do for j = sy, sy + sh - 1 do
 		local x, y = dx + i, dy + j
 		self.map[x + y * self.w] = map.map[i + j * map.w]
+		for z, e in pairs(self.map[x + y * self.w]) do
+			if e.move then e:move(x, y, true) end
+		end
 
 		self.remembers(x, y, map.remembers(i, j))
 		self.seens(x, y, map.seens(i, j))
diff --git a/game/engine/Zone.lua b/game/engine/Zone.lua
index 14c87e983bff91c84d64faf2d72a32cf72d3af77..786c80a8b80daf44587c87a948366f9b0116511d 100644
--- a/game/engine/Zone.lua
+++ b/game/engine/Zone.lua
@@ -21,6 +21,7 @@ require "engine.class"
 local Savefile = require "engine.Savefile"
 local Map = require "engine.Map"
 local Astar = require "engine.Astar"
+local print = function() end
 
 --- Defines a zone: a set of levels, with depth, nps, objects, level generator, ...
 module(..., package.seeall, class.make)
@@ -157,6 +158,15 @@ function _M:checkFilter(e, filter)
 	return true
 end
 
+--- Return a string describing the filter
+function _M:filterToString(filter)
+	local ps = ""
+	for what, check in pairs(filter) do
+		ps = ps .. what.."="..check..","
+	end
+	return ps
+end
+
 --- Picks an entity from a computed probability list
 function _M:pickEntity(list)
 	if #list == 0 then return nil end
diff --git a/game/modules/tome/data/maps/vaults/greater-checkerboard.lua b/game/modules/tome/data/maps/vaults/greater-checkerboard.lua
index 9337a1ec4728e012c82a454eb571f01fa93da453..d89b02922f6b4ba160a2bd11aacfff79b8123229 100644
--- a/game/modules/tome/data/maps/vaults/greater-checkerboard.lua
+++ b/game/modules/tome/data/maps/vaults/greater-checkerboard.lua
@@ -18,9 +18,9 @@
 -- darkgod@te4.org
 
 defineTile('.', "FLOOR")
-defineTile('#', "WALL")
+defineTile('#', "FLOOR")
 defineTile('X', "WALL")
-defineTile('8', "FLOOR", {random_filter={add_levels=14}}, {random_filter={add_levels=20}})
+defineTile('8', "FLOOR", {random_filter={add_levels=15}}, {random_filter={add_levels=20}})
 
 return {
 [[.......................................]],
diff --git a/game/modules/tome/data/rooms/greater_vault.lua b/game/modules/tome/data/rooms/greater_vault.lua
index a3288ebb41d81d419129df3b530b31eb22485a2c..02ce84ed11b90cac455f5482a6945d4ebfc5ae2e 100644
--- a/game/modules/tome/data/rooms/greater_vault.lua
+++ b/game/modules/tome/data/rooms/greater_vault.lua
@@ -24,18 +24,21 @@ local list = {
 
 return function(gen, id, lev, old_lev)
 	local vaultid = rng.table(list)
-
 	local vault_map = engine.Map.new(max_w, max_h)
 	local Static = require("engine.generator.map.Static")
 	local data = table.clone(gen.data)
 	data.map = "vaults/"..vaultid
+	local old_map = gen.level.map
+	gen.level.map = vault_map
 	local vault = Static.new(gen.zone, vault_map, gen.level, data)
+	vault:generate(lev, old_lev)
+	gen.level.map = old_map
 
-	local w = map.w
-	local h = map.h
+	local w = vault_map.w
+	local h = vault_map.h
 	return { name="greater_vault"..w.."x"..h, w=w, h=h, generator = function(self, x, y, is_lit)
 		gen.map:import(vault_map, x, y)
-		map:close()
+		vault_map:close()
 		-- Make it a room, and make it special so that we do not tunnel through
 		for i = x, x + w - 1 do for j = y, y + h - 1 do
 			gen.map.room_map[i][j].special = true
diff --git a/game/modules/tome/data/zones/tower-amon-sul/zone.lua b/game/modules/tome/data/zones/tower-amon-sul/zone.lua
index 11c968ee10c85862ed798b7c1f2e38cf23e32469..02ba83c8b8a5362f72c5e9cbf0d7d8cc895c3289 100644
--- a/game/modules/tome/data/zones/tower-amon-sul/zone.lua
+++ b/game/modules/tome/data/zones/tower-amon-sul/zone.lua
@@ -25,15 +25,15 @@ return {
 	decay = {300, 800},
 	actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end,
 	width = 50, height = 50,
-	all_remembered = true,
-	all_lited = true,
+--	all_remembered = true,
+--	all_lited = true,
 	persistant = "zone",
 	ambiant_music = "Swashing the buck.ogg",
 	generator =  {
 		map = {
 			class = "engine.generator.map.Roomer",
 			nb_rooms = 10,
-			rooms = {"greater_vault"},
+			rooms = {"simple", "pilar", {"money_vault",5}},
 			lite_room_chance = 100,
 			['.'] = "FLOOR",
 			['#'] = "WALL",