complete implementation of Dungeon