diff --git a/BaseClasses.py b/BaseClasses.py
index 219ff5ee..75cd317a 100644
--- a/BaseClasses.py
+++ b/BaseClasses.py
@@ -949,24 +949,9 @@ class CollectionState():
             self.stale[item.player] = True
 
 
-@unique
-class RegionType(IntEnum):
-    Generic = 0
-    LightWorld = 1
-    DarkWorld = 2
-    Cave = 3  # Also includes Houses
-    Dungeon = 4
-
-    @property
-    def is_indoors(self) -> bool:
-        """Shorthand for checking if Cave or Dungeon"""
-        return self in (RegionType.Cave, RegionType.Dungeon)
-
-
 class Region:
     name: str
-    type: RegionType
-    hint_text: str
+    _hint_text: str
     player: int
     multiworld: Optional[MultiWorld]
     entrances: List[Entrance]
@@ -980,14 +965,13 @@ class Region:
     is_light_world: bool = False
     is_dark_world: bool = False
 
-    def __init__(self, name: str, type_: RegionType, hint: str, player: int, world: Optional[MultiWorld] = None):
+    def __init__(self, name: str, player: int, multiworld: MultiWorld, hint: Optional[str] = None):
         self.name = name
-        self.type = type_
         self.entrances = []
         self.exits = []
         self.locations = []
-        self.multiworld = world
-        self.hint_text = hint
+        self.multiworld = multiworld
+        self._hint_text = hint
         self.player = player
 
     def can_reach(self, state: CollectionState) -> bool:
@@ -1003,6 +987,10 @@ class Region:
                 return True
         return False
 
+    @property
+    def hint_text(self) -> str:
+        return self._hint_text if self._hint_text else self.name
+
     def get_connecting_entrance(self, is_main_entrance: typing.Callable[[Entrance], bool]) -> Entrance:
         for entrance in self.entrances:
             if is_main_entrance(entrance):
@@ -1289,6 +1277,7 @@ class Spoiler():
                 [('player', player), ('entrance', entrance), ('exit', exit_), ('direction', direction)])
 
     def parse_data(self):
+        from worlds.alttp.SubClasses import LTTPRegionType
         self.medallions = OrderedDict()
         for player in self.multiworld.get_game_players("A Link to the Past"):
             self.medallions[f'Misery Mire ({self.multiworld.get_player_name(player)})'] = \
@@ -1298,23 +1287,31 @@ class Spoiler():
 
         self.locations = OrderedDict()
         listed_locations = set()
+        lw_locations = []
+        dw_locations = []
+        cave_locations = []
+        for loc in self.multiworld.get_locations():
+            if loc.game == "A Link to the Past":
+                if loc not in listed_locations and loc.parent_region and \
+                        loc.parent_region.type == LTTPRegionType.LightWorld and loc.show_in_spoiler:
+                    lw_locations.append(loc)
+                elif loc not in listed_locations and loc.parent_region and \
+                    loc.parent_region.type == LTTPRegionType.DarkWorld and loc.show_in_spoiler:
+                    dw_locations.append(loc)
+                elif loc not in listed_locations and loc.parent_region and \
+                        loc.parent_region.type == LTTPRegionType.Cave and loc.show_in_spoiler:
+                    cave_locations.append(loc)
 
-        lw_locations = [loc for loc in self.multiworld.get_locations() if
-                        loc not in listed_locations and loc.parent_region and loc.parent_region.type == RegionType.LightWorld and loc.show_in_spoiler]
         self.locations['Light World'] = OrderedDict(
             [(str(location), str(location.item) if location.item is not None else 'Nothing') for location in
              lw_locations])
         listed_locations.update(lw_locations)
 
-        dw_locations = [loc for loc in self.multiworld.get_locations() if
-                        loc not in listed_locations and loc.parent_region and loc.parent_region.type == RegionType.DarkWorld and loc.show_in_spoiler]
         self.locations['Dark World'] = OrderedDict(
             [(str(location), str(location.item) if location.item is not None else 'Nothing') for location in
              dw_locations])
         listed_locations.update(dw_locations)
 
-        cave_locations = [loc for loc in self.multiworld.get_locations() if
-                          loc not in listed_locations and loc.parent_region and loc.parent_region.type == RegionType.Cave and loc.show_in_spoiler]
         self.locations['Caves'] = OrderedDict(
             [(str(location), str(location.item) if location.item is not None else 'Nothing') for location in
              cave_locations])
diff --git a/Main.py b/Main.py
index ecb55660..04a7e3bf 100644
--- a/Main.py
+++ b/Main.py
@@ -9,8 +9,9 @@ import tempfile
 import zipfile
 from typing import Dict, List, Tuple, Optional, Set
 
-from BaseClasses import Item, MultiWorld, CollectionState, Region, RegionType, LocationProgressType, Location
+from BaseClasses import Item, MultiWorld, CollectionState, Region, LocationProgressType, Location
 import worlds
+from worlds.alttp.SubClasses import LTTPRegionType
 from worlds.alttp.Regions import is_main_entrance
 from Fill import distribute_items_restrictive, flood_items, balance_multiworld_progression, distribute_planned
 from worlds.alttp.Shops import FillDisabledShopSlots
@@ -191,7 +192,7 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No
                 new_item.classification |= classifications[item_name]
                 new_itempool.append(new_item)
 
-        region = Region("Menu", RegionType.Generic, "ItemLink", group_id, world)
+        region = Region("Menu", group_id, world, "ItemLink")
         world.regions.append(region)
         locations = region.locations = []
         for item in world.itempool:
@@ -290,13 +291,13 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No
                                            'Inverted Ganons Tower': 'Ganons Tower'} \
                                 .get(location.parent_region.dungeon.name, location.parent_region.dungeon.name)
                             checks_in_area[location.player][dungeonname].append(location.address)
-                        elif location.parent_region.type == RegionType.LightWorld:
+                        elif location.parent_region.type == LTTPRegionType.LightWorld:
                             checks_in_area[location.player]["Light World"].append(location.address)
-                        elif location.parent_region.type == RegionType.DarkWorld:
+                        elif location.parent_region.type == LTTPRegionType.DarkWorld:
                             checks_in_area[location.player]["Dark World"].append(location.address)
-                        elif main_entrance.parent_region.type == RegionType.LightWorld:
+                        elif main_entrance.parent_region.type == LTTPRegionType.LightWorld:
                             checks_in_area[location.player]["Light World"].append(location.address)
-                        elif main_entrance.parent_region.type == RegionType.DarkWorld:
+                        elif main_entrance.parent_region.type == LTTPRegionType.DarkWorld:
                             checks_in_area[location.player]["Dark World"].append(location.address)
                     checks_in_area[location.player]["Total"] += 1
 
diff --git a/docs/world api.md b/docs/world api.md
index 68e7f901..fe4a6300 100644
--- a/docs/world api.md	
+++ b/docs/world api.md	
@@ -497,21 +497,21 @@ def create_items(self) -> None:
 ```python
 def create_regions(self) -> None:
     # Add regions to the multiworld. "Menu" is the required starting point.
-    # Arguments to Region() are name, type, human_readable_name, player, world
-    r = Region("Menu", RegionType.Generic, "Menu", self.player, self.multiworld)
+    # Arguments to Region() are name, player, world, and optionally hint_text
+    r = Region("Menu", self.player, self.multiworld)
     # Set Region.exits to a list of entrances that are reachable from region
     r.exits = [Entrance(self.player, "New game", r)]  # or use r.exits.append
     # Append region to MultiWorld's regions
     self.multiworld.regions.append(r)  # or use += [r...]
     
-    r = Region("Main Area", RegionType.Generic, "Main Area", self.player, self.multiworld)
+    r = Region("Main Area", self.player, self.multiworld)
     # Add main area's locations to main area (all but final boss)
     r.locations = [MyGameLocation(self.player, location.name,
                    self.location_name_to_id[location.name], r)]
     r.exits = [Entrance(self.player, "Boss Door", r)]
     self.multiworld.regions.append(r)
     
-    r = Region("Boss Room", RegionType.Generic, "Boss Room", self.player, self.multiworld)
+    r = Region("Boss Room", self.player, self.multiworld)
     # add event to Boss Room
     r.locations = [MyGameLocation(self.player, "Final Boss", None, r)]
     self.multiworld.regions.append(r)
diff --git a/test/general/TestFill.py b/test/general/TestFill.py
index 102e1fd6..492f3e2f 100644
--- a/test/general/TestFill.py
+++ b/test/general/TestFill.py
@@ -3,7 +3,7 @@ import unittest
 from worlds.AutoWorld import World
 from Fill import FillError, balance_multiworld_progression, fill_restrictive, \
     distribute_early_items, distribute_items_restrictive
-from BaseClasses import Entrance, LocationProgressType, MultiWorld, Region, RegionType, Item, Location, \
+from BaseClasses import Entrance, LocationProgressType, MultiWorld, Region, Item, Location, \
     ItemClassification
 from worlds.generic.Rules import CollectionRule, add_item_rule, locality_rules, set_rule
 
@@ -17,8 +17,7 @@ def generate_multi_world(players: int = 1) -> MultiWorld:
         multi_world.game[player_id] = f"Game {player_id}"
         multi_world.worlds[player_id] = world
         multi_world.player_name[player_id] = "Test Player " + str(player_id)
-        region = Region("Menu", RegionType.Generic,
-                        "Menu Region Hint", player_id, multi_world)
+        region = Region("Menu", player_id, multi_world, "Menu Region Hint")
         multi_world.regions.append(region)
 
     multi_world.set_seed(0)
@@ -48,8 +47,7 @@ class PlayerDefinition(object):
     def generate_region(self, parent: Region, size: int, access_rule: CollectionRule = lambda state: True) -> Region:
         region_tag = "_region" + str(len(self.regions))
         region_name = "player" + str(self.id) + region_tag
-        region = Region("player" + str(self.id) + region_tag, RegionType.Generic,
-                        "Region Hint", self.id, self.multiworld)
+        region = Region("player" + str(self.id) + region_tag, self.id, self.multiworld)
         self.locations += generate_locations(size, self.id, None, region, region_tag)
 
         entrance = Entrance(self.id, region_name + "_entrance", parent)
diff --git a/worlds/alttp/InvertedRegions.py b/worlds/alttp/InvertedRegions.py
index 3a811612..153dda4f 100644
--- a/worlds/alttp/InvertedRegions.py
+++ b/worlds/alttp/InvertedRegions.py
@@ -1,313 +1,531 @@
 import collections
-from BaseClasses import RegionType
 from worlds.alttp.Regions import create_lw_region, create_dw_region, create_cave_region, create_dungeon_region
+from worlds.alttp.SubClasses import LTTPRegionType
 
 
 def create_inverted_regions(world, player):
 
     world.regions += [
-        create_dw_region(player, 'Menu', None, ['Links House S&Q', 'Dark Sanctuary S&Q', 'Old Man S&Q', 'Castle Ledge S&Q']),
-        create_lw_region(player, 'Light World', ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure', 'Purple Chest', 'Bombos Tablet'],
+        create_dw_region(world, player, 'Menu', None,
+                         ['Links House S&Q', 'Dark Sanctuary S&Q', 'Old Man S&Q', 'Castle Ledge S&Q']),
+        create_lw_region(world, player, 'Light World',
+                         ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure', 'Purple Chest',
+                          'Bombos Tablet'],
                          ["Blinds Hideout", "Hyrule Castle Secret Entrance Drop", 'Kings Grave Outer Rocks', 'Dam',
-                          'Inverted Big Bomb Shop', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut', 'Kakariko Well Drop', 'Kakariko Well Cave',
-                          'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump',
-                          'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave', 'Lake Hylia Central Island Pier', 'Lake Hylia Island Pier', 'Lake Hylia Warp',
-                          'Bonk Rock Cave', 'Library', 'Two Brothers House (East)', 'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow',
+                          'Inverted Big Bomb Shop', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut',
+                          'Kakariko Well Drop', 'Kakariko Well Cave',
+                          'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge',
+                          'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump',
+                          'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave',
+                          'Lake Hylia Central Island Pier', 'Lake Hylia Island Pier', 'Lake Hylia Warp',
+                          'Bonk Rock Cave', 'Library', 'Two Brothers House (East)', 'Desert Palace Stairs',
+                          'Eastern Palace', 'Master Sword Meadow',
                           'Sanctuary', 'Sanctuary Grave', 'Death Mountain Entrance Rock', 'Light World River Drop',
-                          'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
-                          'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)',
-                          'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game',
-                          'East Dark World Mirror Spot', 'West Dark World Mirror Spot', 'South Dark World Mirror Spot', 'Cave 45', 'Checkerboard Cave', 'Mire Mirror Spot', 'Hammer Peg Area Mirror Spot', 
-                          'Shopping Mall Mirror Spot', 'Skull Woods Mirror Spot', 'Inverted Pyramid Entrance','Hyrule Castle Entrance (South)', 'Secret Passage Outer Bushes', 'Bush Covered Lawn Outer Bushes',
+                          'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop',
+                          'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
+                          'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave',
+                          'Cave Shop (Lake Hylia)',
+                          'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy',
+                          'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller',
+                          'Kakariko Gamble Game',
+                          'East Dark World Mirror Spot', 'West Dark World Mirror Spot', 'South Dark World Mirror Spot',
+                          'Cave 45', 'Checkerboard Cave', 'Mire Mirror Spot', 'Hammer Peg Area Mirror Spot',
+                          'Shopping Mall Mirror Spot', 'Skull Woods Mirror Spot', 'Inverted Pyramid Entrance',
+                          'Hyrule Castle Entrance (South)', 'Secret Passage Outer Bushes',
+                          'Bush Covered Lawn Outer Bushes',
                           'Potion Shop Outer Bushes', 'Graveyard Cave Outer Bushes', 'Bomb Hut Outer Bushes']),
-        create_lw_region(player, 'Bush Covered Lawn', None, ['Bush Covered House', 'Bush Covered Lawn Inner Bushes', 'Bush Covered Lawn Mirror Spot']),
-        create_lw_region(player, 'Bomb Hut Area', None, ['Light World Bomb Hut', 'Bomb Hut Inner Bushes', 'Bomb Hut Mirror Spot']),
-        create_lw_region(player, 'Hyrule Castle Secret Entrance Area', None, ['Hyrule Castle Secret Entrance Stairs', 'Secret Passage Inner Bushes']),
-        create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop', 'Bumper Cave Entrance Mirror Spot']),
-        create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Mirror Spot']),
-        create_cave_region(player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top",
-                                                                        "Blind\'s Hideout - Left",
-                                                                        "Blind\'s Hideout - Right",
-                                                                        "Blind\'s Hideout - Far Left",
-                                                                        "Blind\'s Hideout - Far Right"]),
-        create_lw_region(player, 'Northeast Light World', None, ['Zoras River', 'Waterfall of Wishing Cave', 'Potion Shop Outer Rock', 'Catfish Mirror Spot', 'Northeast Light World Warp']),
-        create_lw_region(player, 'Waterfall of Wishing Cave', None, ['Waterfall of Wishing', 'Northeast Light World Return']),
-        create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Potion Shop Inner Bushes', 'Potion Shop Inner Rock', 'Potion Shop Mirror Spot', 'Potion Shop River Drop']),
-        create_lw_region(player, 'Graveyard Cave Area', None, ['Graveyard Cave', 'Graveyard Cave Inner Bushes', 'Graveyard Cave Mirror Spot']),
-        create_lw_region(player, 'River', None, ['Light World Pier', 'Potion Shop Pier']),
-        create_cave_region(player, 'Hyrule Castle Secret Entrance', 'a drop\'s exit', ['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']),
-        create_lw_region(player, 'Zoras River', ['King Zora', 'Zora\'s Ledge']),
-        create_cave_region(player, 'Waterfall of Wishing', 'a cave with two chests', ['Waterfall Fairy - Left', 'Waterfall Fairy - Right']),
-        create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']),
-        create_cave_region(player, 'Kings Grave', 'a cave with a chest', ['King\'s Tomb']),
-        create_cave_region(player, 'North Fairy Cave', 'a drop\'s exit', None, ['North Fairy Cave Exit']),
-        create_cave_region(player, 'Dam', 'the dam', ['Floodgate', 'Floodgate Chest']),
-        create_cave_region(player, 'Inverted Links House', 'your house', ['Link\'s House'], ['Inverted Links House Exit']),
-        create_cave_region(player, 'Chris Houlihan Room', 'I AM ERROR', None, ['Chris Houlihan Room Exit']),
-        create_cave_region(player, 'Tavern', 'the tavern', ['Kakariko Tavern']),
-        create_cave_region(player, 'Elder House', 'a connector', None, ['Elder House Exit (East)', 'Elder House Exit (West)']),
-        create_cave_region(player, 'Snitch Lady (East)', 'a boring house'),
-        create_cave_region(player, 'Snitch Lady (West)', 'a boring house'),
-        create_cave_region(player, 'Bush Covered House', 'the grass man'),
-        create_cave_region(player, 'Tavern (Front)', 'the tavern'),
-        create_cave_region(player, 'Light World Bomb Hut', 'a restock room'),
-        create_cave_region(player, 'Kakariko Shop', 'a common shop'),
-        create_cave_region(player, 'Fortune Teller (Light)', 'a fortune teller'),
-        create_cave_region(player, 'Lake Hylia Fortune Teller', 'a fortune teller'),
-        create_cave_region(player, 'Lumberjack House', 'a boring house'),
-        create_cave_region(player, 'Bonk Fairy (Light)', 'a fairy fountain'),
-        create_cave_region(player, 'Bonk Fairy (Dark)', 'a fairy fountain'),
-        create_cave_region(player, 'Lake Hylia Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Swamp Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Desert Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Dark Lake Hylia Ledge Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Dark Desert Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Dark Death Mountain Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Chicken House', 'a house with a chest', ['Chicken House']),
-        create_cave_region(player, 'Aginahs Cave', 'a cave with a chest', ['Aginah\'s Cave']),
-        create_cave_region(player, 'Sahasrahlas Hut', 'Sahasrahla', ['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right', 'Sahasrahla']),
-        create_cave_region(player, 'Kakariko Well (top)', 'a drop\'s exit', ['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle',
-                                                                     'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']),
-        create_cave_region(player, 'Kakariko Well (bottom)', 'a drop\'s exit', None, ['Kakariko Well Exit']),
-        create_cave_region(player, 'Blacksmiths Hut', 'the smith', ['Blacksmith', 'Missing Smith']),
-        create_lw_region(player, 'Bat Cave Drop Ledge', None, ['Bat Cave Drop']),
-        create_cave_region(player, 'Bat Cave (right)', 'a drop\'s exit', ['Magic Bat'], ['Bat Cave Door']),
-        create_cave_region(player, 'Bat Cave (left)', 'a drop\'s exit', None, ['Bat Cave Exit']),
-        create_cave_region(player, 'Sick Kids House', 'the sick kid', ['Sick Kid']),
-        create_lw_region(player, 'Hobo Bridge', ['Hobo']),
-        create_cave_region(player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'], ['Lost Woods Hideout (top to bottom)']),
-        create_cave_region(player, 'Lost Woods Hideout (bottom)', 'a drop\'s exit', None, ['Lost Woods Hideout Exit']),
-        create_cave_region(player, 'Lumberjack Tree (top)', 'a drop\'s exit', ['Lumberjack Tree'], ['Lumberjack Tree (top to bottom)']),
-        create_cave_region(player, 'Lumberjack Tree (bottom)', 'a drop\'s exit', None, ['Lumberjack Tree Exit']),
-        create_cave_region(player, 'Cave 45', 'a cave with an item', ['Cave 45']),
-        create_cave_region(player, 'Graveyard Cave', 'a cave with an item', ['Graveyard Cave']),
-        create_cave_region(player, 'Checkerboard Cave', 'a cave with an item', ['Checkerboard Cave']),
-        create_cave_region(player, 'Long Fairy Cave', 'a fairy fountain'),
-        create_cave_region(player, 'Mini Moldorm Cave', 'a bounty of five items', ['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
-                                                                           'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']),
-        create_cave_region(player, 'Ice Rod Cave', 'a cave with a chest', ['Ice Rod Cave']),
-        create_cave_region(player, 'Good Bee Cave', 'a cold bee'),
-        create_cave_region(player, '20 Rupee Cave', 'a cave with some cash'),
-        create_cave_region(player, 'Cave Shop (Lake Hylia)', 'a common shop'),
-        create_cave_region(player, 'Cave Shop (Dark Death Mountain)', 'a common shop'),
-        create_cave_region(player, 'Bonk Rock Cave', 'a cave with a chest', ['Bonk Rock Cave']),
-        create_cave_region(player, 'Library', 'the library', ['Library']),
-        create_cave_region(player, 'Kakariko Gamble Game', 'a game of chance'),
-        create_cave_region(player, 'Potion Shop', 'the potion shop', ['Potion Shop']),
-        create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island']),
-        create_cave_region(player, 'Capacity Upgrade', 'the queen of fairies'),
-        create_cave_region(player, 'Two Brothers House', 'a connector', None, ['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']),
-        create_lw_region(player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)', 'Maze Race Mirror Spot']),
-        create_cave_region(player, '50 Rupee Cave', 'a cave with some cash'),
-        create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)', 'Desert Ledge Drop']),
-        create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)', 'Desert Palace Stairs Mirror Spot']),
-        create_lw_region(player, 'Desert Palace Lone Stairs', None, ['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
-        create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks', 'Desert Palace North Mirror Spot']),
-        create_dungeon_region(player, 'Desert Palace Main (Outer)', 'Desert Palace', ['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'],
-                              ['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)', 'Desert Palace East Wing']),
-        create_dungeon_region(player, 'Desert Palace Main (Inner)', 'Desert Palace', None, ['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']),
-        create_dungeon_region(player, 'Desert Palace East', 'Desert Palace', ['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
-        create_dungeon_region(player, 'Desert Palace North', 'Desert Palace', ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
-        create_dungeon_region(player, 'Eastern Palace', 'Eastern Palace', ['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest', 'Eastern Palace - Cannonball Chest',
-                                                 'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Boss', 'Eastern Palace - Prize'], ['Eastern Palace Exit']),
-        create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal']),
-        create_cave_region(player, 'Lost Woods Gamble', 'a game of chance'),
-        create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Inverted Ganons Tower', 'Hyrule Castle Ledge Courtyard Drop', 'Inverted Pyramid Hole']),
-        create_dungeon_region(player, 'Hyrule Castle', 'Hyrule Castle', ['Hyrule Castle - Boomerang Chest', 'Hyrule Castle - Map Chest', 'Hyrule Castle - Zelda\'s Chest'],
-                              ['Hyrule Castle Exit (East)', 'Hyrule Castle Exit (West)', 'Hyrule Castle Exit (South)', 'Throne Room']),
-        create_dungeon_region(player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']),  # This exists only to be referenced for access checks
-        create_dungeon_region(player, 'Sewers (Dark)', 'a drop\'s exit', ['Sewers - Dark Cross'], ['Sewers Door']),
-        create_dungeon_region(player, 'Sewers', 'a drop\'s exit', ['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle',
-                                         'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']),
-        create_dungeon_region(player, 'Sanctuary', 'a drop\'s exit', ['Sanctuary'], ['Sanctuary Exit']),
-        create_dungeon_region(player, 'Inverted Agahnims Tower', 'Castle Tower', ['Castle Tower - Room 03', 'Castle Tower - Dark Maze'], ['Agahnim 1', 'Inverted Agahnims Tower Exit']),
-        create_dungeon_region(player, 'Agahnim 1', 'Castle Tower', ['Agahnim 1'], None),
-        create_cave_region(player, 'Old Man Cave', 'a connector', ['Old Man'], ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
-        create_cave_region(player, 'Old Man House', 'a connector', None, ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']),
-        create_cave_region(player, 'Old Man House Back', 'a connector', None, ['Old Man House Exit (Top)', 'Old Man House Back to Front']),
-        create_lw_region(player, 'Death Mountain', None, ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)', 'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 
-                                                  'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'Broken Bridge (West)', 'Death Mountain Mirror Spot']),
-        create_cave_region(player, 'Death Mountain Return Cave', 'a connector', None, ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']),
-        create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)', 'Bumper Cave Ledge Mirror Spot']),
-        create_cave_region(player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'], ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
-        create_cave_region(player, 'Spectacle Rock Cave (Bottom)', 'a connector', None, ['Spectacle Rock Cave Exit']),
-        create_cave_region(player, 'Spectacle Rock Cave (Peak)', 'a connector', None, ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
-        create_lw_region(player, 'East Death Mountain (Bottom)', None, ['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'East Death Mountain Mirror Spot (Bottom)', 'Hookshot Fairy', 
-                                                                'Fairy Ascension Rocks', 'Spiral Cave (Bottom)']),
-        create_cave_region(player, 'Hookshot Fairy', 'fairies deep in a cave'),
-        create_cave_region(player, 'Paradox Cave Front', 'a connector', None, ['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)', 'Light World Death Mountain Shop']),
-        create_cave_region(player, 'Paradox Cave Chest Area', 'a connector', ['Paradox Cave Lower - Far Left',
-                                                                      'Paradox Cave Lower - Left',
-                                                                      'Paradox Cave Lower - Right',
-                                                                      'Paradox Cave Lower - Far Right',
-                                                                      'Paradox Cave Lower - Middle',
-                                                                      'Paradox Cave Upper - Left',
-                                                                      'Paradox Cave Upper - Right'],
+        create_lw_region(world, player, 'Bush Covered Lawn', None,
+                         ['Bush Covered House', 'Bush Covered Lawn Inner Bushes', 'Bush Covered Lawn Mirror Spot']),
+        create_lw_region(world, player, 'Bomb Hut Area', None,
+                         ['Light World Bomb Hut', 'Bomb Hut Inner Bushes', 'Bomb Hut Mirror Spot']),
+        create_lw_region(world, player, 'Hyrule Castle Secret Entrance Area', None,
+                         ['Hyrule Castle Secret Entrance Stairs', 'Secret Passage Inner Bushes']),
+        create_lw_region(world, player, 'Death Mountain Entrance', None,
+                         ['Old Man Cave (West)', 'Death Mountain Entrance Drop', 'Bumper Cave Entrance Mirror Spot']),
+        create_lw_region(world, player, 'Lake Hylia Central Island', None,
+                         ['Capacity Upgrade', 'Lake Hylia Central Island Mirror Spot']),
+        create_cave_region(world, player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top",
+                                                                                       "Blind\'s Hideout - Left",
+                                                                                       "Blind\'s Hideout - Right",
+                                                                                       "Blind\'s Hideout - Far Left",
+                                                                                       "Blind\'s Hideout - Far Right"]),
+        create_lw_region(world, player, 'Northeast Light World', None,
+                         ['Zoras River', 'Waterfall of Wishing Cave', 'Potion Shop Outer Rock', 'Catfish Mirror Spot',
+                          'Northeast Light World Warp']),
+        create_lw_region(world, player, 'Waterfall of Wishing Cave', None,
+                         ['Waterfall of Wishing', 'Northeast Light World Return']),
+        create_lw_region(world, player, 'Potion Shop Area', None,
+                         ['Potion Shop', 'Potion Shop Inner Bushes', 'Potion Shop Inner Rock',
+                          'Potion Shop Mirror Spot', 'Potion Shop River Drop']),
+        create_lw_region(world, player, 'Graveyard Cave Area', None,
+                         ['Graveyard Cave', 'Graveyard Cave Inner Bushes', 'Graveyard Cave Mirror Spot']),
+        create_lw_region(world, player, 'River', None, ['Light World Pier', 'Potion Shop Pier']),
+        create_cave_region(world, player, 'Hyrule Castle Secret Entrance', 'a drop\'s exit',
+                           ['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']),
+        create_lw_region(world, player, 'Zoras River', ['King Zora', 'Zora\'s Ledge']),
+        create_cave_region(world, player, 'Waterfall of Wishing', 'a cave with two chests',
+                           ['Waterfall Fairy - Left', 'Waterfall Fairy - Right']),
+        create_lw_region(world, player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']),
+        create_cave_region(world, player, 'Kings Grave', 'a cave with a chest', ['King\'s Tomb']),
+        create_cave_region(world, player, 'North Fairy Cave', 'a drop\'s exit', None, ['North Fairy Cave Exit']),
+        create_cave_region(world, player, 'Dam', 'the dam', ['Floodgate', 'Floodgate Chest']),
+        create_cave_region(world, player, 'Inverted Links House', 'your house', ['Link\'s House'],
+                           ['Inverted Links House Exit']),
+        create_cave_region(world, player, 'Chris Houlihan Room', 'I AM ERROR', None, ['Chris Houlihan Room Exit']),
+        create_cave_region(world, player, 'Tavern', 'the tavern', ['Kakariko Tavern']),
+        create_cave_region(world, player, 'Elder House', 'a connector', None,
+                           ['Elder House Exit (East)', 'Elder House Exit (West)']),
+        create_cave_region(world, player, 'Snitch Lady (East)', 'a boring house'),
+        create_cave_region(world, player, 'Snitch Lady (West)', 'a boring house'),
+        create_cave_region(world, player, 'Bush Covered House', 'the grass man'),
+        create_cave_region(world, player, 'Tavern (Front)', 'the tavern'),
+        create_cave_region(world, player, 'Light World Bomb Hut', 'a restock room'),
+        create_cave_region(world, player, 'Kakariko Shop', 'a common shop'),
+        create_cave_region(world, player, 'Fortune Teller (Light)', 'a fortune teller'),
+        create_cave_region(world, player, 'Lake Hylia Fortune Teller', 'a fortune teller'),
+        create_cave_region(world, player, 'Lumberjack House', 'a boring house'),
+        create_cave_region(world, player, 'Bonk Fairy (Light)', 'a fairy fountain'),
+        create_cave_region(world, player, 'Bonk Fairy (Dark)', 'a fairy fountain'),
+        create_cave_region(world, player, 'Lake Hylia Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Swamp Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Desert Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Dark Lake Hylia Ledge Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Dark Desert Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Dark Death Mountain Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Chicken House', 'a house with a chest', ['Chicken House']),
+        create_cave_region(world, player, 'Aginahs Cave', 'a cave with a chest', ['Aginah\'s Cave']),
+        create_cave_region(world, player, 'Sahasrahlas Hut', 'Sahasrahla',
+                           ['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right',
+                            'Sahasrahla']),
+        create_cave_region(world, player, 'Kakariko Well (top)', 'a drop\'s exit',
+                           ['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle',
+                            'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']),
+        create_cave_region(world, player, 'Kakariko Well (bottom)', 'a drop\'s exit', None, ['Kakariko Well Exit']),
+        create_cave_region(world, player, 'Blacksmiths Hut', 'the smith', ['Blacksmith', 'Missing Smith']),
+        create_lw_region(world, player, 'Bat Cave Drop Ledge', None, ['Bat Cave Drop']),
+        create_cave_region(world, player, 'Bat Cave (right)', 'a drop\'s exit', ['Magic Bat'], ['Bat Cave Door']),
+        create_cave_region(world, player, 'Bat Cave (left)', 'a drop\'s exit', None, ['Bat Cave Exit']),
+        create_cave_region(world, player, 'Sick Kids House', 'the sick kid', ['Sick Kid']),
+        create_lw_region(world, player, 'Hobo Bridge', ['Hobo']),
+        create_cave_region(world, player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'],
+                           ['Lost Woods Hideout (top to bottom)']),
+        create_cave_region(world, player, 'Lost Woods Hideout (bottom)', 'a drop\'s exit', None,
+                           ['Lost Woods Hideout Exit']),
+        create_cave_region(world, player, 'Lumberjack Tree (top)', 'a drop\'s exit', ['Lumberjack Tree'],
+                           ['Lumberjack Tree (top to bottom)']),
+        create_cave_region(world, player, 'Lumberjack Tree (bottom)', 'a drop\'s exit', None, ['Lumberjack Tree Exit']),
+        create_cave_region(world, player, 'Cave 45', 'a cave with an item', ['Cave 45']),
+        create_cave_region(world, player, 'Graveyard Cave', 'a cave with an item', ['Graveyard Cave']),
+        create_cave_region(world, player, 'Checkerboard Cave', 'a cave with an item', ['Checkerboard Cave']),
+        create_cave_region(world, player, 'Long Fairy Cave', 'a fairy fountain'),
+        create_cave_region(world, player, 'Mini Moldorm Cave', 'a bounty of five items',
+                           ['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
+                            'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']),
+        create_cave_region(world, player, 'Ice Rod Cave', 'a cave with a chest', ['Ice Rod Cave']),
+        create_cave_region(world, player, 'Good Bee Cave', 'a cold bee'),
+        create_cave_region(world, player, '20 Rupee Cave', 'a cave with some cash'),
+        create_cave_region(world, player, 'Cave Shop (Lake Hylia)', 'a common shop'),
+        create_cave_region(world, player, 'Cave Shop (Dark Death Mountain)', 'a common shop'),
+        create_cave_region(world, player, 'Bonk Rock Cave', 'a cave with a chest', ['Bonk Rock Cave']),
+        create_cave_region(world, player, 'Library', 'the library', ['Library']),
+        create_cave_region(world, player, 'Kakariko Gamble Game', 'a game of chance'),
+        create_cave_region(world, player, 'Potion Shop', 'the potion shop', ['Potion Shop']),
+        create_lw_region(world, player, 'Lake Hylia Island', ['Lake Hylia Island']),
+        create_cave_region(world, player, 'Capacity Upgrade', 'the queen of fairies'),
+        create_cave_region(world, player, 'Two Brothers House', 'a connector', None,
+                           ['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']),
+        create_lw_region(world, player, 'Maze Race Ledge', ['Maze Race'],
+                         ['Two Brothers House (West)', 'Maze Race Mirror Spot']),
+        create_cave_region(world, player, '50 Rupee Cave', 'a cave with some cash'),
+        create_lw_region(world, player, 'Desert Ledge', ['Desert Ledge'],
+                         ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)',
+                          'Desert Ledge Drop']),
+        create_lw_region(world, player, 'Desert Palace Stairs', None,
+                         ['Desert Palace Entrance (South)', 'Desert Palace Stairs Mirror Spot']),
+        create_lw_region(world, player, 'Desert Palace Lone Stairs', None,
+                         ['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
+        create_lw_region(world, player, 'Desert Palace Entrance (North) Spot', None,
+                         ['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks',
+                          'Desert Palace North Mirror Spot']),
+        create_dungeon_region(world, player, 'Desert Palace Main (Outer)', 'Desert Palace',
+                              ['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'],
+                              ['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)',
+                               'Desert Palace East Wing']),
+        create_dungeon_region(world, player, 'Desert Palace Main (Inner)', 'Desert Palace', None,
+                              ['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']),
+        create_dungeon_region(world, player, 'Desert Palace East', 'Desert Palace',
+                              ['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
+        create_dungeon_region(world, player, 'Desert Palace North', 'Desert Palace',
+                              ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
+        create_dungeon_region(world, player, 'Eastern Palace', 'Eastern Palace',
+                              ['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest',
+                               'Eastern Palace - Cannonball Chest',
+                               'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Boss',
+                               'Eastern Palace - Prize'], ['Eastern Palace Exit']),
+        create_lw_region(world, player, 'Master Sword Meadow', ['Master Sword Pedestal']),
+        create_cave_region(world, player, 'Lost Woods Gamble', 'a game of chance'),
+        create_lw_region(world, player, 'Hyrule Castle Ledge', None,
+                         ['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Inverted Ganons Tower',
+                          'Hyrule Castle Ledge Courtyard Drop', 'Inverted Pyramid Hole']),
+        create_dungeon_region(world, player, 'Hyrule Castle', 'Hyrule Castle',
+                              ['Hyrule Castle - Boomerang Chest', 'Hyrule Castle - Map Chest',
+                               'Hyrule Castle - Zelda\'s Chest'],
+                              ['Hyrule Castle Exit (East)', 'Hyrule Castle Exit (West)', 'Hyrule Castle Exit (South)',
+                               'Throne Room']),
+        create_dungeon_region(world, player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']),  # This exists only to be referenced for access checks
+        create_dungeon_region(world, player, 'Sewers (Dark)', 'a drop\'s exit', ['Sewers - Dark Cross'],
+                              ['Sewers Door']),
+        create_dungeon_region(world, player, 'Sewers', 'a drop\'s exit',
+                              ['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle',
+                               'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']),
+        create_dungeon_region(world, player, 'Sanctuary', 'a drop\'s exit', ['Sanctuary'], ['Sanctuary Exit']),
+        create_dungeon_region(world, player, 'Inverted Agahnims Tower', 'Castle Tower',
+                              ['Castle Tower - Room 03', 'Castle Tower - Dark Maze'],
+                              ['Agahnim 1', 'Inverted Agahnims Tower Exit']),
+        create_dungeon_region(world, player, 'Agahnim 1', 'Castle Tower', ['Agahnim 1'], None),
+        create_cave_region(world, player, 'Old Man Cave', 'a connector', ['Old Man'],
+                           ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
+        create_cave_region(world, player, 'Old Man House', 'a connector', None,
+                           ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']),
+        create_cave_region(world, player, 'Old Man House Back', 'a connector', None,
+                           ['Old Man House Exit (Top)', 'Old Man House Back to Front']),
+        create_lw_region(world, player, 'Death Mountain', None,
+                         ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)',
+                          'Death Mountain Return Cave (East)', 'Spectacle Rock Cave',
+                          'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'Broken Bridge (West)',
+                          'Death Mountain Mirror Spot']),
+        create_cave_region(world, player, 'Death Mountain Return Cave', 'a connector', None,
+                           ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']),
+        create_lw_region(world, player, 'Death Mountain Return Ledge', None,
+                         ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)',
+                          'Bumper Cave Ledge Mirror Spot']),
+        create_cave_region(world, player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'],
+                           ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
+        create_cave_region(world, player, 'Spectacle Rock Cave (Bottom)', 'a connector', None,
+                           ['Spectacle Rock Cave Exit']),
+        create_cave_region(world, player, 'Spectacle Rock Cave (Peak)', 'a connector', None,
+                           ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
+        create_lw_region(world, player, 'East Death Mountain (Bottom)', None,
+                         ['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)',
+                          'East Death Mountain Mirror Spot (Bottom)', 'Hookshot Fairy',
+                          'Fairy Ascension Rocks', 'Spiral Cave (Bottom)']),
+        create_cave_region(world, player, 'Hookshot Fairy', 'fairies deep in a cave'),
+        create_cave_region(world, player, 'Paradox Cave Front', 'a connector', None,
+                           ['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)',
+                            'Light World Death Mountain Shop']),
+        create_cave_region(world, player, 'Paradox Cave Chest Area', 'a connector', ['Paradox Cave Lower - Far Left',
+                                                                                     'Paradox Cave Lower - Left',
+                                                                                     'Paradox Cave Lower - Right',
+                                                                                     'Paradox Cave Lower - Far Right',
+                                                                                     'Paradox Cave Lower - Middle',
+                                                                                     'Paradox Cave Upper - Left',
+                                                                                     'Paradox Cave Upper - Right'],
                            ['Paradox Cave Push Block', 'Paradox Cave Bomb Jump']),
-        create_cave_region(player, 'Paradox Cave', 'a connector', None, ['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']),
-        create_cave_region(player, 'Light World Death Mountain Shop', 'a common shop'),
-        create_lw_region(player, 'East Death Mountain (Top)', ['Floating Island'], ['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access', 'East Death Mountain Drop', 'East Death Mountain Mirror Spot (Top)', 'Fairy Ascension Ledge Access', 'Mimic Cave Ledge Access',
-                                                                            'Floating Island Mirror Spot']),
-        create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (West)']),
-        create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave', 'Mimic Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (East)']),
-        create_cave_region(player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'], ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
-        create_cave_region(player, 'Spiral Cave (Bottom)', 'a connector', None, ['Spiral Cave Exit']),
-        create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']),
-        create_cave_region(player, 'Fairy Ascension Cave (Bottom)', 'a connector', None, ['Fairy Ascension Cave Climb', 'Fairy Ascension Cave Exit (Bottom)']),
-        create_cave_region(player, 'Fairy Ascension Cave (Drop)', 'a connector', None, ['Fairy Ascension Cave Pots']),
-        create_cave_region(player, 'Fairy Ascension Cave (Top)', 'a connector', None, ['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']),
-        create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)', 'Laser Bridge Mirror Spot']),
-        create_lw_region(player, 'Death Mountain (Top)', ['Ether Tablet', 'Spectacle Rock'], ['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop', 'Death Mountain (Top) Mirror Spot']),
-        create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)']),
-        create_dungeon_region(player, 'Tower of Hera (Bottom)', 'Tower of Hera', ['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'], ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
-        create_dungeon_region(player, 'Tower of Hera (Basement)', 'Tower of Hera', ['Tower of Hera - Big Key Chest']),
-        create_dungeon_region(player, 'Tower of Hera (Top)', 'Tower of Hera', ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss', 'Tower of Hera - Prize']),
+        create_cave_region(world, player, 'Paradox Cave', 'a connector', None,
+                           ['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']),
+        create_cave_region(world, player, 'Light World Death Mountain Shop', 'a common shop'),
+        create_lw_region(world, player, 'East Death Mountain (Top)', ['Floating Island'],
+                         ['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access',
+                          'East Death Mountain Drop', 'East Death Mountain Mirror Spot (Top)',
+                          'Fairy Ascension Ledge Access', 'Mimic Cave Ledge Access',
+                          'Floating Island Mirror Spot']),
+        create_lw_region(world, player, 'Spiral Cave Ledge', None,
+                         ['Spiral Cave', 'Spiral Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (West)']),
+        create_lw_region(world, player, 'Mimic Cave Ledge', None,
+                         ['Mimic Cave', 'Mimic Cave Ledge Drop', 'Dark Death Mountain Ledge Mirror Spot (East)']),
+        create_cave_region(world, player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'],
+                           ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
+        create_cave_region(world, player, 'Spiral Cave (Bottom)', 'a connector', None, ['Spiral Cave Exit']),
+        create_lw_region(world, player, 'Fairy Ascension Plateau', None,
+                         ['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']),
+        create_cave_region(world, player, 'Fairy Ascension Cave (Bottom)', 'a connector', None,
+                           ['Fairy Ascension Cave Climb', 'Fairy Ascension Cave Exit (Bottom)']),
+        create_cave_region(world, player, 'Fairy Ascension Cave (Drop)', 'a connector', None,
+                           ['Fairy Ascension Cave Pots']),
+        create_cave_region(world, player, 'Fairy Ascension Cave (Top)', 'a connector', None,
+                           ['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']),
+        create_lw_region(world, player, 'Fairy Ascension Ledge', None,
+                         ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)', 'Laser Bridge Mirror Spot']),
+        create_lw_region(world, player, 'Death Mountain (Top)', ['Ether Tablet', 'Spectacle Rock'],
+                         ['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop',
+                          'Death Mountain (Top) Mirror Spot']),
+        create_dw_region(world, player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'],
+                         ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)']),
+        create_dungeon_region(world, player, 'Tower of Hera (Bottom)', 'Tower of Hera',
+                              ['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'],
+                              ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
+        create_dungeon_region(world, player, 'Tower of Hera (Basement)', 'Tower of Hera',
+                              ['Tower of Hera - Big Key Chest']),
+        create_dungeon_region(world, player, 'Tower of Hera (Top)', 'Tower of Hera',
+                              ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss',
+                               'Tower of Hera - Prize']),
 
-        create_dw_region(player, 'East Dark World', ['Pyramid'], ['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness', 'Dark Lake Hylia Drop (East)', 
-                                                          'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint', 'Northeast Dark World Broken Bridge Pass', 'East Dark World Teleporter', 'EDW Flute']),
-        create_dw_region(player, 'Catfish', ['Catfish'], ['Catfish Exit Rock']),
-        create_dw_region(player, 'Northeast Dark World', None, ['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass', 'NEDW Flute', 'Dark Lake Hylia Teleporter', 'Catfish Entrance Rock']),
-        create_cave_region(player, 'Palace of Darkness Hint', 'a storyteller'),
-        create_cave_region(player, 'East Dark World Hint', 'a storyteller'),
-        create_dw_region(player, 'South Dark World', ['Stumpy', 'Digging Game'], ['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock', 'East Dark World Bridge', 'Inverted Links House', 'Archery Game', 'Bonk Fairy (Dark)', 
-                                              'Dark Lake Hylia Shop', 'South Dark World Teleporter', 'Post Aga Teleporter', 'SDW Flute']),
-        create_cave_region(player, 'Inverted Big Bomb Shop', 'the bomb shop'),
-        create_cave_region(player, 'Archery Game', 'a game of skill'),
-        create_dw_region(player, 'Dark Lake Hylia', None, ['East Dark World Pier', 'Dark Lake Hylia Ledge Pier', 'Ice Palace Missing Wall']),
-        create_dw_region(player, 'Dark Lake Hylia Central Island', None, ['Dark Lake Hylia Shallows', 'Ice Palace', 'Dark Lake Hylia Central Island Teleporter']),
-        create_dw_region(player, 'Dark Lake Hylia Ledge', None, ['Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave', 'DLHL Flute']),
-        create_cave_region(player, 'Dark Lake Hylia Ledge Hint', 'a storyteller'),
-        create_cave_region(player, 'Dark Lake Hylia Ledge Spike Cave', 'a spiky hint'),
-        create_cave_region(player, 'Hype Cave', 'a bounty of five items', ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
-                                                                   'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
-        create_dw_region(player, 'West Dark World', ['Frog', 'Flute Activation Spot'], ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Bumper Cave Entrance Rock',
-                                                       'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks', 'Red Shield Shop', 'Inverted Dark Sanctuary', 'Fortune Teller (Dark)', 'Dark World Lumberjack Shop',
-                                                       'West Dark World Teleporter', 'WDW Flute']),
-        create_dw_region(player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Village of Outcasts Shop', 'Dark Grassy Lawn Flute']),
-        create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Dark World Hammer Peg Cave', 'Peg Area Rocks', 'Hammer Peg Area Flute']),
-        create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Drop']),
-        create_cave_region(player, 'Fortune Teller (Dark)', 'a fortune teller'),
-        create_cave_region(player, 'Village of Outcasts Shop', 'a common shop'),
-        create_cave_region(player, 'Dark Lake Hylia Shop', 'a common shop'),
-        create_cave_region(player, 'Dark World Lumberjack Shop', 'a common shop'),
-        create_cave_region(player, 'Dark World Potion Shop', 'a common shop'),
-        create_cave_region(player, 'Dark World Hammer Peg Cave', 'a cave with an item', ['Peg Cave']),
-        create_cave_region(player, 'Pyramid Fairy', 'a cave with two chests', ['Pyramid Fairy - Left', 'Pyramid Fairy - Right']),
-        create_cave_region(player, 'Brewery', 'a house with a chest', ['Brewery']),
-        create_cave_region(player, 'C-Shaped House', 'a house with a chest', ['C-Shaped House']),
-        create_cave_region(player, 'Chest Game', 'a game of 16 chests', ['Chest Game']),
-        create_cave_region(player, 'Red Shield Shop', 'the rare shop'),
-        create_cave_region(player, 'Inverted Dark Sanctuary', 'a storyteller', None, ['Inverted Dark Sanctuary Exit']),
-        create_cave_region(player, 'Bumper Cave', 'a connector', None, ['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']),
-        create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)',
-                                                      'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']),
-        create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section']),
-        create_dw_region(player, 'Dark Desert',  None, ['Misery Mire', 'Mire Shed', 'Dark Desert Hint', 'Dark Desert Fairy', 'DD Flute']),
-        create_dw_region(player, 'Dark Desert Ledge',  None, ['Dark Desert Drop', 'Dark Desert Teleporter']),
-        create_cave_region(player, 'Mire Shed', 'a cave with two chests', ['Mire Shed - Left', 'Mire Shed - Right']),
-        create_cave_region(player, 'Dark Desert Hint', 'a storyteller'),
-        create_dw_region(player, 'Dark Death Mountain', None, ['Dark Death Mountain Drop (East)', 'Inverted Agahnims Tower', 'Superbunny Cave (Top)', 'Hookshot Cave', 'Turtle Rock', 
-                                                      'Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)', 'Turtle Rock Tail Drop', 'DDM Flute']),
-        create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)']),
-        create_dw_region(player, 'Turtle Rock (Top)', None, ['Dark Death Mountain Teleporter (East)', 'Turtle Rock Drop']),
-        create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance']),
-        create_dw_region(player, 'Dark Death Mountain (East Bottom)', None, ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Dark Death Mountain Teleporter (East Bottom)', 'EDDM Flute']),
-        create_cave_region(player, 'Superbunny Cave (Top)', 'a connector', ['Superbunny Cave - Top', 'Superbunny Cave - Bottom'], ['Superbunny Cave Exit (Top)']),
-        create_cave_region(player, 'Superbunny Cave (Bottom)', 'a connector', None, ['Superbunny Cave Climb', 'Superbunny Cave Exit (Bottom)']),
-        create_cave_region(player, 'Spike Cave', 'Spike Cave', ['Spike Cave']),
-        create_cave_region(player, 'Hookshot Cave', 'a connector', ['Hookshot Cave - Top Right', 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right', 'Hookshot Cave - Bottom Left'],
+        create_dw_region(world, player, 'East Dark World', ['Pyramid'],
+                         ['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness',
+                          'Dark Lake Hylia Drop (East)',
+                          'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint',
+                          'Northeast Dark World Broken Bridge Pass', 'East Dark World Teleporter', 'EDW Flute']),
+        create_dw_region(world, player, 'Catfish', ['Catfish'], ['Catfish Exit Rock']),
+        create_dw_region(world, player, 'Northeast Dark World', None,
+                         ['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass',
+                          'NEDW Flute', 'Dark Lake Hylia Teleporter', 'Catfish Entrance Rock']),
+        create_cave_region(world, player, 'Palace of Darkness Hint', 'a storyteller'),
+        create_cave_region(world, player, 'East Dark World Hint', 'a storyteller'),
+        create_dw_region(world, player, 'South Dark World', ['Stumpy', 'Digging Game'],
+                         ['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock',
+                          'East Dark World Bridge', 'Inverted Links House', 'Archery Game', 'Bonk Fairy (Dark)',
+                          'Dark Lake Hylia Shop', 'South Dark World Teleporter', 'Post Aga Teleporter', 'SDW Flute']),
+        create_cave_region(world, player, 'Inverted Big Bomb Shop', 'the bomb shop'),
+        create_cave_region(world, player, 'Archery Game', 'a game of skill'),
+        create_dw_region(world, player, 'Dark Lake Hylia', None,
+                         ['East Dark World Pier', 'Dark Lake Hylia Ledge Pier', 'Ice Palace Missing Wall']),
+        create_dw_region(world, player, 'Dark Lake Hylia Central Island', None,
+                         ['Dark Lake Hylia Shallows', 'Ice Palace', 'Dark Lake Hylia Central Island Teleporter']),
+        create_dw_region(world, player, 'Dark Lake Hylia Ledge', None,
+                         ['Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint',
+                          'Dark Lake Hylia Ledge Spike Cave', 'DLHL Flute']),
+        create_cave_region(world, player, 'Dark Lake Hylia Ledge Hint', 'a storyteller'),
+        create_cave_region(world, player, 'Dark Lake Hylia Ledge Spike Cave', 'a spiky hint'),
+        create_cave_region(world, player, 'Hype Cave', 'a bounty of five items',
+                           ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
+                            'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
+        create_dw_region(world, player, 'West Dark World', ['Frog', 'Flute Activation Spot'],
+                         ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House',
+                          'Chest Game', 'Thieves Town', 'Bumper Cave Entrance Rock',
+                          'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks',
+                          'Red Shield Shop', 'Inverted Dark Sanctuary', 'Fortune Teller (Dark)',
+                          'Dark World Lumberjack Shop',
+                          'West Dark World Teleporter', 'WDW Flute']),
+        create_dw_region(world, player, 'Dark Grassy Lawn', None,
+                         ['Grassy Lawn Pegs', 'Village of Outcasts Shop', 'Dark Grassy Lawn Flute']),
+        create_dw_region(world, player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'],
+                         ['Dark World Hammer Peg Cave', 'Peg Area Rocks', 'Hammer Peg Area Flute']),
+        create_dw_region(world, player, 'Bumper Cave Entrance', None,
+                         ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Drop']),
+        create_cave_region(world, player, 'Fortune Teller (Dark)', 'a fortune teller'),
+        create_cave_region(world, player, 'Village of Outcasts Shop', 'a common shop'),
+        create_cave_region(world, player, 'Dark Lake Hylia Shop', 'a common shop'),
+        create_cave_region(world, player, 'Dark World Lumberjack Shop', 'a common shop'),
+        create_cave_region(world, player, 'Dark World Potion Shop', 'a common shop'),
+        create_cave_region(world, player, 'Dark World Hammer Peg Cave', 'a cave with an item', ['Peg Cave']),
+        create_cave_region(world, player, 'Pyramid Fairy', 'a cave with two chests',
+                           ['Pyramid Fairy - Left', 'Pyramid Fairy - Right']),
+        create_cave_region(world, player, 'Brewery', 'a house with a chest', ['Brewery']),
+        create_cave_region(world, player, 'C-Shaped House', 'a house with a chest', ['C-Shaped House']),
+        create_cave_region(world, player, 'Chest Game', 'a game of 16 chests', ['Chest Game']),
+        create_cave_region(world, player, 'Red Shield Shop', 'the rare shop'),
+        create_cave_region(world, player, 'Inverted Dark Sanctuary', 'a storyteller', None,
+                           ['Inverted Dark Sanctuary Exit']),
+        create_cave_region(world, player, 'Bumper Cave', 'a connector', None,
+                           ['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']),
+        create_dw_region(world, player, 'Skull Woods Forest', None,
+                         ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)',
+                          'Skull Woods First Section Hole (North)',
+                          'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']),
+        create_dw_region(world, player, 'Skull Woods Forest (West)', None,
+                         ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)',
+                          'Skull Woods Final Section']),
+        create_dw_region(world, player, 'Dark Desert', None,
+                         ['Misery Mire', 'Mire Shed', 'Dark Desert Hint', 'Dark Desert Fairy', 'DD Flute']),
+        create_dw_region(world, player, 'Dark Desert Ledge', None, ['Dark Desert Drop', 'Dark Desert Teleporter']),
+        create_cave_region(world, player, 'Mire Shed', 'a cave with two chests',
+                           ['Mire Shed - Left', 'Mire Shed - Right']),
+        create_cave_region(world, player, 'Dark Desert Hint', 'a storyteller'),
+        create_dw_region(world, player, 'Dark Death Mountain', None,
+                         ['Dark Death Mountain Drop (East)', 'Inverted Agahnims Tower', 'Superbunny Cave (Top)',
+                          'Hookshot Cave', 'Turtle Rock',
+                          'Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)',
+                          'Turtle Rock Tail Drop', 'DDM Flute']),
+        create_dw_region(world, player, 'Dark Death Mountain Ledge', None,
+                         ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)']),
+        create_dw_region(world, player, 'Turtle Rock (Top)', None,
+                         ['Dark Death Mountain Teleporter (East)', 'Turtle Rock Drop']),
+        create_dw_region(world, player, 'Dark Death Mountain Isolated Ledge', None,
+                         ['Turtle Rock Isolated Ledge Entrance']),
+        create_dw_region(world, player, 'Dark Death Mountain (East Bottom)', None,
+                         ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)',
+                          'Dark Death Mountain Teleporter (East Bottom)', 'EDDM Flute']),
+        create_cave_region(world, player, 'Superbunny Cave (Top)', 'a connector',
+                           ['Superbunny Cave - Top', 'Superbunny Cave - Bottom'], ['Superbunny Cave Exit (Top)']),
+        create_cave_region(world, player, 'Superbunny Cave (Bottom)', 'a connector', None,
+                           ['Superbunny Cave Climb', 'Superbunny Cave Exit (Bottom)']),
+        create_cave_region(world, player, 'Spike Cave', 'Spike Cave', ['Spike Cave']),
+        create_cave_region(world, player, 'Hookshot Cave', 'a connector',
+                           ['Hookshot Cave - Top Right', 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right',
+                            'Hookshot Cave - Bottom Left'],
                            ['Hookshot Cave Exit (South)', 'Hookshot Cave Exit (North)']),
-        create_dw_region(player, 'Death Mountain Floating Island (Dark World)', None, ['Floating Island Drop', 'Hookshot Cave Back Entrance']),
-        create_cave_region(player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']),
+        create_dw_region(world, player, 'Death Mountain Floating Island (Dark World)', None,
+                         ['Floating Island Drop', 'Hookshot Cave Back Entrance']),
+        create_cave_region(world, player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']),
 
-        create_dungeon_region(player, 'Swamp Palace (Entrance)', 'Swamp Palace', None, ['Swamp Palace Moat', 'Swamp Palace Exit']),
-        create_dungeon_region(player, 'Swamp Palace (First Room)', 'Swamp Palace', ['Swamp Palace - Entrance'], ['Swamp Palace Small Key Door']),
-        create_dungeon_region(player, 'Swamp Palace (Starting Area)', 'Swamp Palace', ['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']),
-        create_dungeon_region(player, 'Swamp Palace (Center)', 'Swamp Palace', ['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
-                                                                        'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
-        create_dungeon_region(player, 'Swamp Palace (North)', 'Swamp Palace', ['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
-                                                                       'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']),
-        create_dungeon_region(player, 'Thieves Town (Entrance)', 'Thieves\' Town', ['Thieves\' Town - Big Key Chest',
-                                                                            'Thieves\' Town - Map Chest',
-                                                                            'Thieves\' Town - Compass Chest',
-                                                                            'Thieves\' Town - Ambush Chest'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
-        create_dungeon_region(player, 'Thieves Town (Deep)', 'Thieves\' Town', ['Thieves\' Town - Attic',
-                                                                        'Thieves\' Town - Big Chest',
-                                                                        'Thieves\' Town - Blind\'s Cell'], ['Blind Fight']),
-        create_dungeon_region(player, 'Blind Fight', 'Thieves\' Town', ['Thieves\' Town - Boss', 'Thieves\' Town - Prize']),
-        create_dungeon_region(player, 'Skull Woods First Section', 'Skull Woods', ['Skull Woods - Map Chest'], ['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump', 'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
-        create_dungeon_region(player, 'Skull Woods First Section (Right)', 'Skull Woods', ['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
-        create_dungeon_region(player, 'Skull Woods First Section (Left)', 'Skull Woods', ['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'], ['Skull Woods First Section (Left) Door to Exit', 'Skull Woods First Section (Left) Door to Right']),
-        create_dungeon_region(player, 'Skull Woods First Section (Top)', 'Skull Woods', ['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
-        create_dungeon_region(player, 'Skull Woods Second Section (Drop)', 'Skull Woods', None, ['Skull Woods Second Section (Drop)']),
-        create_dungeon_region(player, 'Skull Woods Second Section', 'Skull Woods', ['Skull Woods - Big Key Chest'], ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
-        create_dungeon_region(player, 'Skull Woods Final Section (Entrance)', 'Skull Woods', ['Skull Woods - Bridge Room'], ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
-        create_dungeon_region(player, 'Skull Woods Final Section (Mothula)', 'Skull Woods', ['Skull Woods - Boss', 'Skull Woods - Prize']),
-        create_dungeon_region(player, 'Ice Palace (Entrance)', 'Ice Palace', None, ['Ice Palace Entrance Room', 'Ice Palace Exit']),
-        create_dungeon_region(player, 'Ice Palace (Main)', 'Ice Palace', ['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
-                                                                  'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'], ['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
-        create_dungeon_region(player, 'Ice Palace (East)', 'Ice Palace', ['Ice Palace - Spike Room'], ['Ice Palace (East Top)']),
-        create_dungeon_region(player, 'Ice Palace (East Top)', 'Ice Palace', ['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
-        create_dungeon_region(player, 'Ice Palace (Kholdstare)', 'Ice Palace', ['Ice Palace - Boss', 'Ice Palace - Prize']),
-        create_dungeon_region(player, 'Misery Mire (Entrance)', 'Misery Mire', None, ['Misery Mire Entrance Gap', 'Misery Mire Exit']),
-        create_dungeon_region(player, 'Misery Mire (Main)', 'Misery Mire', ['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
-                                                                    'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'], ['Misery Mire (West)', 'Misery Mire Big Key Door']),
-        create_dungeon_region(player, 'Misery Mire (West)', 'Misery Mire', ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
-        create_dungeon_region(player, 'Misery Mire (Final Area)', 'Misery Mire', None, ['Misery Mire (Vitreous)']),
-        create_dungeon_region(player, 'Misery Mire (Vitreous)', 'Misery Mire', ['Misery Mire - Boss', 'Misery Mire - Prize']),
-        create_dungeon_region(player, 'Turtle Rock (Entrance)', 'Turtle Rock', None, ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
-        create_dungeon_region(player, 'Turtle Rock (First Section)', 'Turtle Rock', ['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
-                                                                             'Turtle Rock - Roller Room - Right'], ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
-        create_dungeon_region(player, 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock', ['Turtle Rock - Chain Chomps'], ['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
-        create_dungeon_region(player, 'Turtle Rock (Second Section)', 'Turtle Rock', ['Turtle Rock - Big Key Chest'], ['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase', 'Turtle Rock Big Key Door']),
-        create_dungeon_region(player, 'Turtle Rock (Big Chest)', 'Turtle Rock', ['Turtle Rock - Big Chest'], ['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
-        create_dungeon_region(player, 'Turtle Rock (Crystaroller Room)', 'Turtle Rock', ['Turtle Rock - Crystaroller Room'], ['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
-        create_dungeon_region(player, 'Turtle Rock (Dark Room)', 'Turtle Rock', None, ['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']),
-        create_dungeon_region(player, 'Turtle Rock (Eye Bridge)', 'Turtle Rock', ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
-                                                                          'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
-                              ['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)', 'Turtle Rock Isolated Ledge Exit']),
-        create_dungeon_region(player, 'Turtle Rock (Trinexx)', 'Turtle Rock', ['Turtle Rock - Boss', 'Turtle Rock - Prize']),
-        create_dungeon_region(player, 'Palace of Darkness (Entrance)', 'Palace of Darkness', ['Palace of Darkness - Shooter Room'], ['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall', 'Palace of Darkness Exit']),
-        create_dungeon_region(player, 'Palace of Darkness (Center)', 'Palace of Darkness', ['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
-                              ['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)', 'Palace of Darkness Big Key Door']),
-        create_dungeon_region(player, 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness', ['Palace of Darkness - Big Key Chest']),
-        create_dungeon_region(player, 'Palace of Darkness (Bonk Section)', 'Palace of Darkness', ['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'], ['Palace of Darkness Hammer Peg Drop']),
-        create_dungeon_region(player, 'Palace of Darkness (North)', 'Palace of Darkness', ['Palace of Darkness - Compass Chest', 'Palace of Darkness - Dark Basement - Left', 'Palace of Darkness - Dark Basement - Right'],
+        create_dungeon_region(world, player, 'Swamp Palace (Entrance)', 'Swamp Palace', None,
+                              ['Swamp Palace Moat', 'Swamp Palace Exit']),
+        create_dungeon_region(world, player, 'Swamp Palace (First Room)', 'Swamp Palace', ['Swamp Palace - Entrance'],
+                              ['Swamp Palace Small Key Door']),
+        create_dungeon_region(world, player, 'Swamp Palace (Starting Area)', 'Swamp Palace',
+                              ['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']),
+        create_dungeon_region(world, player, 'Swamp Palace (Center)', 'Swamp Palace',
+                              ['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
+                               'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
+        create_dungeon_region(world, player, 'Swamp Palace (North)', 'Swamp Palace',
+                              ['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
+                               'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']),
+        create_dungeon_region(world, player, 'Thieves Town (Entrance)', 'Thieves\' Town',
+                              ['Thieves\' Town - Big Key Chest',
+                               'Thieves\' Town - Map Chest',
+                               'Thieves\' Town - Compass Chest',
+                               'Thieves\' Town - Ambush Chest'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
+        create_dungeon_region(world, player, 'Thieves Town (Deep)', 'Thieves\' Town', ['Thieves\' Town - Attic',
+                                                                                       'Thieves\' Town - Big Chest',
+                                                                                       'Thieves\' Town - Blind\'s Cell'],
+                              ['Blind Fight']),
+        create_dungeon_region(world, player, 'Blind Fight', 'Thieves\' Town',
+                              ['Thieves\' Town - Boss', 'Thieves\' Town - Prize']),
+        create_dungeon_region(world, player, 'Skull Woods First Section', 'Skull Woods', ['Skull Woods - Map Chest'],
+                              ['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump',
+                               'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
+        create_dungeon_region(world, player, 'Skull Woods First Section (Right)', 'Skull Woods',
+                              ['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
+        create_dungeon_region(world, player, 'Skull Woods First Section (Left)', 'Skull Woods',
+                              ['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'],
+                              ['Skull Woods First Section (Left) Door to Exit',
+                               'Skull Woods First Section (Left) Door to Right']),
+        create_dungeon_region(world, player, 'Skull Woods First Section (Top)', 'Skull Woods',
+                              ['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
+        create_dungeon_region(world, player, 'Skull Woods Second Section (Drop)', 'Skull Woods', None,
+                              ['Skull Woods Second Section (Drop)']),
+        create_dungeon_region(world, player, 'Skull Woods Second Section', 'Skull Woods',
+                              ['Skull Woods - Big Key Chest'],
+                              ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
+        create_dungeon_region(world, player, 'Skull Woods Final Section (Entrance)', 'Skull Woods',
+                              ['Skull Woods - Bridge Room'],
+                              ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
+        create_dungeon_region(world, player, 'Skull Woods Final Section (Mothula)', 'Skull Woods',
+                              ['Skull Woods - Boss', 'Skull Woods - Prize']),
+        create_dungeon_region(world, player, 'Ice Palace (Entrance)', 'Ice Palace', None,
+                              ['Ice Palace Entrance Room', 'Ice Palace Exit']),
+        create_dungeon_region(world, player, 'Ice Palace (Main)', 'Ice Palace',
+                              ['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
+                               'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'],
+                              ['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
+        create_dungeon_region(world, player, 'Ice Palace (East)', 'Ice Palace', ['Ice Palace - Spike Room'],
+                              ['Ice Palace (East Top)']),
+        create_dungeon_region(world, player, 'Ice Palace (East Top)', 'Ice Palace',
+                              ['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
+        create_dungeon_region(world, player, 'Ice Palace (Kholdstare)', 'Ice Palace',
+                              ['Ice Palace - Boss', 'Ice Palace - Prize']),
+        create_dungeon_region(world, player, 'Misery Mire (Entrance)', 'Misery Mire', None,
+                              ['Misery Mire Entrance Gap', 'Misery Mire Exit']),
+        create_dungeon_region(world, player, 'Misery Mire (Main)', 'Misery Mire',
+                              ['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
+                               'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'],
+                              ['Misery Mire (West)', 'Misery Mire Big Key Door']),
+        create_dungeon_region(world, player, 'Misery Mire (West)', 'Misery Mire',
+                              ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
+        create_dungeon_region(world, player, 'Misery Mire (Final Area)', 'Misery Mire', None,
+                              ['Misery Mire (Vitreous)']),
+        create_dungeon_region(world, player, 'Misery Mire (Vitreous)', 'Misery Mire',
+                              ['Misery Mire - Boss', 'Misery Mire - Prize']),
+        create_dungeon_region(world, player, 'Turtle Rock (Entrance)', 'Turtle Rock', None,
+                              ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
+        create_dungeon_region(world, player, 'Turtle Rock (First Section)', 'Turtle Rock',
+                              ['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
+                               'Turtle Rock - Roller Room - Right'],
+                              ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
+        create_dungeon_region(world, player, 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock',
+                              ['Turtle Rock - Chain Chomps'],
+                              ['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
+        create_dungeon_region(world, player, 'Turtle Rock (Second Section)', 'Turtle Rock',
+                              ['Turtle Rock - Big Key Chest'],
+                              ['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase',
+                               'Turtle Rock Big Key Door']),
+        create_dungeon_region(world, player, 'Turtle Rock (Big Chest)', 'Turtle Rock', ['Turtle Rock - Big Chest'],
+                              ['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
+        create_dungeon_region(world, player, 'Turtle Rock (Crystaroller Room)', 'Turtle Rock',
+                              ['Turtle Rock - Crystaroller Room'],
+                              ['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
+        create_dungeon_region(world, player, 'Turtle Rock (Dark Room)', 'Turtle Rock', None,
+                              ['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']),
+        create_dungeon_region(world, player, 'Turtle Rock (Eye Bridge)', 'Turtle Rock',
+                              ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
+                               'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
+                              ['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)',
+                               'Turtle Rock Isolated Ledge Exit']),
+        create_dungeon_region(world, player, 'Turtle Rock (Trinexx)', 'Turtle Rock',
+                              ['Turtle Rock - Boss', 'Turtle Rock - Prize']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Entrance)', 'Palace of Darkness',
+                              ['Palace of Darkness - Shooter Room'],
+                              ['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall',
+                               'Palace of Darkness Exit']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Center)', 'Palace of Darkness',
+                              ['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
+                              ['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)',
+                               'Palace of Darkness Big Key Door']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness',
+                              ['Palace of Darkness - Big Key Chest']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Bonk Section)', 'Palace of Darkness',
+                              ['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'],
+                              ['Palace of Darkness Hammer Peg Drop']),
+        create_dungeon_region(world, player, 'Palace of Darkness (North)', 'Palace of Darkness',
+                              ['Palace of Darkness - Compass Chest', 'Palace of Darkness - Dark Basement - Left',
+                               'Palace of Darkness - Dark Basement - Right'],
                               ['Palace of Darkness Spike Statue Room Door', 'Palace of Darkness Maze Door']),
-        create_dungeon_region(player, 'Palace of Darkness (Maze)', 'Palace of Darkness', ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom', 'Palace of Darkness - Big Chest']),
-        create_dungeon_region(player, 'Palace of Darkness (Harmless Hellway)', 'Palace of Darkness', ['Palace of Darkness - Harmless Hellway']),
-        create_dungeon_region(player, 'Palace of Darkness (Final Section)', 'Palace of Darkness', ['Palace of Darkness - Boss', 'Palace of Darkness - Prize']),
-        create_dungeon_region(player, 'Inverted Ganons Tower (Entrance)', 'Ganon\'s Tower', ['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left', 'Ganons Tower - Hope Room - Right'],
-                              ['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door', 'Inverted Ganons Tower Exit']),
-        create_dungeon_region(player, 'Ganons Tower (Tile Room)', 'Ganon\'s Tower', ['Ganons Tower - Tile Room'], ['Ganons Tower (Tile Room) Key Door']),
-        create_dungeon_region(player, 'Ganons Tower (Compass Room)', 'Ganon\'s Tower', ['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right',
-                                                                                'Ganons Tower - Compass Room - Bottom Left', 'Ganons Tower - Compass Room - Bottom Right'],
-                              ['Ganons Tower (Bottom) (East)']),
-        create_dungeon_region(player, 'Ganons Tower (Hookshot Room)', 'Ganon\'s Tower', ['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right',
-                                                                                 'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'],
+        create_dungeon_region(world, player, 'Palace of Darkness (Maze)', 'Palace of Darkness',
+                              ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom',
+                               'Palace of Darkness - Big Chest']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Harmless Hellway)', 'Palace of Darkness',
+                              ['Palace of Darkness - Harmless Hellway']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Final Section)', 'Palace of Darkness',
+                              ['Palace of Darkness - Boss', 'Palace of Darkness - Prize']),
+        create_dungeon_region(world, player, 'Inverted Ganons Tower (Entrance)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left',
+                               'Ganons Tower - Hope Room - Right'],
+                              ['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door',
+                               'Inverted Ganons Tower Exit']),
+        create_dungeon_region(world, player, 'Ganons Tower (Tile Room)', 'Ganon\'s Tower', ['Ganons Tower - Tile Room'],
+                              ['Ganons Tower (Tile Room) Key Door']),
+        create_dungeon_region(world, player, 'Ganons Tower (Compass Room)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right',
+                               'Ganons Tower - Compass Room - Bottom Left',
+                               'Ganons Tower - Compass Room - Bottom Right'], ['Ganons Tower (Bottom) (East)']),
+        create_dungeon_region(world, player, 'Ganons Tower (Hookshot Room)', 'Ganon\'s Tower',
+                              ['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right',
+                               'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'],
                               ['Ganons Tower (Map Room)', 'Ganons Tower (Double Switch Room)']),
-        create_dungeon_region(player, 'Ganons Tower (Map Room)', 'Ganon\'s Tower', ['Ganons Tower - Map Chest']),
-        create_dungeon_region(player, 'Ganons Tower (Firesnake Room)', 'Ganon\'s Tower', ['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
-        create_dungeon_region(player, 'Ganons Tower (Teleport Room)', 'Ganon\'s Tower', ['Ganons Tower - Randomizer Room - Top Left', 'Ganons Tower - Randomizer Room - Top Right',
-                                                                                 'Ganons Tower - Randomizer Room - Bottom Left', 'Ganons Tower - Randomizer Room - Bottom Right'],
-                              ['Ganons Tower (Bottom) (West)']),
-        create_dungeon_region(player, 'Ganons Tower (Bottom)', 'Ganon\'s Tower', ['Ganons Tower - Bob\'s Chest', 'Ganons Tower - Big Chest', 'Ganons Tower - Big Key Room - Left',
-                                                                          'Ganons Tower - Big Key Room - Right', 'Ganons Tower - Big Key Chest']),
-        create_dungeon_region(player, 'Ganons Tower (Top)', 'Ganon\'s Tower', None, ['Ganons Tower Torch Rooms']),
-        create_dungeon_region(player, 'Ganons Tower (Before Moldorm)', 'Ganon\'s Tower', ['Ganons Tower - Mini Helmasaur Room - Left', 'Ganons Tower - Mini Helmasaur Room - Right',
-                                                                                  'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']),
-        create_dungeon_region(player, 'Ganons Tower (Moldorm)', 'Ganon\'s Tower', None, ['Ganons Tower Moldorm Gap']),
-        create_dungeon_region(player, 'Agahnim 2', 'Ganon\'s Tower', ['Ganons Tower - Validation Chest', 'Agahnim 2'], None),
-        create_cave_region(player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']),
-        create_cave_region(player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']),
-        create_dw_region(player, 'Pyramid Ledge', None, ['Pyramid Drop']),  # houlihan room exits here in inverted
+        create_dungeon_region(world, player, 'Ganons Tower (Map Room)', 'Ganon\'s Tower', ['Ganons Tower - Map Chest']),
+        create_dungeon_region(world, player, 'Ganons Tower (Firesnake Room)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
+        create_dungeon_region(world, player, 'Ganons Tower (Teleport Room)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Randomizer Room - Top Left',
+                               'Ganons Tower - Randomizer Room - Top Right',
+                               'Ganons Tower - Randomizer Room - Bottom Left',
+                               'Ganons Tower - Randomizer Room - Bottom Right'], ['Ganons Tower (Bottom) (West)']),
+        create_dungeon_region(world, player, 'Ganons Tower (Bottom)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Bob\'s Chest', 'Ganons Tower - Big Chest',
+                               'Ganons Tower - Big Key Room - Left',
+                               'Ganons Tower - Big Key Room - Right', 'Ganons Tower - Big Key Chest']),
+        create_dungeon_region(world, player, 'Ganons Tower (Top)', 'Ganon\'s Tower', None,
+                              ['Ganons Tower Torch Rooms']),
+        create_dungeon_region(world, player, 'Ganons Tower (Before Moldorm)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Mini Helmasaur Room - Left',
+                               'Ganons Tower - Mini Helmasaur Room - Right',
+                               'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']),
+        create_dungeon_region(world, player, 'Ganons Tower (Moldorm)', 'Ganon\'s Tower', None,
+                              ['Ganons Tower Moldorm Gap']),
+        create_dungeon_region(world, player, 'Agahnim 2', 'Ganon\'s Tower',
+                              ['Ganons Tower - Validation Chest', 'Agahnim 2'], None),
+        create_cave_region(world, player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']),
+        create_cave_region(world, player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']),
+        create_dw_region(world, player, 'Pyramid Ledge', None, ['Pyramid Drop']),  # houlihan room exits here in inverted
         
         # to simplify flute connections
-        create_cave_region(player, 'The Sky', 'A Dark Sky', None, ['DDM Landing','NEDW Landing', 'WDW Landing', 'SDW Landing', 'EDW Landing', 'DD Landing', 'DLHL Landing']),
+        create_cave_region(world, player, 'The Sky', 'A Dark Sky', None,
+                           ['DDM Landing', 'NEDW Landing', 'WDW Landing', 'SDW Landing', 'EDW Landing', 'DD Landing',
+                            'DLHL Landing']),
 
-        create_lw_region(player, 'Desert Northern Cliffs'),
-        create_lw_region(player, 'Death Mountain Bunny Descent Area')
+        create_lw_region(world, player, 'Desert Northern Cliffs'),
+        create_lw_region(world, player, 'Death Mountain Bunny Descent Area')
     ]
 
     world.initialize_regions()
@@ -316,26 +534,26 @@ def create_inverted_regions(world, player):
 def mark_dark_world_regions(world, player):
     # cross world caves may have some sections marked as both in_light_world, and in_dark_work.
     # That is ok. the bunny logic will check for this case and incorporate special rules.
-    queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.DarkWorld)
+    queue = collections.deque(region for region in world.get_regions(player) if region.type == LTTPRegionType.DarkWorld)
     seen = set(queue)
     while queue:
         current = queue.popleft()
         current.is_dark_world = True
         for exit in current.exits:
-            if exit.connected_region.type == RegionType.LightWorld:
+            if exit.connected_region.type == LTTPRegionType.LightWorld:
                 # Don't venture into the dark world
                 continue
             if exit.connected_region not in seen:
                 seen.add(exit.connected_region)
                 queue.append(exit.connected_region)
 
-    queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.LightWorld)
+    queue = collections.deque(region for region in world.get_regions(player) if region.type == LTTPRegionType.LightWorld)
     seen = set(queue)
     while queue:
         current = queue.popleft()
         current.is_light_world = True
         for exit in current.exits:
-            if exit.connected_region.type == RegionType.DarkWorld:
+            if exit.connected_region.type == LTTPRegionType.DarkWorld:
                 # Don't venture into the light world
                 continue
             if exit.connected_region not in seen:
diff --git a/worlds/alttp/ItemPool.py b/worlds/alttp/ItemPool.py
index bc1ae6fb..f7326092 100644
--- a/worlds/alttp/ItemPool.py
+++ b/worlds/alttp/ItemPool.py
@@ -1,8 +1,8 @@
 from collections import namedtuple
 import logging
 
-from BaseClasses import Region, RegionType, ItemClassification
-from worlds.alttp.SubClasses import ALttPLocation
+from BaseClasses import ItemClassification
+from worlds.alttp.SubClasses import ALttPLocation, LTTPRegion, LTTPRegionType
 from worlds.alttp.Shops import TakeAny, total_shop_slots, set_up_shops, shuffle_shops, create_dynamic_shop_locations
 from worlds.alttp.Bosses import place_bosses
 from worlds.alttp.Dungeons import get_dungeon_item_pool_player
@@ -471,7 +471,7 @@ def set_up_take_anys(world, player):
 
     regions = world.random.sample(take_any_locs, 5)
 
-    old_man_take_any = Region("Old Man Sword Cave", RegionType.Cave, 'the sword cave', player)
+    old_man_take_any = LTTPRegion("Old Man Sword Cave", LTTPRegionType.Cave, 'the sword cave', player, world)
     world.regions.append(old_man_take_any)
 
     reg = regions.pop()
@@ -491,7 +491,7 @@ def set_up_take_anys(world, player):
         old_man_take_any.shop.add_inventory(0, 'Rupees (300)', 0, 0, create_location=True)
 
     for num in range(4):
-        take_any = Region("Take-Any #{}".format(num+1), RegionType.Cave, 'a cave of choice', player)
+        take_any = LTTPRegion("Take-Any #{}".format(num+1), LTTPRegionType.Cave, 'a cave of choice', player, world)
         world.regions.append(take_any)
 
         target, room_id = world.random.choice([(0x58, 0x0112), (0x60, 0x010F), (0x46, 0x011F)])
diff --git a/worlds/alttp/Regions.py b/worlds/alttp/Regions.py
index f680c3ed..3f3644c4 100644
--- a/worlds/alttp/Regions.py
+++ b/worlds/alttp/Regions.py
@@ -1,369 +1,566 @@
 import collections
 import typing
 
-from BaseClasses import Region, Entrance, RegionType
+from BaseClasses import Entrance, MultiWorld
+from .SubClasses import LTTPRegion, LTTPRegionType
 
 
 def is_main_entrance(entrance: Entrance) -> bool:
-    return entrance.parent_region.type in {RegionType.DarkWorld, RegionType.LightWorld, RegionType.Generic}
+    return entrance.parent_region.type in {LTTPRegionType.DarkWorld, LTTPRegionType.LightWorld} if entrance.parent_region.type else True
 
 
 def create_regions(world, player):
 
     world.regions += [
-        create_lw_region(player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q']),
-        create_lw_region(player, 'Light World', ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure',
-                                                 'Purple Chest', 'Flute Activation Spot'],
-                         ["Blinds Hideout", "Hyrule Castle Secret Entrance Drop", 'Zoras River', 'Kings Grave Outer Rocks', 'Dam',
-                          'Links House', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut', 'Kakariko Well Drop', 'Kakariko Well Cave',
-                          'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump',
-                          'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave', 'Lake Hylia Central Island Pier',
-                          'Bonk Rock Cave', 'Library', 'Potion Shop', 'Two Brothers House (East)', 'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow',
-                          'Sanctuary', 'Sanctuary Grave', 'Death Mountain Entrance Rock', 'Flute Spot 1', 'Dark Desert Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter', 'Kakariko Teleporter',
-                          'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
-                          'Bush Covered House', 'Light World Bomb Hut', 'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', 'Waterfall of Wishing', 'Hyrule Castle Main Gate',
-                          'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game', 'Top of Pyramid']),
-        create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop']),
-        create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Teleporter']),
-        create_cave_region(player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top",
-                                                                        "Blind\'s Hideout - Left",
-                                                                        "Blind\'s Hideout - Right",
-                                                                        "Blind\'s Hideout - Far Left",
-                                                                        "Blind\'s Hideout - Far Right"]),
-        create_cave_region(player, 'Hyrule Castle Secret Entrance', 'a drop\'s exit', ['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']),
-        create_lw_region(player, 'Zoras River', ['King Zora', 'Zora\'s Ledge']),
-        create_cave_region(player, 'Waterfall of Wishing', 'a cave with two chests', ['Waterfall Fairy - Left', 'Waterfall Fairy - Right']),
-        create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']),
-        create_cave_region(player, 'Kings Grave', 'a cave with a chest', ['King\'s Tomb']),
-        create_cave_region(player, 'North Fairy Cave', 'a drop\'s exit', None, ['North Fairy Cave Exit']),
-        create_cave_region(player, 'Dam', 'the dam', ['Floodgate', 'Floodgate Chest']),
-        create_cave_region(player, 'Links House', 'your house', ['Link\'s House'], ['Links House Exit']),
-        create_cave_region(player, 'Chris Houlihan Room', 'I AM ERROR', None, ['Chris Houlihan Room Exit']),
-        create_cave_region(player, 'Tavern', 'the tavern', ['Kakariko Tavern']),
-        create_cave_region(player, 'Elder House', 'a connector', None, ['Elder House Exit (East)', 'Elder House Exit (West)']),
-        create_cave_region(player, 'Snitch Lady (East)', 'a boring house'),
-        create_cave_region(player, 'Snitch Lady (West)', 'a boring house'),
-        create_cave_region(player, 'Bush Covered House', 'the grass man'),
-        create_cave_region(player, 'Tavern (Front)', 'the tavern'),
-        create_cave_region(player, 'Light World Bomb Hut', 'a restock room'),
-        create_cave_region(player, 'Kakariko Shop', 'a common shop'),
-        create_cave_region(player, 'Fortune Teller (Light)', 'a fortune teller'),
-        create_cave_region(player, 'Lake Hylia Fortune Teller', 'a fortune teller'),
-        create_cave_region(player, 'Lumberjack House', 'a boring house'),
-        create_cave_region(player, 'Bonk Fairy (Light)', 'a fairy fountain'),
-        create_cave_region(player, 'Bonk Fairy (Dark)', 'a fairy fountain'),
-        create_cave_region(player, 'Lake Hylia Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Swamp Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Desert Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Dark Lake Hylia Ledge Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Dark Desert Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Dark Death Mountain Healer Fairy', 'a fairy fountain'),
-        create_cave_region(player, 'Chicken House', 'a house with a chest', ['Chicken House']),
-        create_cave_region(player, 'Aginahs Cave', 'a cave with a chest', ['Aginah\'s Cave']),
-        create_cave_region(player, 'Sahasrahlas Hut', 'Sahasrahla', ['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right', 'Sahasrahla']),
-        create_cave_region(player, 'Kakariko Well (top)', 'a drop\'s exit', ['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle',
-                                                                     'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']),
-        create_cave_region(player, 'Kakariko Well (bottom)', 'a drop\'s exit', None, ['Kakariko Well Exit']),
-        create_cave_region(player, 'Blacksmiths Hut', 'the smith', ['Blacksmith', 'Missing Smith']),
-        create_lw_region(player, 'Bat Cave Drop Ledge', None, ['Bat Cave Drop']),
-        create_cave_region(player, 'Bat Cave (right)', 'a drop\'s exit', ['Magic Bat'], ['Bat Cave Door']),
-        create_cave_region(player, 'Bat Cave (left)', 'a drop\'s exit', None, ['Bat Cave Exit']),
-        create_cave_region(player, 'Sick Kids House', 'the sick kid', ['Sick Kid']),
-        create_lw_region(player, 'Hobo Bridge', ['Hobo']),
-        create_cave_region(player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'], ['Lost Woods Hideout (top to bottom)']),
-        create_cave_region(player, 'Lost Woods Hideout (bottom)', 'a drop\'s exit', None, ['Lost Woods Hideout Exit']),
-        create_cave_region(player, 'Lumberjack Tree (top)', 'a drop\'s exit', ['Lumberjack Tree'], ['Lumberjack Tree (top to bottom)']),
-        create_cave_region(player, 'Lumberjack Tree (bottom)', 'a drop\'s exit', None, ['Lumberjack Tree Exit']),
-        create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45']),
-        create_cave_region(player, 'Cave 45', 'a cave with an item', ['Cave 45']),
-        create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Cave']),
-        create_cave_region(player, 'Graveyard Cave', 'a cave with an item', ['Graveyard Cave']),
-        create_cave_region(player, 'Checkerboard Cave', 'a cave with an item', ['Checkerboard Cave']),
-        create_cave_region(player, 'Long Fairy Cave', 'a fairy fountain'),
-        create_cave_region(player, 'Mini Moldorm Cave', 'a bounty of five items', ['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
-                                                                           'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']),
-        create_cave_region(player, 'Ice Rod Cave', 'a cave with a chest', ['Ice Rod Cave']),
-        create_cave_region(player, 'Good Bee Cave', 'a cold bee'),
-        create_cave_region(player, '20 Rupee Cave', 'a cave with some cash'),
-        create_cave_region(player, 'Cave Shop (Lake Hylia)', 'a common shop'),
-        create_cave_region(player, 'Cave Shop (Dark Death Mountain)', 'a common shop'),
-        create_cave_region(player, 'Bonk Rock Cave', 'a cave with a chest', ['Bonk Rock Cave']),
-        create_cave_region(player, 'Library', 'the library', ['Library']),
-        create_cave_region(player, 'Kakariko Gamble Game', 'a game of chance'),
-        create_cave_region(player, 'Potion Shop', 'the potion shop', ['Potion Shop']),
-        create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island']),
-        create_cave_region(player, 'Capacity Upgrade', 'the queen of fairies'),
-        create_cave_region(player, 'Two Brothers House', 'a connector', None, ['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']),
-        create_lw_region(player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)']),
-        create_cave_region(player, '50 Rupee Cave', 'a cave with some cash'),
-        create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)']),
-        create_lw_region(player, 'Desert Ledge (Northeast)', None, ['Checkerboard Cave']),
-        create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)']),
-        create_lw_region(player, 'Desert Palace Lone Stairs', None, ['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
-        create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks']),
-        create_dungeon_region(player, 'Desert Palace Main (Outer)', 'Desert Palace', ['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'],
-                              ['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)', 'Desert Palace East Wing']),
-        create_dungeon_region(player, 'Desert Palace Main (Inner)', 'Desert Palace', None, ['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']),
-        create_dungeon_region(player, 'Desert Palace East', 'Desert Palace', ['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
-        create_dungeon_region(player, 'Desert Palace North', 'Desert Palace', ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
-        create_dungeon_region(player, 'Eastern Palace', 'Eastern Palace', ['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest', 'Eastern Palace - Cannonball Chest',
-                                                 'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Boss', 'Eastern Palace - Prize'], ['Eastern Palace Exit']),
-        create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal']),
-        create_cave_region(player, 'Lost Woods Gamble', 'a game of chance'),
-        create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Entrance (South)']),
-        create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Hyrule Castle Ledge Courtyard Drop']),
-        create_dungeon_region(player, 'Hyrule Castle', 'Hyrule Castle', ['Hyrule Castle - Boomerang Chest', 'Hyrule Castle - Map Chest', 'Hyrule Castle - Zelda\'s Chest'],
-                              ['Hyrule Castle Exit (East)', 'Hyrule Castle Exit (West)', 'Hyrule Castle Exit (South)', 'Throne Room']),
-        create_dungeon_region(player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']),  # This exists only to be referenced for access checks
-        create_dungeon_region(player, 'Sewers (Dark)', 'a drop\'s exit', ['Sewers - Dark Cross'], ['Sewers Door']),
-        create_dungeon_region(player, 'Sewers', 'a drop\'s exit', ['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle',
-                                         'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']),
-        create_dungeon_region(player, 'Sanctuary', 'a drop\'s exit', ['Sanctuary'], ['Sanctuary Exit']),
-        create_dungeon_region(player, 'Agahnims Tower', 'Castle Tower', ['Castle Tower - Room 03', 'Castle Tower - Dark Maze'], ['Agahnim 1', 'Agahnims Tower Exit']),
-        create_dungeon_region(player, 'Agahnim 1', 'Castle Tower', ['Agahnim 1'], None),
-        create_cave_region(player, 'Old Man Cave', 'a connector', ['Old Man'], ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
-        create_cave_region(player, 'Old Man House', 'a connector', None, ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']),
-        create_cave_region(player, 'Old Man House Back', 'a connector', None, ['Old Man House Exit (Top)', 'Old Man House Back to Front']),
-        create_lw_region(player, 'Death Mountain', None, ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)', 'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'Broken Bridge (West)', 'Death Mountain Teleporter']),
-        create_cave_region(player, 'Death Mountain Return Cave', 'a connector', None, ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']),
-        create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)']),
-        create_cave_region(player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'], ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
-        create_cave_region(player, 'Spectacle Rock Cave (Bottom)', 'a connector', None, ['Spectacle Rock Cave Exit']),
-        create_cave_region(player, 'Spectacle Rock Cave (Peak)', 'a connector', None, ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
-        create_lw_region(player, 'East Death Mountain (Bottom)', None, ['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'East Death Mountain Teleporter', 'Hookshot Fairy', 'Fairy Ascension Rocks', 'Spiral Cave (Bottom)']),
-        create_cave_region(player, 'Hookshot Fairy', 'fairies deep in a cave'),
-        create_cave_region(player, 'Paradox Cave Front', 'a connector', None, ['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)', 'Light World Death Mountain Shop']),
-        create_cave_region(player, 'Paradox Cave Chest Area', 'a connector', ['Paradox Cave Lower - Far Left',
-                                                                      'Paradox Cave Lower - Left',
-                                                                      'Paradox Cave Lower - Right',
-                                                                      'Paradox Cave Lower - Far Right',
-                                                                      'Paradox Cave Lower - Middle',
-                                                                      'Paradox Cave Upper - Left',
-                                                                      'Paradox Cave Upper - Right'],
+        create_lw_region(world, player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q']),
+        create_lw_region(world, player, 'Light World', ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure',
+                                                        'Purple Chest', 'Flute Activation Spot'],
+                         ["Blinds Hideout", "Hyrule Castle Secret Entrance Drop", 'Zoras River',
+                          'Kings Grave Outer Rocks', 'Dam',
+                          'Links House', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut',
+                          'Kakariko Well Drop', 'Kakariko Well Cave',
+                          'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge',
+                          'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump',
+                          'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave',
+                          'Lake Hylia Central Island Pier',
+                          'Bonk Rock Cave', 'Library', 'Potion Shop', 'Two Brothers House (East)',
+                          'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow',
+                          'Sanctuary', 'Sanctuary Grave', 'Death Mountain Entrance Rock', 'Flute Spot 1',
+                          'Dark Desert Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter',
+                          'Kakariko Teleporter',
+                          'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop',
+                          'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
+                          'Bush Covered House', 'Light World Bomb Hut', 'Kakariko Shop', 'Long Fairy Cave',
+                          'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', 'Waterfall of Wishing',
+                          'Hyrule Castle Main Gate',
+                          'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy',
+                          'Light Hype Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller',
+                          'Kakariko Gamble Game', 'Top of Pyramid']),
+        create_lw_region(world, player, 'Death Mountain Entrance', None,
+                         ['Old Man Cave (West)', 'Death Mountain Entrance Drop']),
+        create_lw_region(world, player, 'Lake Hylia Central Island', None,
+                         ['Capacity Upgrade', 'Lake Hylia Central Island Teleporter']),
+        create_cave_region(world, player, 'Blinds Hideout', 'a bounty of five items', ["Blind\'s Hideout - Top",
+                                                                                       "Blind\'s Hideout - Left",
+                                                                                       "Blind\'s Hideout - Right",
+                                                                                       "Blind\'s Hideout - Far Left",
+                                                                                       "Blind\'s Hideout - Far Right"]),
+        create_cave_region(world, player, 'Hyrule Castle Secret Entrance', 'a drop\'s exit',
+                           ['Link\'s Uncle', 'Secret Passage'], ['Hyrule Castle Secret Entrance Exit']),
+        create_lw_region(world, player, 'Zoras River', ['King Zora', 'Zora\'s Ledge']),
+        create_cave_region(world, player, 'Waterfall of Wishing', 'a cave with two chests',
+                           ['Waterfall Fairy - Left', 'Waterfall Fairy - Right']),
+        create_lw_region(world, player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']),
+        create_cave_region(world, player, 'Kings Grave', 'a cave with a chest', ['King\'s Tomb']),
+        create_cave_region(world, player, 'North Fairy Cave', 'a drop\'s exit', None, ['North Fairy Cave Exit']),
+        create_cave_region(world, player, 'Dam', 'the dam', ['Floodgate', 'Floodgate Chest']),
+        create_cave_region(world, player, 'Links House', 'your house', ['Link\'s House'], ['Links House Exit']),
+        create_cave_region(world, player, 'Chris Houlihan Room', 'I AM ERROR', None, ['Chris Houlihan Room Exit']),
+        create_cave_region(world, player, 'Tavern', 'the tavern', ['Kakariko Tavern']),
+        create_cave_region(world, player, 'Elder House', 'a connector', None,
+                           ['Elder House Exit (East)', 'Elder House Exit (West)']),
+        create_cave_region(world, player, 'Snitch Lady (East)', 'a boring house'),
+        create_cave_region(world, player, 'Snitch Lady (West)', 'a boring house'),
+        create_cave_region(world, player, 'Bush Covered House', 'the grass man'),
+        create_cave_region(world, player, 'Tavern (Front)', 'the tavern'),
+        create_cave_region(world, player, 'Light World Bomb Hut', 'a restock room'),
+        create_cave_region(world, player, 'Kakariko Shop', 'a common shop'),
+        create_cave_region(world, player, 'Fortune Teller (Light)', 'a fortune teller'),
+        create_cave_region(world, player, 'Lake Hylia Fortune Teller', 'a fortune teller'),
+        create_cave_region(world, player, 'Lumberjack House', 'a boring house'),
+        create_cave_region(world, player, 'Bonk Fairy (Light)', 'a fairy fountain'),
+        create_cave_region(world, player, 'Bonk Fairy (Dark)', 'a fairy fountain'),
+        create_cave_region(world, player, 'Lake Hylia Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Swamp Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Desert Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Dark Lake Hylia Ledge Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Dark Desert Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Dark Death Mountain Healer Fairy', 'a fairy fountain'),
+        create_cave_region(world, player, 'Chicken House', 'a house with a chest', ['Chicken House']),
+        create_cave_region(world, player, 'Aginahs Cave', 'a cave with a chest', ['Aginah\'s Cave']),
+        create_cave_region(world, player, 'Sahasrahlas Hut', 'Sahasrahla',
+                           ['Sahasrahla\'s Hut - Left', 'Sahasrahla\'s Hut - Middle', 'Sahasrahla\'s Hut - Right',
+                            'Sahasrahla']),
+        create_cave_region(world, player, 'Kakariko Well (top)', 'a drop\'s exit',
+                           ['Kakariko Well - Top', 'Kakariko Well - Left', 'Kakariko Well - Middle',
+                            'Kakariko Well - Right', 'Kakariko Well - Bottom'], ['Kakariko Well (top to bottom)']),
+        create_cave_region(world, player, 'Kakariko Well (bottom)', 'a drop\'s exit', None, ['Kakariko Well Exit']),
+        create_cave_region(world, player, 'Blacksmiths Hut', 'the smith', ['Blacksmith', 'Missing Smith']),
+        create_lw_region(world, player, 'Bat Cave Drop Ledge', None, ['Bat Cave Drop']),
+        create_cave_region(world, player, 'Bat Cave (right)', 'a drop\'s exit', ['Magic Bat'], ['Bat Cave Door']),
+        create_cave_region(world, player, 'Bat Cave (left)', 'a drop\'s exit', None, ['Bat Cave Exit']),
+        create_cave_region(world, player, 'Sick Kids House', 'the sick kid', ['Sick Kid']),
+        create_lw_region(world, player, 'Hobo Bridge', ['Hobo']),
+        create_cave_region(world, player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'],
+                           ['Lost Woods Hideout (top to bottom)']),
+        create_cave_region(world, player, 'Lost Woods Hideout (bottom)', 'a drop\'s exit', None,
+                           ['Lost Woods Hideout Exit']),
+        create_cave_region(world, player, 'Lumberjack Tree (top)', 'a drop\'s exit', ['Lumberjack Tree'],
+                           ['Lumberjack Tree (top to bottom)']),
+        create_cave_region(world, player, 'Lumberjack Tree (bottom)', 'a drop\'s exit', None, ['Lumberjack Tree Exit']),
+        create_lw_region(world, player, 'Cave 45 Ledge', None, ['Cave 45']),
+        create_cave_region(world, player, 'Cave 45', 'a cave with an item', ['Cave 45']),
+        create_lw_region(world, player, 'Graveyard Ledge', None, ['Graveyard Cave']),
+        create_cave_region(world, player, 'Graveyard Cave', 'a cave with an item', ['Graveyard Cave']),
+        create_cave_region(world, player, 'Checkerboard Cave', 'a cave with an item', ['Checkerboard Cave']),
+        create_cave_region(world, player, 'Long Fairy Cave', 'a fairy fountain'),
+        create_cave_region(world, player, 'Mini Moldorm Cave', 'a bounty of five items',
+                           ['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
+                            'Mini Moldorm Cave - Far Right', 'Mini Moldorm Cave - Generous Guy']),
+        create_cave_region(world, player, 'Ice Rod Cave', 'a cave with a chest', ['Ice Rod Cave']),
+        create_cave_region(world, player, 'Good Bee Cave', 'a cold bee'),
+        create_cave_region(world, player, '20 Rupee Cave', 'a cave with some cash'),
+        create_cave_region(world, player, 'Cave Shop (Lake Hylia)', 'a common shop'),
+        create_cave_region(world, player, 'Cave Shop (Dark Death Mountain)', 'a common shop'),
+        create_cave_region(world, player, 'Bonk Rock Cave', 'a cave with a chest', ['Bonk Rock Cave']),
+        create_cave_region(world, player, 'Library', 'the library', ['Library']),
+        create_cave_region(world, player, 'Kakariko Gamble Game', 'a game of chance'),
+        create_cave_region(world, player, 'Potion Shop', 'the potion shop', ['Potion Shop']),
+        create_lw_region(world, player, 'Lake Hylia Island', ['Lake Hylia Island']),
+        create_cave_region(world, player, 'Capacity Upgrade', 'the queen of fairies'),
+        create_cave_region(world, player, 'Two Brothers House', 'a connector', None,
+                           ['Two Brothers House Exit (East)', 'Two Brothers House Exit (West)']),
+        create_lw_region(world, player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)']),
+        create_cave_region(world, player, '50 Rupee Cave', 'a cave with some cash'),
+        create_lw_region(world, player, 'Desert Ledge', ['Desert Ledge'],
+                         ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)']),
+        create_lw_region(world, player, 'Desert Ledge (Northeast)', None, ['Checkerboard Cave']),
+        create_lw_region(world, player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)']),
+        create_lw_region(world, player, 'Desert Palace Lone Stairs', None,
+                         ['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
+        create_lw_region(world, player, 'Desert Palace Entrance (North) Spot', None,
+                         ['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks']),
+        create_dungeon_region(world, player, 'Desert Palace Main (Outer)', 'Desert Palace',
+                              ['Desert Palace - Big Chest', 'Desert Palace - Torch', 'Desert Palace - Map Chest'],
+                              ['Desert Palace Pots (Outer)', 'Desert Palace Exit (West)', 'Desert Palace Exit (East)',
+                               'Desert Palace East Wing']),
+        create_dungeon_region(world, player, 'Desert Palace Main (Inner)', 'Desert Palace', None,
+                              ['Desert Palace Exit (South)', 'Desert Palace Pots (Inner)']),
+        create_dungeon_region(world, player, 'Desert Palace East', 'Desert Palace',
+                              ['Desert Palace - Compass Chest', 'Desert Palace - Big Key Chest']),
+        create_dungeon_region(world, player, 'Desert Palace North', 'Desert Palace',
+                              ['Desert Palace - Boss', 'Desert Palace - Prize'], ['Desert Palace Exit (North)']),
+        create_dungeon_region(world, player, 'Eastern Palace', 'Eastern Palace',
+                              ['Eastern Palace - Compass Chest', 'Eastern Palace - Big Chest',
+                               'Eastern Palace - Cannonball Chest',
+                               'Eastern Palace - Big Key Chest', 'Eastern Palace - Map Chest', 'Eastern Palace - Boss',
+                               'Eastern Palace - Prize'], ['Eastern Palace Exit']),
+        create_lw_region(world, player, 'Master Sword Meadow', ['Master Sword Pedestal']),
+        create_cave_region(world, player, 'Lost Woods Gamble', 'a game of chance'),
+        create_lw_region(world, player, 'Hyrule Castle Courtyard', None,
+                         ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Entrance (South)']),
+        create_lw_region(world, player, 'Hyrule Castle Ledge', None,
+                         ['Hyrule Castle Entrance (East)', 'Hyrule Castle Entrance (West)', 'Agahnims Tower',
+                          'Hyrule Castle Ledge Courtyard Drop']),
+        create_dungeon_region(world, player, 'Hyrule Castle', 'Hyrule Castle',
+                              ['Hyrule Castle - Boomerang Chest', 'Hyrule Castle - Map Chest',
+                               'Hyrule Castle - Zelda\'s Chest'],
+                              ['Hyrule Castle Exit (East)', 'Hyrule Castle Exit (West)', 'Hyrule Castle Exit (South)',
+                               'Throne Room']),
+        create_dungeon_region(world, player, 'Sewer Drop', 'a drop\'s exit', None, ['Sewer Drop']),  # This exists only to be referenced for access checks
+        create_dungeon_region(world, player, 'Sewers (Dark)', 'a drop\'s exit', ['Sewers - Dark Cross'],
+                              ['Sewers Door']),
+        create_dungeon_region(world, player, 'Sewers', 'a drop\'s exit',
+                              ['Sewers - Secret Room - Left', 'Sewers - Secret Room - Middle',
+                               'Sewers - Secret Room - Right'], ['Sanctuary Push Door', 'Sewers Back Door']),
+        create_dungeon_region(world, player, 'Sanctuary', 'a drop\'s exit', ['Sanctuary'], ['Sanctuary Exit']),
+        create_dungeon_region(world, player, 'Agahnims Tower', 'Castle Tower',
+                              ['Castle Tower - Room 03', 'Castle Tower - Dark Maze'],
+                              ['Agahnim 1', 'Agahnims Tower Exit']),
+        create_dungeon_region(world, player, 'Agahnim 1', 'Castle Tower', ['Agahnim 1'], None),
+        create_cave_region(world, player, 'Old Man Cave', 'a connector', ['Old Man'],
+                           ['Old Man Cave Exit (East)', 'Old Man Cave Exit (West)']),
+        create_cave_region(world, player, 'Old Man House', 'a connector', None,
+                           ['Old Man House Exit (Bottom)', 'Old Man House Front to Back']),
+        create_cave_region(world, player, 'Old Man House Back', 'a connector', None,
+                           ['Old Man House Exit (Top)', 'Old Man House Back to Front']),
+        create_lw_region(world, player, 'Death Mountain', None,
+                         ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)',
+                          'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak',
+                          'Spectacle Rock Cave (Bottom)', 'Broken Bridge (West)', 'Death Mountain Teleporter']),
+        create_cave_region(world, player, 'Death Mountain Return Cave', 'a connector', None,
+                           ['Death Mountain Return Cave Exit (West)', 'Death Mountain Return Cave Exit (East)']),
+        create_lw_region(world, player, 'Death Mountain Return Ledge', None,
+                         ['Death Mountain Return Ledge Drop', 'Death Mountain Return Cave (West)']),
+        create_cave_region(world, player, 'Spectacle Rock Cave (Top)', 'a connector', ['Spectacle Rock Cave'],
+                           ['Spectacle Rock Cave Drop', 'Spectacle Rock Cave Exit (Top)']),
+        create_cave_region(world, player, 'Spectacle Rock Cave (Bottom)', 'a connector', None,
+                           ['Spectacle Rock Cave Exit']),
+        create_cave_region(world, player, 'Spectacle Rock Cave (Peak)', 'a connector', None,
+                           ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
+        create_lw_region(world, player, 'East Death Mountain (Bottom)', None,
+                         ['Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)',
+                          'East Death Mountain Teleporter', 'Hookshot Fairy', 'Fairy Ascension Rocks',
+                          'Spiral Cave (Bottom)']),
+        create_cave_region(world, player, 'Hookshot Fairy', 'fairies deep in a cave'),
+        create_cave_region(world, player, 'Paradox Cave Front', 'a connector', None,
+                           ['Paradox Cave Push Block Reverse', 'Paradox Cave Exit (Bottom)',
+                            'Light World Death Mountain Shop']),
+        create_cave_region(world, player, 'Paradox Cave Chest Area', 'a connector', ['Paradox Cave Lower - Far Left',
+                                                                                     'Paradox Cave Lower - Left',
+                                                                                     'Paradox Cave Lower - Right',
+                                                                                     'Paradox Cave Lower - Far Right',
+                                                                                     'Paradox Cave Lower - Middle',
+                                                                                     'Paradox Cave Upper - Left',
+                                                                                     'Paradox Cave Upper - Right'],
                            ['Paradox Cave Push Block', 'Paradox Cave Bomb Jump']),
-        create_cave_region(player, 'Paradox Cave', 'a connector', None, ['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']),
-        create_cave_region(player, 'Light World Death Mountain Shop', 'a common shop'),
-        create_lw_region(player, 'East Death Mountain (Top)', None, ['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access', 'East Death Mountain Drop', 'Turtle Rock Teleporter', 'Fairy Ascension Ledge']),
-        create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop']),
-        create_cave_region(player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'], ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
-        create_cave_region(player, 'Spiral Cave (Bottom)', 'a connector', None, ['Spiral Cave Exit']),
-        create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']),
-        create_cave_region(player, 'Fairy Ascension Cave (Bottom)', 'a connector', None, ['Fairy Ascension Cave Climb', 'Fairy Ascension Cave Exit (Bottom)']),
-        create_cave_region(player, 'Fairy Ascension Cave (Drop)', 'a connector', None, ['Fairy Ascension Cave Pots']),
-        create_cave_region(player, 'Fairy Ascension Cave (Top)', 'a connector', None, ['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']),
-        create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)']),
-        create_lw_region(player, 'Death Mountain (Top)', ['Ether Tablet'], ['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop']),
-        create_lw_region(player, 'Spectacle Rock', ['Spectacle Rock'], ['Spectacle Rock Drop']),
-        create_dungeon_region(player, 'Tower of Hera (Bottom)', 'Tower of Hera', ['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'], ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
-        create_dungeon_region(player, 'Tower of Hera (Basement)', 'Tower of Hera', ['Tower of Hera - Big Key Chest']),
-        create_dungeon_region(player, 'Tower of Hera (Top)', 'Tower of Hera', ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss', 'Tower of Hera - Prize']),
+        create_cave_region(world, player, 'Paradox Cave', 'a connector', None,
+                           ['Paradox Cave Exit (Middle)', 'Paradox Cave Exit (Top)', 'Paradox Cave Drop']),
+        create_cave_region(world, player, 'Light World Death Mountain Shop', 'a common shop'),
+        create_lw_region(world, player, 'East Death Mountain (Top)', None,
+                         ['Paradox Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access',
+                          'East Death Mountain Drop', 'Turtle Rock Teleporter', 'Fairy Ascension Ledge']),
+        create_lw_region(world, player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop']),
+        create_cave_region(world, player, 'Spiral Cave (Top)', 'a connector', ['Spiral Cave'],
+                           ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
+        create_cave_region(world, player, 'Spiral Cave (Bottom)', 'a connector', None, ['Spiral Cave Exit']),
+        create_lw_region(world, player, 'Fairy Ascension Plateau', None,
+                         ['Fairy Ascension Drop', 'Fairy Ascension Cave (Bottom)']),
+        create_cave_region(world, player, 'Fairy Ascension Cave (Bottom)', 'a connector', None,
+                           ['Fairy Ascension Cave Climb', 'Fairy Ascension Cave Exit (Bottom)']),
+        create_cave_region(world, player, 'Fairy Ascension Cave (Drop)', 'a connector', None,
+                           ['Fairy Ascension Cave Pots']),
+        create_cave_region(world, player, 'Fairy Ascension Cave (Top)', 'a connector', None,
+                           ['Fairy Ascension Cave Exit (Top)', 'Fairy Ascension Cave Drop']),
+        create_lw_region(world, player, 'Fairy Ascension Ledge', None,
+                         ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)']),
+        create_lw_region(world, player, 'Death Mountain (Top)', ['Ether Tablet'],
+                         ['East Death Mountain (Top)', 'Tower of Hera', 'Death Mountain Drop']),
+        create_lw_region(world, player, 'Spectacle Rock', ['Spectacle Rock'], ['Spectacle Rock Drop']),
+        create_dungeon_region(world, player, 'Tower of Hera (Bottom)', 'Tower of Hera',
+                              ['Tower of Hera - Basement Cage', 'Tower of Hera - Map Chest'],
+                              ['Tower of Hera Small Key Door', 'Tower of Hera Big Key Door', 'Tower of Hera Exit']),
+        create_dungeon_region(world, player, 'Tower of Hera (Basement)', 'Tower of Hera',
+                              ['Tower of Hera - Big Key Chest']),
+        create_dungeon_region(world, player, 'Tower of Hera (Top)', 'Tower of Hera',
+                              ['Tower of Hera - Compass Chest', 'Tower of Hera - Big Chest', 'Tower of Hera - Boss',
+                               'Tower of Hera - Prize']),
 
-        create_dw_region(player, 'East Dark World', ['Pyramid'], ['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness', 'Dark Lake Hylia Drop (East)',
-                                                           'Hyrule Castle Ledge Mirror Spot', 'Dark Lake Hylia Fairy', 'Palace of Darkness Hint', 'East Dark World Hint', 'Pyramid Hole', 'Northeast Dark World Broken Bridge Pass',]),
-        create_dw_region(player, 'Catfish', ['Catfish'], ['Catfish Exit Rock']),
-        create_dw_region(player, 'Northeast Dark World', None, ['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass', 'Catfish Entrance Rock', 'Dark Lake Hylia Teleporter']),
-        create_cave_region(player, 'Palace of Darkness Hint', 'a storyteller'),
-        create_cave_region(player, 'East Dark World Hint', 'a storyteller'),
-        create_dw_region(player, 'South Dark World', ['Stumpy', 'Digging Game'], ['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock', 'Maze Race Mirror Spot',
-                                                                                  'Cave 45 Mirror Spot', 'East Dark World Bridge', 'Big Bomb Shop', 'Archery Game', 'Bonk Fairy (Dark)', 'Dark Lake Hylia Shop',
-                                                                                  'Bombos Tablet Mirror Spot']),
-        create_lw_region(player, 'Bombos Tablet Ledge', ['Bombos Tablet']),
-        create_cave_region(player, 'Big Bomb Shop', 'the bomb shop'),
-        create_cave_region(player, 'Archery Game', 'a game of skill'),
-        create_dw_region(player, 'Dark Lake Hylia', None, ['Lake Hylia Island Mirror Spot', 'East Dark World Pier', 'Dark Lake Hylia Ledge']),
-        create_dw_region(player, 'Dark Lake Hylia Central Island', None, ['Ice Palace', 'Lake Hylia Central Island Mirror Spot']),
-        create_dw_region(player, 'Dark Lake Hylia Ledge', None, ['Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave']),
-        create_cave_region(player, 'Dark Lake Hylia Ledge Hint', 'a storyteller'),
-        create_cave_region(player, 'Dark Lake Hylia Ledge Spike Cave', 'a spiky hint'),
-        create_cave_region(player, 'Hype Cave', 'a bounty of five items', ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
-                                                                   'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
-        create_dw_region(player, 'West Dark World', ['Frog'], ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Graveyard Ledge Mirror Spot', 'Kings Grave Mirror Spot', 'Bumper Cave Entrance Rock',
-                                                       'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks', 'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Dark World Lumberjack Shop']),
-        create_dw_region(player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Village of Outcasts Shop']),
-        create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Bat Cave Drop Ledge Mirror Spot', 'Dark World Hammer Peg Cave', 'Peg Area Rocks']),
-        create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Mirror Spot', 'Bumper Cave Entrance Drop']),
-        create_cave_region(player, 'Fortune Teller (Dark)', 'a fortune teller'),
-        create_cave_region(player, 'Village of Outcasts Shop', 'a common shop'),
-        create_cave_region(player, 'Dark Lake Hylia Shop', 'a common shop'),
-        create_cave_region(player, 'Dark World Lumberjack Shop', 'a common shop'),
-        create_cave_region(player, 'Dark World Potion Shop', 'a common shop'),
-        create_cave_region(player, 'Dark World Hammer Peg Cave', 'a cave with an item', ['Peg Cave']),
-        create_cave_region(player, 'Pyramid Fairy', 'a cave with two chests', ['Pyramid Fairy - Left', 'Pyramid Fairy - Right']),
-        create_cave_region(player, 'Brewery', 'a house with a chest', ['Brewery']),
-        create_cave_region(player, 'C-Shaped House', 'a house with a chest', ['C-Shaped House']),
-        create_cave_region(player, 'Chest Game', 'a game of 16 chests', ['Chest Game']),
-        create_cave_region(player, 'Red Shield Shop', 'the rare shop'),
-        create_cave_region(player, 'Dark Sanctuary Hint', 'a storyteller'),
-        create_cave_region(player, 'Bumper Cave', 'a connector', None, ['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']),
-        create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)', 'Bumper Cave Ledge Mirror Spot']),
-        create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)',
-                                                      'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']),
-        create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section']),
-        create_dw_region(player, 'Dark Desert',  None, ['Misery Mire', 'Mire Shed', 'Desert Ledge (Northeast) Mirror Spot', 'Desert Ledge Mirror Spot', 'Desert Palace Stairs Mirror Spot',
-                                                'Desert Palace Entrance (North) Mirror Spot', 'Dark Desert Hint', 'Dark Desert Fairy']),
-        create_cave_region(player, 'Mire Shed', 'a cave with two chests', ['Mire Shed - Left', 'Mire Shed - Right']),
-        create_cave_region(player, 'Dark Desert Hint', 'a storyteller'),
-        create_dw_region(player, 'Dark Death Mountain (West Bottom)', None, ['Spike Cave', 'Spectacle Rock Mirror Spot', 'Dark Death Mountain Fairy']),
-        create_dw_region(player, 'Dark Death Mountain (Top)', None, ['Dark Death Mountain Drop (East)', 'Dark Death Mountain Drop (West)', 'Ganons Tower', 'Superbunny Cave (Top)',
-                                                             'Hookshot Cave', 'East Death Mountain (Top) Mirror Spot', 'Turtle Rock']),
-        create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)', 'Mimic Cave Mirror Spot', 'Spiral Cave Mirror Spot']),
-        create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Isolated Ledge Mirror Spot', 'Turtle Rock Isolated Ledge Entrance']),
-        create_dw_region(player, 'Dark Death Mountain (East Bottom)', None, ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Fairy Ascension Mirror Spot']),
-        create_cave_region(player, 'Superbunny Cave (Top)', 'a connector', ['Superbunny Cave - Top', 'Superbunny Cave - Bottom'], ['Superbunny Cave Exit (Top)']),
-        create_cave_region(player, 'Superbunny Cave (Bottom)', 'a connector', None, ['Superbunny Cave Climb', 'Superbunny Cave Exit (Bottom)']),
-        create_cave_region(player, 'Spike Cave', 'Spike Cave', ['Spike Cave']),
-        create_cave_region(player, 'Hookshot Cave', 'a connector', ['Hookshot Cave - Top Right', 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right', 'Hookshot Cave - Bottom Left'],
+        create_dw_region(world, player, 'East Dark World', ['Pyramid'],
+                         ['Pyramid Fairy', 'South Dark World Bridge', 'Palace of Darkness',
+                          'Dark Lake Hylia Drop (East)',
+                          'Hyrule Castle Ledge Mirror Spot', 'Dark Lake Hylia Fairy', 'Palace of Darkness Hint',
+                          'East Dark World Hint', 'Pyramid Hole', 'Northeast Dark World Broken Bridge Pass', ]),
+        create_dw_region(world, player, 'Catfish', ['Catfish'], ['Catfish Exit Rock']),
+        create_dw_region(world, player, 'Northeast Dark World', None,
+                         ['West Dark World Gap', 'Dark World Potion Shop', 'East Dark World Broken Bridge Pass',
+                          'Catfish Entrance Rock', 'Dark Lake Hylia Teleporter']),
+        create_cave_region(world, player, 'Palace of Darkness Hint', 'a storyteller'),
+        create_cave_region(world, player, 'East Dark World Hint', 'a storyteller'),
+        create_dw_region(world, player, 'South Dark World', ['Stumpy', 'Digging Game'],
+                         ['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock',
+                          'Maze Race Mirror Spot',
+                          'Cave 45 Mirror Spot', 'East Dark World Bridge', 'Big Bomb Shop', 'Archery Game',
+                          'Bonk Fairy (Dark)', 'Dark Lake Hylia Shop',
+                          'Bombos Tablet Mirror Spot']),
+        create_lw_region(world, player, 'Bombos Tablet Ledge', ['Bombos Tablet']),
+        create_cave_region(world, player, 'Big Bomb Shop', 'the bomb shop'),
+        create_cave_region(world, player, 'Archery Game', 'a game of skill'),
+        create_dw_region(world, player, 'Dark Lake Hylia', None,
+                         ['Lake Hylia Island Mirror Spot', 'East Dark World Pier', 'Dark Lake Hylia Ledge']),
+        create_dw_region(world, player, 'Dark Lake Hylia Central Island', None,
+                         ['Ice Palace', 'Lake Hylia Central Island Mirror Spot']),
+        create_dw_region(world, player, 'Dark Lake Hylia Ledge', None,
+                         ['Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint',
+                          'Dark Lake Hylia Ledge Spike Cave']),
+        create_cave_region(world, player, 'Dark Lake Hylia Ledge Hint', 'a storyteller'),
+        create_cave_region(world, player, 'Dark Lake Hylia Ledge Spike Cave', 'a spiky hint'),
+        create_cave_region(world, player, 'Hype Cave', 'a bounty of five items',
+                           ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
+                            'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
+        create_dw_region(world, player, 'West Dark World', ['Frog'],
+                         ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House',
+                          'Chest Game', 'Thieves Town', 'Graveyard Ledge Mirror Spot', 'Kings Grave Mirror Spot',
+                          'Bumper Cave Entrance Rock',
+                          'Skull Woods Forest', 'Village of Outcasts Pegs', 'Village of Outcasts Eastern Rocks',
+                          'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)',
+                          'Dark World Lumberjack Shop']),
+        create_dw_region(world, player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Village of Outcasts Shop']),
+        create_dw_region(world, player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'],
+                         ['Bat Cave Drop Ledge Mirror Spot', 'Dark World Hammer Peg Cave', 'Peg Area Rocks']),
+        create_dw_region(world, player, 'Bumper Cave Entrance', None,
+                         ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Mirror Spot', 'Bumper Cave Entrance Drop']),
+        create_cave_region(world, player, 'Fortune Teller (Dark)', 'a fortune teller'),
+        create_cave_region(world, player, 'Village of Outcasts Shop', 'a common shop'),
+        create_cave_region(world, player, 'Dark Lake Hylia Shop', 'a common shop'),
+        create_cave_region(world, player, 'Dark World Lumberjack Shop', 'a common shop'),
+        create_cave_region(world, player, 'Dark World Potion Shop', 'a common shop'),
+        create_cave_region(world, player, 'Dark World Hammer Peg Cave', 'a cave with an item', ['Peg Cave']),
+        create_cave_region(world, player, 'Pyramid Fairy', 'a cave with two chests',
+                           ['Pyramid Fairy - Left', 'Pyramid Fairy - Right']),
+        create_cave_region(world, player, 'Brewery', 'a house with a chest', ['Brewery']),
+        create_cave_region(world, player, 'C-Shaped House', 'a house with a chest', ['C-Shaped House']),
+        create_cave_region(world, player, 'Chest Game', 'a game of 16 chests', ['Chest Game']),
+        create_cave_region(world, player, 'Red Shield Shop', 'the rare shop'),
+        create_cave_region(world, player, 'Dark Sanctuary Hint', 'a storyteller'),
+        create_cave_region(world, player, 'Bumper Cave', 'a connector', None,
+                           ['Bumper Cave Exit (Bottom)', 'Bumper Cave Exit (Top)']),
+        create_dw_region(world, player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'],
+                         ['Bumper Cave Ledge Drop', 'Bumper Cave (Top)', 'Bumper Cave Ledge Mirror Spot']),
+        create_dw_region(world, player, 'Skull Woods Forest', None,
+                         ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)',
+                          'Skull Woods First Section Hole (North)',
+                          'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']),
+        create_dw_region(world, player, 'Skull Woods Forest (West)', None,
+                         ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)',
+                          'Skull Woods Final Section']),
+        create_dw_region(world, player, 'Dark Desert', None,
+                         ['Misery Mire', 'Mire Shed', 'Desert Ledge (Northeast) Mirror Spot',
+                          'Desert Ledge Mirror Spot', 'Desert Palace Stairs Mirror Spot',
+                          'Desert Palace Entrance (North) Mirror Spot', 'Dark Desert Hint', 'Dark Desert Fairy']),
+        create_cave_region(world, player, 'Mire Shed', 'a cave with two chests',
+                           ['Mire Shed - Left', 'Mire Shed - Right']),
+        create_cave_region(world, player, 'Dark Desert Hint', 'a storyteller'),
+        create_dw_region(world, player, 'Dark Death Mountain (West Bottom)', None,
+                         ['Spike Cave', 'Spectacle Rock Mirror Spot', 'Dark Death Mountain Fairy']),
+        create_dw_region(world, player, 'Dark Death Mountain (Top)', None,
+                         ['Dark Death Mountain Drop (East)', 'Dark Death Mountain Drop (West)', 'Ganons Tower',
+                          'Superbunny Cave (Top)',
+                          'Hookshot Cave', 'East Death Mountain (Top) Mirror Spot', 'Turtle Rock']),
+        create_dw_region(world, player, 'Dark Death Mountain Ledge', None,
+                         ['Dark Death Mountain Ledge (East)', 'Dark Death Mountain Ledge (West)',
+                          'Mimic Cave Mirror Spot', 'Spiral Cave Mirror Spot']),
+        create_dw_region(world, player, 'Dark Death Mountain Isolated Ledge', None,
+                         ['Isolated Ledge Mirror Spot', 'Turtle Rock Isolated Ledge Entrance']),
+        create_dw_region(world, player, 'Dark Death Mountain (East Bottom)', None,
+                         ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)',
+                          'Fairy Ascension Mirror Spot']),
+        create_cave_region(world, player, 'Superbunny Cave (Top)', 'a connector',
+                           ['Superbunny Cave - Top', 'Superbunny Cave - Bottom'], ['Superbunny Cave Exit (Top)']),
+        create_cave_region(world, player, 'Superbunny Cave (Bottom)', 'a connector', None,
+                           ['Superbunny Cave Climb', 'Superbunny Cave Exit (Bottom)']),
+        create_cave_region(world, player, 'Spike Cave', 'Spike Cave', ['Spike Cave']),
+        create_cave_region(world, player, 'Hookshot Cave', 'a connector',
+                           ['Hookshot Cave - Top Right', 'Hookshot Cave - Top Left', 'Hookshot Cave - Bottom Right',
+                            'Hookshot Cave - Bottom Left'],
                            ['Hookshot Cave Exit (South)', 'Hookshot Cave Exit (North)']),
-        create_dw_region(player, 'Death Mountain Floating Island (Dark World)', None, ['Floating Island Drop', 'Hookshot Cave Back Entrance', 'Floating Island Mirror Spot']),
-        create_lw_region(player, 'Death Mountain Floating Island (Light World)', ['Floating Island']),
-        create_dw_region(player, 'Turtle Rock (Top)', None, ['Turtle Rock Drop']),
-        create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave']),
-        create_cave_region(player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']),
+        create_dw_region(world, player, 'Death Mountain Floating Island (Dark World)', None,
+                         ['Floating Island Drop', 'Hookshot Cave Back Entrance', 'Floating Island Mirror Spot']),
+        create_lw_region(world, player, 'Death Mountain Floating Island (Light World)', ['Floating Island']),
+        create_dw_region(world, player, 'Turtle Rock (Top)', None, ['Turtle Rock Drop']),
+        create_lw_region(world, player, 'Mimic Cave Ledge', None, ['Mimic Cave']),
+        create_cave_region(world, player, 'Mimic Cave', 'Mimic Cave', ['Mimic Cave']),
 
-        create_dungeon_region(player, 'Swamp Palace (Entrance)', 'Swamp Palace', None, ['Swamp Palace Moat', 'Swamp Palace Exit']),
-        create_dungeon_region(player, 'Swamp Palace (First Room)', 'Swamp Palace', ['Swamp Palace - Entrance'], ['Swamp Palace Small Key Door']),
-        create_dungeon_region(player, 'Swamp Palace (Starting Area)', 'Swamp Palace', ['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']),
-        create_dungeon_region(player, 'Swamp Palace (Center)', 'Swamp Palace', ['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
-                                                                        'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
-        create_dungeon_region(player, 'Swamp Palace (North)', 'Swamp Palace', ['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
-                                                                       'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']),
-        create_dungeon_region(player, 'Thieves Town (Entrance)', 'Thieves\' Town', ['Thieves\' Town - Big Key Chest',
-                                                                            'Thieves\' Town - Map Chest',
-                                                                            'Thieves\' Town - Compass Chest',
-                                                                            'Thieves\' Town - Ambush Chest'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
-        create_dungeon_region(player, 'Thieves Town (Deep)', 'Thieves\' Town', ['Thieves\' Town - Attic',
-                                                                        'Thieves\' Town - Big Chest',
-                                                                        'Thieves\' Town - Blind\'s Cell'], ['Blind Fight']),
-        create_dungeon_region(player, 'Blind Fight', 'Thieves\' Town', ['Thieves\' Town - Boss', 'Thieves\' Town - Prize']),
-        create_dungeon_region(player, 'Skull Woods First Section', 'Skull Woods', ['Skull Woods - Map Chest'], ['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump', 'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
-        create_dungeon_region(player, 'Skull Woods First Section (Right)', 'Skull Woods', ['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
-        create_dungeon_region(player, 'Skull Woods First Section (Left)', 'Skull Woods', ['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'], ['Skull Woods First Section (Left) Door to Exit', 'Skull Woods First Section (Left) Door to Right']),
-        create_dungeon_region(player, 'Skull Woods First Section (Top)', 'Skull Woods', ['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
-        create_dungeon_region(player, 'Skull Woods Second Section (Drop)', 'Skull Woods', None, ['Skull Woods Second Section (Drop)']),
-        create_dungeon_region(player, 'Skull Woods Second Section', 'Skull Woods', ['Skull Woods - Big Key Chest'], ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
-        create_dungeon_region(player, 'Skull Woods Final Section (Entrance)', 'Skull Woods', ['Skull Woods - Bridge Room'], ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
-        create_dungeon_region(player, 'Skull Woods Final Section (Mothula)', 'Skull Woods', ['Skull Woods - Boss', 'Skull Woods - Prize']),
-        create_dungeon_region(player, 'Ice Palace (Entrance)', 'Ice Palace', None, ['Ice Palace Entrance Room', 'Ice Palace Exit']),
-        create_dungeon_region(player, 'Ice Palace (Main)', 'Ice Palace', ['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
-                                                                  'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'], ['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
-        create_dungeon_region(player, 'Ice Palace (East)', 'Ice Palace', ['Ice Palace - Spike Room'], ['Ice Palace (East Top)']),
-        create_dungeon_region(player, 'Ice Palace (East Top)', 'Ice Palace', ['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
-        create_dungeon_region(player, 'Ice Palace (Kholdstare)', 'Ice Palace', ['Ice Palace - Boss', 'Ice Palace - Prize']),
-        create_dungeon_region(player, 'Misery Mire (Entrance)', 'Misery Mire', None, ['Misery Mire Entrance Gap', 'Misery Mire Exit']),
-        create_dungeon_region(player, 'Misery Mire (Main)', 'Misery Mire', ['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
-                                                                    'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'], ['Misery Mire (West)', 'Misery Mire Big Key Door']),
-        create_dungeon_region(player, 'Misery Mire (West)', 'Misery Mire', ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
-        create_dungeon_region(player, 'Misery Mire (Final Area)', 'Misery Mire', None, ['Misery Mire (Vitreous)']),
-        create_dungeon_region(player, 'Misery Mire (Vitreous)', 'Misery Mire', ['Misery Mire - Boss', 'Misery Mire - Prize']),
-        create_dungeon_region(player, 'Turtle Rock (Entrance)', 'Turtle Rock', None, ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
-        create_dungeon_region(player, 'Turtle Rock (First Section)', 'Turtle Rock', ['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
-                                                                             'Turtle Rock - Roller Room - Right'], ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
-        create_dungeon_region(player, 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock', ['Turtle Rock - Chain Chomps'], ['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
-        create_dungeon_region(player, 'Turtle Rock (Second Section)', 'Turtle Rock', ['Turtle Rock - Big Key Chest'], ['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase', 'Turtle Rock Big Key Door']),
-        create_dungeon_region(player, 'Turtle Rock (Big Chest)', 'Turtle Rock', ['Turtle Rock - Big Chest'], ['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
-        create_dungeon_region(player, 'Turtle Rock (Crystaroller Room)', 'Turtle Rock', ['Turtle Rock - Crystaroller Room'], ['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
-        create_dungeon_region(player, 'Turtle Rock (Dark Room)', 'Turtle Rock', None, ['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']),
-        create_dungeon_region(player, 'Turtle Rock (Eye Bridge)', 'Turtle Rock', ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
-                                                                          'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
-                              ['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)', 'Turtle Rock Isolated Ledge Exit']),
-        create_dungeon_region(player, 'Turtle Rock (Trinexx)', 'Turtle Rock', ['Turtle Rock - Boss', 'Turtle Rock - Prize']),
-        create_dungeon_region(player, 'Palace of Darkness (Entrance)', 'Palace of Darkness', ['Palace of Darkness - Shooter Room'], ['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall', 'Palace of Darkness Exit']),
-        create_dungeon_region(player, 'Palace of Darkness (Center)', 'Palace of Darkness', ['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
-                              ['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)', 'Palace of Darkness Big Key Door']),
-        create_dungeon_region(player, 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness', ['Palace of Darkness - Big Key Chest']),
-        create_dungeon_region(player, 'Palace of Darkness (Bonk Section)', 'Palace of Darkness', ['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'], ['Palace of Darkness Hammer Peg Drop']),
-        create_dungeon_region(player, 'Palace of Darkness (North)', 'Palace of Darkness', ['Palace of Darkness - Compass Chest', 'Palace of Darkness - Dark Basement - Left', 'Palace of Darkness - Dark Basement - Right'],
+        create_dungeon_region(world, player, 'Swamp Palace (Entrance)', 'Swamp Palace', None,
+                              ['Swamp Palace Moat', 'Swamp Palace Exit']),
+        create_dungeon_region(world, player, 'Swamp Palace (First Room)', 'Swamp Palace', ['Swamp Palace - Entrance'],
+                              ['Swamp Palace Small Key Door']),
+        create_dungeon_region(world, player, 'Swamp Palace (Starting Area)', 'Swamp Palace',
+                              ['Swamp Palace - Map Chest'], ['Swamp Palace (Center)']),
+        create_dungeon_region(world, player, 'Swamp Palace (Center)', 'Swamp Palace',
+                              ['Swamp Palace - Big Chest', 'Swamp Palace - Compass Chest',
+                               'Swamp Palace - Big Key Chest', 'Swamp Palace - West Chest'], ['Swamp Palace (North)']),
+        create_dungeon_region(world, player, 'Swamp Palace (North)', 'Swamp Palace',
+                              ['Swamp Palace - Flooded Room - Left', 'Swamp Palace - Flooded Room - Right',
+                               'Swamp Palace - Waterfall Room', 'Swamp Palace - Boss', 'Swamp Palace - Prize']),
+        create_dungeon_region(world, player, 'Thieves Town (Entrance)', 'Thieves\' Town',
+                              ['Thieves\' Town - Big Key Chest',
+                               'Thieves\' Town - Map Chest',
+                               'Thieves\' Town - Compass Chest',
+                               'Thieves\' Town - Ambush Chest'], ['Thieves Town Big Key Door', 'Thieves Town Exit']),
+        create_dungeon_region(world, player, 'Thieves Town (Deep)', 'Thieves\' Town', ['Thieves\' Town - Attic',
+                                                                                       'Thieves\' Town - Big Chest',
+                                                                                       'Thieves\' Town - Blind\'s Cell'],
+                              ['Blind Fight']),
+        create_dungeon_region(world, player, 'Blind Fight', 'Thieves\' Town',
+                              ['Thieves\' Town - Boss', 'Thieves\' Town - Prize']),
+        create_dungeon_region(world, player, 'Skull Woods First Section', 'Skull Woods', ['Skull Woods - Map Chest'],
+                              ['Skull Woods First Section Exit', 'Skull Woods First Section Bomb Jump',
+                               'Skull Woods First Section South Door', 'Skull Woods First Section West Door']),
+        create_dungeon_region(world, player, 'Skull Woods First Section (Right)', 'Skull Woods',
+                              ['Skull Woods - Pinball Room'], ['Skull Woods First Section (Right) North Door']),
+        create_dungeon_region(world, player, 'Skull Woods First Section (Left)', 'Skull Woods',
+                              ['Skull Woods - Compass Chest', 'Skull Woods - Pot Prison'],
+                              ['Skull Woods First Section (Left) Door to Exit',
+                               'Skull Woods First Section (Left) Door to Right']),
+        create_dungeon_region(world, player, 'Skull Woods First Section (Top)', 'Skull Woods',
+                              ['Skull Woods - Big Chest'], ['Skull Woods First Section (Top) One-Way Path']),
+        create_dungeon_region(world, player, 'Skull Woods Second Section (Drop)', 'Skull Woods', None,
+                              ['Skull Woods Second Section (Drop)']),
+        create_dungeon_region(world, player, 'Skull Woods Second Section', 'Skull Woods',
+                              ['Skull Woods - Big Key Chest'],
+                              ['Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)']),
+        create_dungeon_region(world, player, 'Skull Woods Final Section (Entrance)', 'Skull Woods',
+                              ['Skull Woods - Bridge Room'],
+                              ['Skull Woods Torch Room', 'Skull Woods Final Section Exit']),
+        create_dungeon_region(world, player, 'Skull Woods Final Section (Mothula)', 'Skull Woods',
+                              ['Skull Woods - Boss', 'Skull Woods - Prize']),
+        create_dungeon_region(world, player, 'Ice Palace (Entrance)', 'Ice Palace', None,
+                              ['Ice Palace Entrance Room', 'Ice Palace Exit']),
+        create_dungeon_region(world, player, 'Ice Palace (Main)', 'Ice Palace',
+                              ['Ice Palace - Compass Chest', 'Ice Palace - Freezor Chest',
+                               'Ice Palace - Big Chest', 'Ice Palace - Iced T Room'],
+                              ['Ice Palace (East)', 'Ice Palace (Kholdstare)']),
+        create_dungeon_region(world, player, 'Ice Palace (East)', 'Ice Palace', ['Ice Palace - Spike Room'],
+                              ['Ice Palace (East Top)']),
+        create_dungeon_region(world, player, 'Ice Palace (East Top)', 'Ice Palace',
+                              ['Ice Palace - Big Key Chest', 'Ice Palace - Map Chest']),
+        create_dungeon_region(world, player, 'Ice Palace (Kholdstare)', 'Ice Palace',
+                              ['Ice Palace - Boss', 'Ice Palace - Prize']),
+        create_dungeon_region(world, player, 'Misery Mire (Entrance)', 'Misery Mire', None,
+                              ['Misery Mire Entrance Gap', 'Misery Mire Exit']),
+        create_dungeon_region(world, player, 'Misery Mire (Main)', 'Misery Mire',
+                              ['Misery Mire - Big Chest', 'Misery Mire - Map Chest', 'Misery Mire - Main Lobby',
+                               'Misery Mire - Bridge Chest', 'Misery Mire - Spike Chest'],
+                              ['Misery Mire (West)', 'Misery Mire Big Key Door']),
+        create_dungeon_region(world, player, 'Misery Mire (West)', 'Misery Mire',
+                              ['Misery Mire - Compass Chest', 'Misery Mire - Big Key Chest']),
+        create_dungeon_region(world, player, 'Misery Mire (Final Area)', 'Misery Mire', None,
+                              ['Misery Mire (Vitreous)']),
+        create_dungeon_region(world, player, 'Misery Mire (Vitreous)', 'Misery Mire',
+                              ['Misery Mire - Boss', 'Misery Mire - Prize']),
+        create_dungeon_region(world, player, 'Turtle Rock (Entrance)', 'Turtle Rock', None,
+                              ['Turtle Rock Entrance Gap', 'Turtle Rock Exit (Front)']),
+        create_dungeon_region(world, player, 'Turtle Rock (First Section)', 'Turtle Rock',
+                              ['Turtle Rock - Compass Chest', 'Turtle Rock - Roller Room - Left',
+                               'Turtle Rock - Roller Room - Right'],
+                              ['Turtle Rock Pokey Room', 'Turtle Rock Entrance Gap Reverse']),
+        create_dungeon_region(world, player, 'Turtle Rock (Chain Chomp Room)', 'Turtle Rock',
+                              ['Turtle Rock - Chain Chomps'],
+                              ['Turtle Rock (Chain Chomp Room) (North)', 'Turtle Rock (Chain Chomp Room) (South)']),
+        create_dungeon_region(world, player, 'Turtle Rock (Second Section)', 'Turtle Rock',
+                              ['Turtle Rock - Big Key Chest'],
+                              ['Turtle Rock Ledge Exit (West)', 'Turtle Rock Chain Chomp Staircase',
+                               'Turtle Rock Big Key Door']),
+        create_dungeon_region(world, player, 'Turtle Rock (Big Chest)', 'Turtle Rock', ['Turtle Rock - Big Chest'],
+                              ['Turtle Rock (Big Chest) (North)', 'Turtle Rock Ledge Exit (East)']),
+        create_dungeon_region(world, player, 'Turtle Rock (Crystaroller Room)', 'Turtle Rock',
+                              ['Turtle Rock - Crystaroller Room'],
+                              ['Turtle Rock Dark Room Staircase', 'Turtle Rock Big Key Door Reverse']),
+        create_dungeon_region(world, player, 'Turtle Rock (Dark Room)', 'Turtle Rock', None,
+                              ['Turtle Rock (Dark Room) (North)', 'Turtle Rock (Dark Room) (South)']),
+        create_dungeon_region(world, player, 'Turtle Rock (Eye Bridge)', 'Turtle Rock',
+                              ['Turtle Rock - Eye Bridge - Bottom Left', 'Turtle Rock - Eye Bridge - Bottom Right',
+                               'Turtle Rock - Eye Bridge - Top Left', 'Turtle Rock - Eye Bridge - Top Right'],
+                              ['Turtle Rock Dark Room (South)', 'Turtle Rock (Trinexx)',
+                               'Turtle Rock Isolated Ledge Exit']),
+        create_dungeon_region(world, player, 'Turtle Rock (Trinexx)', 'Turtle Rock',
+                              ['Turtle Rock - Boss', 'Turtle Rock - Prize']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Entrance)', 'Palace of Darkness',
+                              ['Palace of Darkness - Shooter Room'],
+                              ['Palace of Darkness Bridge Room', 'Palace of Darkness Bonk Wall',
+                               'Palace of Darkness Exit']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Center)', 'Palace of Darkness',
+                              ['Palace of Darkness - The Arena - Bridge', 'Palace of Darkness - Stalfos Basement'],
+                              ['Palace of Darkness Big Key Chest Staircase', 'Palace of Darkness (North)',
+                               'Palace of Darkness Big Key Door']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Big Key Chest)', 'Palace of Darkness',
+                              ['Palace of Darkness - Big Key Chest']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Bonk Section)', 'Palace of Darkness',
+                              ['Palace of Darkness - The Arena - Ledge', 'Palace of Darkness - Map Chest'],
+                              ['Palace of Darkness Hammer Peg Drop']),
+        create_dungeon_region(world, player, 'Palace of Darkness (North)', 'Palace of Darkness',
+                              ['Palace of Darkness - Compass Chest', 'Palace of Darkness - Dark Basement - Left',
+                               'Palace of Darkness - Dark Basement - Right'],
                               ['Palace of Darkness Spike Statue Room Door', 'Palace of Darkness Maze Door']),
-        create_dungeon_region(player, 'Palace of Darkness (Maze)', 'Palace of Darkness', ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom', 'Palace of Darkness - Big Chest']),
-        create_dungeon_region(player, 'Palace of Darkness (Harmless Hellway)', 'Palace of Darkness', ['Palace of Darkness - Harmless Hellway']),
-        create_dungeon_region(player, 'Palace of Darkness (Final Section)', 'Palace of Darkness', ['Palace of Darkness - Boss', 'Palace of Darkness - Prize']),
-        create_dungeon_region(player, 'Ganons Tower (Entrance)', 'Ganon\'s Tower', ['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left', 'Ganons Tower - Hope Room - Right'],
-                              ['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door', 'Ganons Tower Exit']),
-        create_dungeon_region(player, 'Ganons Tower (Tile Room)', 'Ganon\'s Tower', ['Ganons Tower - Tile Room'], ['Ganons Tower (Tile Room) Key Door']),
-        create_dungeon_region(player, 'Ganons Tower (Compass Room)', 'Ganon\'s Tower', ['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right',
-                                                                                'Ganons Tower - Compass Room - Bottom Left', 'Ganons Tower - Compass Room - Bottom Right'],
-                              ['Ganons Tower (Bottom) (East)']),
-        create_dungeon_region(player, 'Ganons Tower (Hookshot Room)', 'Ganon\'s Tower', ['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right',
-                                                                                 'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'],
+        create_dungeon_region(world, player, 'Palace of Darkness (Maze)', 'Palace of Darkness',
+                              ['Palace of Darkness - Dark Maze - Top', 'Palace of Darkness - Dark Maze - Bottom',
+                               'Palace of Darkness - Big Chest']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Harmless Hellway)', 'Palace of Darkness',
+                              ['Palace of Darkness - Harmless Hellway']),
+        create_dungeon_region(world, player, 'Palace of Darkness (Final Section)', 'Palace of Darkness',
+                              ['Palace of Darkness - Boss', 'Palace of Darkness - Prize']),
+        create_dungeon_region(world, player, 'Ganons Tower (Entrance)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Bob\'s Torch', 'Ganons Tower - Hope Room - Left',
+                               'Ganons Tower - Hope Room - Right'],
+                              ['Ganons Tower (Tile Room)', 'Ganons Tower (Hookshot Room)', 'Ganons Tower Big Key Door',
+                               'Ganons Tower Exit']),
+        create_dungeon_region(world, player, 'Ganons Tower (Tile Room)', 'Ganon\'s Tower', ['Ganons Tower - Tile Room'],
+                              ['Ganons Tower (Tile Room) Key Door']),
+        create_dungeon_region(world, player, 'Ganons Tower (Compass Room)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Compass Room - Top Left', 'Ganons Tower - Compass Room - Top Right',
+                               'Ganons Tower - Compass Room - Bottom Left',
+                               'Ganons Tower - Compass Room - Bottom Right'], ['Ganons Tower (Bottom) (East)']),
+        create_dungeon_region(world, player, 'Ganons Tower (Hookshot Room)', 'Ganon\'s Tower',
+                              ['Ganons Tower - DMs Room - Top Left', 'Ganons Tower - DMs Room - Top Right',
+                               'Ganons Tower - DMs Room - Bottom Left', 'Ganons Tower - DMs Room - Bottom Right'],
                               ['Ganons Tower (Map Room)', 'Ganons Tower (Double Switch Room)']),
-        create_dungeon_region(player, 'Ganons Tower (Map Room)', 'Ganon\'s Tower', ['Ganons Tower - Map Chest']),
-        create_dungeon_region(player, 'Ganons Tower (Firesnake Room)', 'Ganon\'s Tower', ['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
-        create_dungeon_region(player, 'Ganons Tower (Teleport Room)', 'Ganon\'s Tower', ['Ganons Tower - Randomizer Room - Top Left', 'Ganons Tower - Randomizer Room - Top Right',
-                                                                                 'Ganons Tower - Randomizer Room - Bottom Left', 'Ganons Tower - Randomizer Room - Bottom Right'],
-                              ['Ganons Tower (Bottom) (West)']),
-        create_dungeon_region(player, 'Ganons Tower (Bottom)', 'Ganon\'s Tower', ['Ganons Tower - Bob\'s Chest', 'Ganons Tower - Big Chest', 'Ganons Tower - Big Key Room - Left',
-                                                                          'Ganons Tower - Big Key Room - Right', 'Ganons Tower - Big Key Chest']),
-        create_dungeon_region(player, 'Ganons Tower (Top)', 'Ganon\'s Tower', None, ['Ganons Tower Torch Rooms']),
-        create_dungeon_region(player, 'Ganons Tower (Before Moldorm)', 'Ganon\'s Tower', ['Ganons Tower - Mini Helmasaur Room - Left', 'Ganons Tower - Mini Helmasaur Room - Right',
-                                                                                  'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']),
-        create_dungeon_region(player, 'Ganons Tower (Moldorm)', 'Ganon\'s Tower', None, ['Ganons Tower Moldorm Gap']),
-        create_dungeon_region(player, 'Agahnim 2', 'Ganon\'s Tower', ['Ganons Tower - Validation Chest', 'Agahnim 2'], None),
-        create_cave_region(player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']),
-        create_cave_region(player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']),
-        create_dw_region(player, 'Pyramid Ledge', None, ['Pyramid Entrance', 'Pyramid Drop']),
-        create_lw_region(player, 'Desert Northern Cliffs'),
-        create_dw_region(player, 'Dark Death Mountain Bunny Descent Area')
+        create_dungeon_region(world, player, 'Ganons Tower (Map Room)', 'Ganon\'s Tower', ['Ganons Tower - Map Chest']),
+        create_dungeon_region(world, player, 'Ganons Tower (Firesnake Room)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Firesnake Room'], ['Ganons Tower (Firesnake Room)']),
+        create_dungeon_region(world, player, 'Ganons Tower (Teleport Room)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Randomizer Room - Top Left',
+                               'Ganons Tower - Randomizer Room - Top Right',
+                               'Ganons Tower - Randomizer Room - Bottom Left',
+                               'Ganons Tower - Randomizer Room - Bottom Right'], ['Ganons Tower (Bottom) (West)']),
+        create_dungeon_region(world, player, 'Ganons Tower (Bottom)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Bob\'s Chest', 'Ganons Tower - Big Chest',
+                               'Ganons Tower - Big Key Room - Left',
+                               'Ganons Tower - Big Key Room - Right', 'Ganons Tower - Big Key Chest']),
+        create_dungeon_region(world, player, 'Ganons Tower (Top)', 'Ganon\'s Tower', None,
+                              ['Ganons Tower Torch Rooms']),
+        create_dungeon_region(world, player, 'Ganons Tower (Before Moldorm)', 'Ganon\'s Tower',
+                              ['Ganons Tower - Mini Helmasaur Room - Left',
+                               'Ganons Tower - Mini Helmasaur Room - Right',
+                               'Ganons Tower - Pre-Moldorm Chest'], ['Ganons Tower Moldorm Door']),
+        create_dungeon_region(world, player, 'Ganons Tower (Moldorm)', 'Ganon\'s Tower', None,
+                              ['Ganons Tower Moldorm Gap']),
+        create_dungeon_region(world, player, 'Agahnim 2', 'Ganon\'s Tower',
+                              ['Ganons Tower - Validation Chest', 'Agahnim 2'], None),
+        create_cave_region(world, player, 'Pyramid', 'a drop\'s exit', ['Ganon'], ['Ganon Drop']),
+        create_cave_region(world, player, 'Bottom of Pyramid', 'a drop\'s exit', None, ['Pyramid Exit']),
+        create_dw_region(world, player, 'Pyramid Ledge', None, ['Pyramid Entrance', 'Pyramid Drop']),
+        create_lw_region(world, player, 'Desert Northern Cliffs'),
+        create_dw_region(world, player, 'Dark Death Mountain Bunny Descent Area')
     ]
 
     world.initialize_regions()
 
 
-def create_lw_region(player: int, name: str, locations=None, exits=None):
-    return _create_region(player, name, RegionType.LightWorld, 'Light World', locations, exits)
+def create_lw_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
+    return _create_region(world, player, name, LTTPRegionType.LightWorld, 'Light World', locations, exits)
 
 
-def create_dw_region(player: int, name: str, locations=None, exits=None):
-    return _create_region(player, name, RegionType.DarkWorld, 'Dark World', locations, exits)
+def create_dw_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
+    return _create_region(world, player, name, LTTPRegionType.DarkWorld, 'Dark World', locations, exits)
 
 
-def create_cave_region(player: int, name: str, hint: str, locations=None, exits=None):
-    return _create_region(player, name, RegionType.Cave, hint, locations, exits)
+def create_cave_region(world: MultiWorld, player: int, name: str, hint: str, locations=None, exits=None):
+    return _create_region(world, player, name, LTTPRegionType.Cave, hint, locations, exits)
 
 
-def create_dungeon_region(player: int, name: str, hint: str, locations=None, exits=None):
-    return _create_region(player, name, RegionType.Dungeon, hint, locations, exits)
+def create_dungeon_region(world: MultiWorld, player: int, name: str, hint: str, locations=None, exits=None):
+    return _create_region(world, player, name, LTTPRegionType.Dungeon, hint, locations, exits)
 
 
-def _create_region(player: int, name: str, type: RegionType, hint: str, locations=None, exits=None):
+def _create_region(world: MultiWorld, player: int, name: str, type: LTTPRegionType, hint: str, locations=None,
+                   exits=None):
     from worlds.alttp.SubClasses import ALttPLocation
-    ret = Region(name, type, hint, player)
-    if locations is None:
-        locations = []
-    if exits is None:
-        exits = []
-
-    for exit in exits:
-        ret.exits.append(Entrance(player, exit, ret))
-    for location in locations:
-        address, player_address, crystal, hint_text = location_table[location]
-        ret.locations.append(ALttPLocation(player, location, address, crystal, hint_text, ret, player_address))
+    ret = LTTPRegion(name, type, hint, player, world)
+    if exits:
+        for exit in exits:
+            ret.exits.append(Entrance(player, exit, ret))
+    if locations:
+        for location in locations:
+            address, player_address, crystal, hint_text = location_table[location]
+            ret.locations.append(ALttPLocation(player, location, address, crystal, hint_text, ret, player_address))
     return ret
 
 
 def mark_light_world_regions(world, player: int):
     # cross world caves may have some sections marked as both in_light_world, and in_dark_work.
     # That is ok. the bunny logic will check for this case and incorporate special rules.
-    queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.LightWorld)
+    queue = collections.deque(region for region in world.get_regions(player) if region.type == LTTPRegionType.LightWorld)
     seen = set(queue)
     while queue:
         current = queue.popleft()
         current.is_light_world = True
         for exit in current.exits:
-            if exit.connected_region.type == RegionType.DarkWorld:
+            if exit.connected_region.type == LTTPRegionType.DarkWorld:
                 # Don't venture into the dark world
                 continue
             if exit.connected_region not in seen:
                 seen.add(exit.connected_region)
                 queue.append(exit.connected_region)
 
-    queue = collections.deque(region for region in world.get_regions(player) if region.type == RegionType.DarkWorld)
+    queue = collections.deque(region for region in world.get_regions(player) if region.type == LTTPRegionType.DarkWorld)
     seen = set(queue)
     while queue:
         current = queue.popleft()
         current.is_dark_world = True
         for exit in current.exits:
-            if exit.connected_region.type == RegionType.LightWorld:
+            if exit.connected_region.type == LTTPRegionType.LightWorld:
                 # Don't venture into the light world
                 continue
             if exit.connected_region not in seen:
diff --git a/worlds/alttp/Rules.py b/worlds/alttp/Rules.py
index 2cee568e..a31641d6 100644
--- a/worlds/alttp/Rules.py
+++ b/worlds/alttp/Rules.py
@@ -3,7 +3,7 @@ import logging
 from typing import Iterator, Set
 
 from worlds.alttp import OverworldGlitchRules
-from BaseClasses import RegionType, MultiWorld, Entrance
+from BaseClasses import MultiWorld, Entrance
 from worlds.alttp.Items import ItemFactory, progression_items, item_name_groups, item_table
 from worlds.alttp.OverworldGlitchRules import overworld_glitches_rules, no_logic_rules
 from worlds.alttp.Regions import location_table
@@ -12,6 +12,7 @@ from worlds.alttp.Bosses import GanonDefeatRule
 from worlds.generic.Rules import set_rule, add_rule, forbid_item, add_item_rule, item_in_locations, \
     item_name
 from worlds.alttp.Options import smallkey_shuffle
+from worlds.alttp.Regions import LTTPRegionType
 
 
 def set_rules(world):
@@ -1423,7 +1424,7 @@ def set_bunny_rules(world: MultiWorld, player: int, inverted: bool):
                 return lambda state: state.has('Magic Mirror', player) and state.has_sword(player) or state.has('Moon Pearl', player)
             if region.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons():
                 return lambda state: state.has('Magic Mirror', player) or state.has('Moon Pearl', player)
-            if region.type == RegionType.Dungeon:
+            if region.type == LTTPRegionType.Dungeon:
                 return lambda state: True
             if (((location is None or location.name not in OverworldGlitchRules.get_superbunny_accessible_locations())
                     or (connecting_entrance is not None and connecting_entrance.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons()))
@@ -1467,7 +1468,7 @@ def set_bunny_rules(world: MultiWorld, player: int, inverted: bool):
                                 possible_options.append(lambda state: path_to_access_rule(new_path, entrance))
                             else:
                                 possible_options.append(lambda state: path_to_access_rule(new_path, entrance) and state.has('Magic Mirror', player))
-                        if new_region.type != RegionType.Cave:
+                        if new_region.type != LTTPRegionType.Cave:
                             continue
                     else:
                         continue
@@ -1495,8 +1496,8 @@ def set_bunny_rules(world: MultiWorld, player: int, inverted: bool):
     for entrance in world.get_entrances():
         if entrance.player == player and is_bunny(entrance.connected_region):
             if world.logic[player] in ['minorglitches', 'owglitches', 'hybridglitches', 'nologic'] :
-                if entrance.connected_region.type == RegionType.Dungeon:
-                    if entrance.parent_region.type != RegionType.Dungeon and entrance.connected_region.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons():
+                if entrance.connected_region.type == LTTPRegionType.Dungeon:
+                    if entrance.parent_region.type != LTTPRegionType.Dungeon and entrance.connected_region.name in OverworldGlitchRules.get_invalid_bunny_revival_dungeons():
                         add_rule(entrance, get_rule_to_add(entrance.connected_region, None, entrance))
                     continue
                 if entrance.connected_region.name == 'Turtle Rock (Entrance)':
diff --git a/worlds/alttp/SubClasses.py b/worlds/alttp/SubClasses.py
index f54ab16e..50f3ca47 100644
--- a/worlds/alttp/SubClasses.py
+++ b/worlds/alttp/SubClasses.py
@@ -1,7 +1,8 @@
 """Module extending BaseClasses.py for aLttP"""
 from typing import Optional
+from enum import IntEnum
 
-from BaseClasses import Location, Item, ItemClassification
+from BaseClasses import Location, Item, ItemClassification, Region, MultiWorld
 
 
 class ALttPLocation(Location):
@@ -62,4 +63,32 @@ class ALttPItem(Item):
 
     @property
     def locked_dungeon_item(self):
-        return self.location.locked and self.dungeon_item
\ No newline at end of file
+        return self.location.locked and self.dungeon_item
+
+
+class LTTPRegionType(IntEnum):
+    LightWorld = 1
+    DarkWorld = 2
+    Cave = 3  # also houses
+    Dungeon = 4
+
+    @property
+    def is_indoors(self) -> bool:
+        """Shorthand for checking if Cave or Dungeon"""
+        return self in (LTTPRegionType.Cave, LTTPRegionType.Dungeon)
+
+
+class LTTPRegion(Region):
+    type: LTTPRegionType
+
+    def __init__(self, name: str, type_: LTTPRegionType, hint: str, player: int, multiworld: MultiWorld):
+        super().__init__(name, player, multiworld, hint)
+        self.type = type_
+
+    @property
+    def get_entrance(self):
+        for entrance in self.entrances:
+            if entrance.parent_region.type in (LTTPRegionType.DarkWorld, LTTPRegionType.LightWorld):
+                return entrance
+        for entrance in self.entrances:
+            return entrance.parent_region.get_entrance
diff --git a/worlds/archipidle/Rules.py b/worlds/archipidle/Rules.py
index 763a53e1..94c6e099 100644
--- a/worlds/archipidle/Rules.py
+++ b/worlds/archipidle/Rules.py
@@ -14,26 +14,20 @@ class ArchipIDLELogic(LogicMixin):
 
 
 def set_rules(world: MultiWorld, player: int):
-    for i in range(1, 16):
-        set_rule(
-            world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
-            lambda state: state._archipidle_location_is_accessible(player, 0)
-        )
-
     for i in range(16, 31):
         set_rule(
-            world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
+            world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) else 0} seconds", player),
             lambda state: state._archipidle_location_is_accessible(player, 4)
         )
 
     for i in range(31, 51):
         set_rule(
-            world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
+            world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) else 0} seconds", player),
             lambda state: state._archipidle_location_is_accessible(player, 10)
         )
 
     for i in range(51, 101):
         set_rule(
-            world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds", player),
+            world.get_location(f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) else 0} seconds", player),
             lambda state: state._archipidle_location_is_accessible(player, 20)
         )
diff --git a/worlds/archipidle/__init__.py b/worlds/archipidle/__init__.py
index 50e2912d..5054872d 100644
--- a/worlds/archipidle/__init__.py
+++ b/worlds/archipidle/__init__.py
@@ -1,4 +1,4 @@
-from BaseClasses import Item, MultiWorld, Region, Location, Entrance, Tutorial, ItemClassification, RegionType
+from BaseClasses import Item, MultiWorld, Region, Location, Entrance, Tutorial, ItemClassification
 from .Items import item_table
 from .Rules import set_rules
 from ..AutoWorld import World, WebWorld
@@ -38,7 +38,7 @@ class ArchipIDLEWorld(World):
     location_name_to_id = {}
     start_id = 9000
     for i in range(1, 101):
-        location_name_to_id[f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) > 0 else 0} seconds"] = start_id
+        location_name_to_id[f"IDLE for at least {int(i / 2)} minutes {30 if (i % 2) else 0} seconds"] = start_id
         start_id += 1
 
     def generate_basic(self):
@@ -78,8 +78,7 @@ class ArchipIDLEWorld(World):
 
 
 def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
-    region = Region(name, RegionType.Generic, name, player)
-    region.multiworld = world
+    region = Region(name, player, world)
     if locations:
         for location_name in locations.keys():
             location = ArchipIDLELocation(player, location_name, locations[location_name], region)
@@ -98,6 +97,3 @@ class ArchipIDLEItem(Item):
 
 class ArchipIDLELocation(Location):
     game: str = "ArchipIDLE"
-
-    def __init__(self, player: int, name: str, address=None, parent=None):
-        super(ArchipIDLELocation, self).__init__(player, name, address, parent)
diff --git a/worlds/checksfinder/Regions.py b/worlds/checksfinder/Regions.py
deleted file mode 100644
index faae0b64..00000000
--- a/worlds/checksfinder/Regions.py
+++ /dev/null
@@ -1,16 +0,0 @@
-
-def link_checksfinder_structures(world, player):
-    for (exit, region) in mandatory_connections:
-        world.get_entrance(exit, player).connect(world.get_region(region, player))
-
-# (Region name, list of exits)
-checksfinder_regions = [
-    ('Menu', ['New Board']),
-    ('Board',[]),
-]
-
-# (Entrance, region pointed to)
-mandatory_connections = [
-    ('New Board', 'Board'),
-]
-
diff --git a/worlds/checksfinder/__init__.py b/worlds/checksfinder/__init__.py
index 9be2350f..9ca16ca0 100644
--- a/worlds/checksfinder/__init__.py
+++ b/worlds/checksfinder/__init__.py
@@ -1,8 +1,7 @@
-from BaseClasses import Region, Entrance, Item, Tutorial, ItemClassification, RegionType
+from BaseClasses import Region, Entrance, Item, Tutorial, ItemClassification
 from .Items import ChecksFinderItem, item_table, required_items
 from .Locations import ChecksFinderAdvancement, advancement_table, exclusion_table
 from .Options import checksfinder_options
-from .Regions import checksfinder_regions, link_checksfinder_structures
 from .Rules import set_rules, set_completion_rules
 from ..AutoWorld import World, WebWorld
 
@@ -68,17 +67,15 @@ class ChecksFinderWorld(World):
         set_completion_rules(self.multiworld, self.player)
 
     def create_regions(self):
-        def ChecksFinderRegion(region_name: str, exits=[]):
-            ret = Region(region_name, RegionType.Generic, region_name, self.player, self.multiworld)
-            ret.locations = [ChecksFinderAdvancement(self.player, loc_name, loc_data.id, ret)
-                for loc_name, loc_data in advancement_table.items()
-                if loc_data.region == region_name]
-            for exit in exits:
-                ret.exits.append(Entrance(self.player, exit, ret))
-            return ret
+        menu = Region("Menu", self.player, self.multiworld)
+        board = Region("Board", self.player, self.multiworld)
+        board.locations = [ChecksFinderAdvancement(self.player, loc_name, loc_data.id, board)
+                           for loc_name, loc_data in advancement_table.items() if loc_data.region == board.name]
 
-        self.multiworld.regions += [ChecksFinderRegion(*r) for r in checksfinder_regions]
-        link_checksfinder_structures(self.multiworld, self.player)
+        connection = Entrance(self.player, "New Board", menu)
+        menu.exits.append(connection)
+        connection.connect(board)
+        self.multiworld.regions += [menu, board]
 
     def fill_slot_data(self):
         slot_data = self._get_checksfinder_data()
diff --git a/worlds/dark_souls_3/__init__.py b/worlds/dark_souls_3/__init__.py
index 52399670..6d16e562 100644
--- a/worlds/dark_souls_3/__init__.py
+++ b/worlds/dark_souls_3/__init__.py
@@ -14,7 +14,7 @@ from .data.locations_data import location_dictionary, fire_link_shrine_table, \
     irithyll_dungeon_table, profaned_capital_table, anor_londo_table, lothric_castle_table, grand_archives_table, \
     untended_graves_table, archdragon_peak_table, firelink_shrine_bell_tower_table, progressive_locations
 from ..AutoWorld import World, WebWorld
-from BaseClasses import MultiWorld, Location, Region, Item, RegionType, Entrance, Tutorial, ItemClassification
+from BaseClasses import MultiWorld, Region, Item, Entrance, Tutorial, ItemClassification
 from ..generic.Rules import set_rule, add_item_rule
 
 
@@ -77,7 +77,6 @@ class DarkSouls3World(World):
         return DarkSouls3Item(name, item_classification, data, self.player)
 
     def create_regions(self):
-
         menu_region = self.create_region("Menu", progressive_locations)
 
         # Create all Vanilla regions of Dark Souls III
@@ -157,7 +156,7 @@ class DarkSouls3World(World):
 
     # For each region, add the associated locations retrieved from the corresponding location_table
     def create_region(self, region_name, location_table) -> Region:
-        new_region = Region(region_name, RegionType.Generic, region_name, self.player, self.multiworld)
+        new_region = Region(region_name, self.player, self.multiworld)
         if location_table:
             for name, address in location_table.items():
                 location = DarkSouls3Location(self.player, name, self.location_name_to_id[name], new_region)
diff --git a/worlds/dkc3/Regions.py b/worlds/dkc3/Regions.py
index f29c4eb2..ca6545ca 100644
--- a/worlds/dkc3/Regions.py
+++ b/worlds/dkc3/Regions.py
@@ -7,35 +7,35 @@ from .Names import LocationName, ItemName
 
 
 def create_regions(world, player: int, active_locations):
-    menu_region = create_region(world, player, active_locations, 'Menu', None, None)
+    menu_region = create_region(world, player, active_locations, 'Menu', None)
 
     overworld_1_region_locations = {}
     if world.goal[player] != "knautilus":
         overworld_1_region_locations.update({LocationName.banana_bird_mother: []})
     overworld_1_region = create_region(world, player, active_locations, LocationName.overworld_1_region,
-                                       overworld_1_region_locations, None)
+                                       overworld_1_region_locations)
 
     overworld_2_region_locations = {}
     overworld_2_region = create_region(world, player, active_locations, LocationName.overworld_2_region,
-                                       overworld_2_region_locations, None)
+                                       overworld_2_region_locations)
 
     overworld_3_region_locations = {}
     overworld_3_region = create_region(world, player, active_locations, LocationName.overworld_3_region,
-                                       overworld_3_region_locations, None)
+                                       overworld_3_region_locations)
 
     overworld_4_region_locations = {}
     overworld_4_region = create_region(world, player, active_locations, LocationName.overworld_4_region,
-                                       overworld_4_region_locations, None)
+                                       overworld_4_region_locations)
 
 
-    lake_orangatanga_region = create_region(world, player, active_locations, LocationName.lake_orangatanga_region, None, None)
-    kremwood_forest_region = create_region(world, player, active_locations, LocationName.kremwood_forest_region, None, None)
-    cotton_top_cove_region = create_region(world, player, active_locations, LocationName.cotton_top_cove_region, None, None)
-    mekanos_region = create_region(world, player, active_locations, LocationName.mekanos_region, None, None)
-    k3_region = create_region(world, player, active_locations, LocationName.k3_region, None, None)
-    razor_ridge_region = create_region(world, player, active_locations, LocationName.razor_ridge_region, None, None)
-    kaos_kore_region = create_region(world, player, active_locations, LocationName.kaos_kore_region, None, None)
-    krematoa_region = create_region(world, player, active_locations, LocationName.krematoa_region, None, None)
+    lake_orangatanga_region = create_region(world, player, active_locations, LocationName.lake_orangatanga_region, None)
+    kremwood_forest_region = create_region(world, player, active_locations, LocationName.kremwood_forest_region, None)
+    cotton_top_cove_region = create_region(world, player, active_locations, LocationName.cotton_top_cove_region, None)
+    mekanos_region = create_region(world, player, active_locations, LocationName.mekanos_region, None)
+    k3_region = create_region(world, player, active_locations, LocationName.k3_region, None)
+    razor_ridge_region = create_region(world, player, active_locations, LocationName.razor_ridge_region, None)
+    kaos_kore_region = create_region(world, player, active_locations, LocationName.kaos_kore_region, None)
+    krematoa_region = create_region(world, player, active_locations, LocationName.krematoa_region, None)
 
 
     lakeside_limbo_region_locations = {
@@ -47,7 +47,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         lakeside_limbo_region_locations[LocationName.lakeside_limbo_kong] = []
     lakeside_limbo_region = create_region(world, player, active_locations, LocationName.lakeside_limbo_region,
-                                          lakeside_limbo_region_locations, None)
+                                          lakeside_limbo_region_locations)
 
     doorstop_dash_region_locations = {
         LocationName.doorstop_dash_flag    : [0x65A, 1],
@@ -58,7 +58,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         doorstop_dash_region_locations[LocationName.doorstop_dash_kong] = []
     doorstop_dash_region = create_region(world, player, active_locations, LocationName.doorstop_dash_region,
-                                         doorstop_dash_region_locations, None)
+                                         doorstop_dash_region_locations)
 
     tidal_trouble_region_locations = {
         LocationName.tidal_trouble_flag    : [0x659, 1],
@@ -69,7 +69,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         tidal_trouble_region_locations[LocationName.tidal_trouble_kong] = []
     tidal_trouble_region = create_region(world, player, active_locations, LocationName.tidal_trouble_region,
-                                         tidal_trouble_region_locations, None)
+                                         tidal_trouble_region_locations)
 
     skiddas_row_region_locations = {
         LocationName.skiddas_row_flag    : [0x65D, 1],
@@ -80,7 +80,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         skiddas_row_region_locations[LocationName.skiddas_row_kong] = []
     skiddas_row_region = create_region(world, player, active_locations, LocationName.skiddas_row_region,
-                                       skiddas_row_region_locations, None)
+                                       skiddas_row_region_locations)
 
     murky_mill_region_locations = {
         LocationName.murky_mill_flag    : [0x65C, 1],
@@ -91,7 +91,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         murky_mill_region_locations[LocationName.murky_mill_kong] = []
     murky_mill_region = create_region(world, player, active_locations, LocationName.murky_mill_region,
-                                      murky_mill_region_locations, None)
+                                      murky_mill_region_locations)
 
     barrel_shield_bust_up_region_locations = {
         LocationName.barrel_shield_bust_up_flag     : [0x662, 1],
@@ -101,8 +101,9 @@ def create_regions(world, player: int, active_locations):
     }
     if world.kongsanity[player]:
         barrel_shield_bust_up_region_locations[LocationName.barrel_shield_bust_up_kong] = []
-    barrel_shield_bust_up_region = create_region(world, player, active_locations, LocationName.barrel_shield_bust_up_region,
-                                                 barrel_shield_bust_up_region_locations, None)
+    barrel_shield_bust_up_region = create_region(world, player, active_locations,
+                                                 LocationName.barrel_shield_bust_up_region,
+                                                 barrel_shield_bust_up_region_locations)
 
     riverside_race_region_locations = {
         LocationName.riverside_race_flag    : [0x664, 1],
@@ -113,7 +114,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         riverside_race_region_locations[LocationName.riverside_race_kong] = []
     riverside_race_region = create_region(world, player, active_locations, LocationName.riverside_race_region,
-                                          riverside_race_region_locations, None)
+                                          riverside_race_region_locations)
 
     squeals_on_wheels_region_locations = {
         LocationName.squeals_on_wheels_flag    : [0x65B, 1],
@@ -124,7 +125,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         squeals_on_wheels_region_locations[LocationName.squeals_on_wheels_kong] = []
     squeals_on_wheels_region = create_region(world, player, active_locations, LocationName.squeals_on_wheels_region,
-                                             squeals_on_wheels_region_locations, None)
+                                             squeals_on_wheels_region_locations)
 
     springin_spiders_region_locations = {
         LocationName.springin_spiders_flag    : [0x661, 1],
@@ -135,7 +136,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         springin_spiders_region_locations[LocationName.springin_spiders_kong] = []
     springin_spiders_region = create_region(world, player, active_locations, LocationName.springin_spiders_region,
-                                            springin_spiders_region_locations, None)
+                                            springin_spiders_region_locations)
 
     bobbing_barrel_brawl_region_locations = {
         LocationName.bobbing_barrel_brawl_flag     : [0x666, 1],
@@ -145,8 +146,9 @@ def create_regions(world, player: int, active_locations):
     }
     if world.kongsanity[player]:
         bobbing_barrel_brawl_region_locations[LocationName.bobbing_barrel_brawl_kong] = []
-    bobbing_barrel_brawl_region = create_region(world, player, active_locations, LocationName.bobbing_barrel_brawl_region,
-                                                bobbing_barrel_brawl_region_locations, None)
+    bobbing_barrel_brawl_region = create_region(world, player, active_locations,
+                                                LocationName.bobbing_barrel_brawl_region,
+                                                bobbing_barrel_brawl_region_locations)
 
     bazzas_blockade_region_locations = {
         LocationName.bazzas_blockade_flag    : [0x667, 1],
@@ -157,7 +159,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         bazzas_blockade_region_locations[LocationName.bazzas_blockade_kong] = []
     bazzas_blockade_region = create_region(world, player, active_locations, LocationName.bazzas_blockade_region,
-                                           bazzas_blockade_region_locations, None)
+                                           bazzas_blockade_region_locations)
 
     rocket_barrel_ride_region_locations = {
         LocationName.rocket_barrel_ride_flag    : [0x66A, 1],
@@ -168,7 +170,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         rocket_barrel_ride_region_locations[LocationName.rocket_barrel_ride_kong] = []
     rocket_barrel_ride_region = create_region(world, player, active_locations, LocationName.rocket_barrel_ride_region,
-                                              rocket_barrel_ride_region_locations, None)
+                                              rocket_barrel_ride_region_locations)
 
     kreeping_klasps_region_locations = {
         LocationName.kreeping_klasps_flag     : [0x658, 1],
@@ -179,7 +181,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         kreeping_klasps_region_locations[LocationName.kreeping_klasps_kong] = []
     kreeping_klasps_region = create_region(world, player, active_locations, LocationName.kreeping_klasps_region,
-                                           kreeping_klasps_region_locations, None)
+                                           kreeping_klasps_region_locations)
 
     tracker_barrel_trek_region_locations = {
         LocationName.tracker_barrel_trek_flag    : [0x66B, 1],
@@ -190,7 +192,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         tracker_barrel_trek_region_locations[LocationName.tracker_barrel_trek_kong] = []
     tracker_barrel_trek_region = create_region(world, player, active_locations, LocationName.tracker_barrel_trek_region,
-                                               tracker_barrel_trek_region_locations, None)
+                                               tracker_barrel_trek_region_locations)
 
     fish_food_frenzy_region_locations = {
         LocationName.fish_food_frenzy_flag    : [0x668, 1],
@@ -201,7 +203,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         fish_food_frenzy_region_locations[LocationName.fish_food_frenzy_kong] = []
     fish_food_frenzy_region = create_region(world, player, active_locations, LocationName.fish_food_frenzy_region,
-                                            fish_food_frenzy_region_locations, None)
+                                            fish_food_frenzy_region_locations)
 
     fire_ball_frenzy_region_locations = {
         LocationName.fire_ball_frenzy_flag    : [0x66D, 1],
@@ -212,7 +214,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         fire_ball_frenzy_region_locations[LocationName.fire_ball_frenzy_kong] = []
     fire_ball_frenzy_region = create_region(world, player, active_locations, LocationName.fire_ball_frenzy_region,
-                                            fire_ball_frenzy_region_locations, None)
+                                            fire_ball_frenzy_region_locations)
 
     demolition_drain_pipe_region_locations = {
         LocationName.demolition_drain_pipe_flag    : [0x672, 1],
@@ -222,8 +224,9 @@ def create_regions(world, player: int, active_locations):
     }
     if world.kongsanity[player]:
         demolition_drain_pipe_region_locations[LocationName.demolition_drain_pipe_kong] = []
-    demolition_drain_pipe_region = create_region(world, player, active_locations, LocationName.demolition_drain_pipe_region,
-                                                 demolition_drain_pipe_region_locations, None)
+    demolition_drain_pipe_region = create_region(world, player, active_locations,
+                                                 LocationName.demolition_drain_pipe_region,
+                                                 demolition_drain_pipe_region_locations)
 
     ripsaw_rage_region_locations = {
         LocationName.ripsaw_rage_flag    : [0x660, 1],
@@ -234,7 +237,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         ripsaw_rage_region_locations[LocationName.ripsaw_rage_kong] = []
     ripsaw_rage_region = create_region(world, player, active_locations, LocationName.ripsaw_rage_region,
-                                       ripsaw_rage_region_locations, None)
+                                       ripsaw_rage_region_locations)
 
     blazing_bazookas_region_locations = {
         LocationName.blazing_bazookas_flag    : [0x66E, 1],
@@ -245,7 +248,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         blazing_bazookas_region_locations[LocationName.blazing_bazookas_kong] = []
     blazing_bazookas_region = create_region(world, player, active_locations, LocationName.blazing_bazookas_region,
-                                            blazing_bazookas_region_locations, None)
+                                            blazing_bazookas_region_locations)
 
     low_g_labyrinth_region_locations = {
         LocationName.low_g_labyrinth_flag     : [0x670, 1],
@@ -256,7 +259,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         low_g_labyrinth_region_locations[LocationName.low_g_labyrinth_kong] = []
     low_g_labyrinth_region = create_region(world, player, active_locations, LocationName.low_g_labyrinth_region,
-                                           low_g_labyrinth_region_locations, None)
+                                           low_g_labyrinth_region_locations)
 
     krevice_kreepers_region_locations = {
         LocationName.krevice_kreepers_flag    : [0x673, 1],
@@ -267,7 +270,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         krevice_kreepers_region_locations[LocationName.krevice_kreepers_kong] = []
     krevice_kreepers_region = create_region(world, player, active_locations, LocationName.krevice_kreepers_region,
-                                            krevice_kreepers_region_locations, None)
+                                            krevice_kreepers_region_locations)
 
     tearaway_toboggan_region_locations = {
         LocationName.tearaway_toboggan_flag    : [0x65F, 1],
@@ -278,7 +281,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         tearaway_toboggan_region_locations[LocationName.tearaway_toboggan_kong] = []
     tearaway_toboggan_region = create_region(world, player, active_locations, LocationName.tearaway_toboggan_region,
-                                             tearaway_toboggan_region_locations, None)
+                                             tearaway_toboggan_region_locations)
 
     barrel_drop_bounce_region_locations = {
         LocationName.barrel_drop_bounce_flag    : [0x66C, 1],
@@ -289,7 +292,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         barrel_drop_bounce_region_locations[LocationName.barrel_drop_bounce_kong] = []
     barrel_drop_bounce_region = create_region(world, player, active_locations, LocationName.barrel_drop_bounce_region,
-                                              barrel_drop_bounce_region_locations, None)
+                                              barrel_drop_bounce_region_locations)
 
     krack_shot_kroc_region_locations = {
         LocationName.krack_shot_kroc_flag    : [0x66F, 1],
@@ -300,7 +303,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         krack_shot_kroc_region_locations[LocationName.krack_shot_kroc_kong] = []
     krack_shot_kroc_region = create_region(world, player, active_locations, LocationName.krack_shot_kroc_region,
-                                           krack_shot_kroc_region_locations, None)
+                                           krack_shot_kroc_region_locations)
 
     lemguin_lunge_region_locations = {
         LocationName.lemguin_lunge_flag    : [0x65E, 1],
@@ -311,7 +314,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         lemguin_lunge_region_locations[LocationName.lemguin_lunge_kong] = []
     lemguin_lunge_region = create_region(world, player, active_locations, LocationName.lemguin_lunge_region,
-                                         lemguin_lunge_region_locations, None)
+                                         lemguin_lunge_region_locations)
 
     buzzer_barrage_region_locations = {
         LocationName.buzzer_barrage_flag    : [0x676, 1],
@@ -322,7 +325,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         buzzer_barrage_region_locations[LocationName.buzzer_barrage_kong] = []
     buzzer_barrage_region = create_region(world, player, active_locations, LocationName.buzzer_barrage_region,
-                                          buzzer_barrage_region_locations, None)
+                                          buzzer_barrage_region_locations)
 
     kong_fused_cliffs_region_locations = {
         LocationName.kong_fused_cliffs_flag    : [0x674, 1],
@@ -333,7 +336,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         kong_fused_cliffs_region_locations[LocationName.kong_fused_cliffs_kong] = []
     kong_fused_cliffs_region = create_region(world, player, active_locations, LocationName.kong_fused_cliffs_region,
-                                             kong_fused_cliffs_region_locations, None)
+                                             kong_fused_cliffs_region_locations)
 
     floodlit_fish_region_locations = {
         LocationName.floodlit_fish_flag    : [0x669, 1],
@@ -344,7 +347,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         floodlit_fish_region_locations[LocationName.floodlit_fish_kong] = []
     floodlit_fish_region = create_region(world, player, active_locations, LocationName.floodlit_fish_region,
-                                         floodlit_fish_region_locations, None)
+                                         floodlit_fish_region_locations)
 
     pothole_panic_region_locations = {
         LocationName.pothole_panic_flag    : [0x677, 1],
@@ -355,7 +358,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         pothole_panic_region_locations[LocationName.pothole_panic_kong] = []
     pothole_panic_region = create_region(world, player, active_locations, LocationName.pothole_panic_region,
-                                         pothole_panic_region_locations, None)
+                                         pothole_panic_region_locations)
 
     ropey_rumpus_region_locations = {
         LocationName.ropey_rumpus_flag    : [0x675, 1],
@@ -366,7 +369,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         ropey_rumpus_region_locations[LocationName.ropey_rumpus_kong] = []
     ropey_rumpus_region = create_region(world, player, active_locations, LocationName.ropey_rumpus_region,
-                                        ropey_rumpus_region_locations, None)
+                                        ropey_rumpus_region_locations)
 
     konveyor_rope_clash_region_locations = {
         LocationName.konveyor_rope_clash_flag     : [0x657, 1],
@@ -377,7 +380,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         konveyor_rope_clash_region_locations[LocationName.konveyor_rope_clash_kong] = []
     konveyor_rope_clash_region = create_region(world, player, active_locations, LocationName.konveyor_rope_clash_region,
-                                               konveyor_rope_clash_region_locations, None)
+                                               konveyor_rope_clash_region_locations)
 
     creepy_caverns_region_locations = {
         LocationName.creepy_caverns_flag    : [0x678, 1],
@@ -388,7 +391,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         creepy_caverns_region_locations[LocationName.creepy_caverns_kong] = []
     creepy_caverns_region = create_region(world, player, active_locations, LocationName.creepy_caverns_region,
-                                          creepy_caverns_region_locations, None)
+                                          creepy_caverns_region_locations)
 
     lightning_lookout_region_locations = {
         LocationName.lightning_lookout_flag     : [0x665, 1],
@@ -399,7 +402,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         lightning_lookout_region_locations[LocationName.lightning_lookout_kong] = []
     lightning_lookout_region = create_region(world, player, active_locations, LocationName.lightning_lookout_region,
-                                             lightning_lookout_region_locations, None)
+                                             lightning_lookout_region_locations)
 
     koindozer_klamber_region_locations = {
         LocationName.koindozer_klamber_flag     : [0x679, 1],
@@ -410,7 +413,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         koindozer_klamber_region_locations[LocationName.koindozer_klamber_kong] = []
     koindozer_klamber_region = create_region(world, player, active_locations, LocationName.koindozer_klamber_region,
-                                             koindozer_klamber_region_locations, None)
+                                             koindozer_klamber_region_locations)
 
     poisonous_pipeline_region_locations = {
         LocationName.poisonous_pipeline_flag    : [0x671, 1],
@@ -421,7 +424,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         poisonous_pipeline_region_locations[LocationName.poisonous_pipeline_kong] = []
     poisonous_pipeline_region = create_region(world, player, active_locations, LocationName.poisonous_pipeline_region,
-                                              poisonous_pipeline_region_locations, None)
+                                              poisonous_pipeline_region_locations)
 
     stampede_sprint_region_locations = {
         LocationName.stampede_sprint_flag     : [0x67B, 1],
@@ -433,7 +436,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         stampede_sprint_region_locations[LocationName.stampede_sprint_kong] = []
     stampede_sprint_region = create_region(world, player, active_locations, LocationName.stampede_sprint_region,
-                                           stampede_sprint_region_locations, None)
+                                           stampede_sprint_region_locations)
 
     criss_cross_cliffs_region_locations = {
         LocationName.criss_cross_cliffs_flag    : [0x67C, 1],
@@ -444,7 +447,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         criss_cross_cliffs_region_locations[LocationName.criss_cross_cliffs_kong] = []
     criss_cross_cliffs_region = create_region(world, player, active_locations, LocationName.criss_cross_cliffs_region,
-                                              criss_cross_cliffs_region_locations, None)
+                                              criss_cross_cliffs_region_locations)
 
     tyrant_twin_tussle_region_locations = {
         LocationName.tyrant_twin_tussle_flag    : [0x67D, 1],
@@ -456,7 +459,7 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         tyrant_twin_tussle_region_locations[LocationName.tyrant_twin_tussle_kong] = []
     tyrant_twin_tussle_region = create_region(world, player, active_locations, LocationName.tyrant_twin_tussle_region,
-                                              tyrant_twin_tussle_region_locations, None)
+                                              tyrant_twin_tussle_region_locations)
 
     swoopy_salvo_region_locations = {
         LocationName.swoopy_salvo_flag    : [0x663, 1],
@@ -468,140 +471,140 @@ def create_regions(world, player: int, active_locations):
     if world.kongsanity[player]:
         swoopy_salvo_region_locations[LocationName.swoopy_salvo_kong] = []
     swoopy_salvo_region = create_region(world, player, active_locations, LocationName.swoopy_salvo_region,
-                                        swoopy_salvo_region_locations, None)
+                                        swoopy_salvo_region_locations)
 
     rocket_rush_region_locations = {
         LocationName.rocket_rush_flag : [0x67E, 1],
         LocationName.rocket_rush_dk   : [0x67E, 5],
     }
     rocket_rush_region = create_region(world, player, active_locations, LocationName.rocket_rush_region,
-                                       rocket_rush_region_locations, None)
+                                       rocket_rush_region_locations)
 
     belchas_barn_region_locations = {
         LocationName.belchas_barn: [0x64F, 1],
     }
     belchas_barn_region = create_region(world, player, active_locations, LocationName.belchas_barn_region,
-                                        belchas_barn_region_locations, None)
+                                        belchas_barn_region_locations)
 
     arichs_ambush_region_locations = {
         LocationName.arichs_ambush: [0x650, 1],
     }
     arichs_ambush_region = create_region(world, player, active_locations, LocationName.arichs_ambush_region,
-                                         arichs_ambush_region_locations, None)
+                                         arichs_ambush_region_locations)
 
     squirts_showdown_region_locations = {
         LocationName.squirts_showdown: [0x651, 1],
     }
     squirts_showdown_region = create_region(world, player, active_locations, LocationName.squirts_showdown_region,
-                                            squirts_showdown_region_locations, None)
+                                            squirts_showdown_region_locations)
 
     kaos_karnage_region_locations = {
         LocationName.kaos_karnage: [0x652, 1],
     }
     kaos_karnage_region = create_region(world, player, active_locations, LocationName.kaos_karnage_region,
-                                        kaos_karnage_region_locations, None)
+                                        kaos_karnage_region_locations)
 
     bleaks_house_region_locations = {
         LocationName.bleaks_house: [0x653, 1],
     }
     bleaks_house_region = create_region(world, player, active_locations, LocationName.bleaks_house_region,
-                                        bleaks_house_region_locations, None)
+                                        bleaks_house_region_locations)
 
     barboss_barrier_region_locations = {
         LocationName.barboss_barrier: [0x654, 1],
     }
     barboss_barrier_region = create_region(world, player, active_locations, LocationName.barboss_barrier_region,
-                                           barboss_barrier_region_locations, None)
+                                           barboss_barrier_region_locations)
 
     kastle_kaos_region_locations = {
         LocationName.kastle_kaos: [0x655, 1],
     }
     kastle_kaos_region = create_region(world, player, active_locations, LocationName.kastle_kaos_region,
-                                       kastle_kaos_region_locations, None)
+                                       kastle_kaos_region_locations)
 
     knautilus_region_locations = {
         LocationName.knautilus: [0x656, 1],
     }
     knautilus_region = create_region(world, player, active_locations, LocationName.knautilus_region,
-                                     knautilus_region_locations, None)
+                                     knautilus_region_locations)
 
     belchas_burrow_region_locations = {
         LocationName.belchas_burrow: [0x647, 1],
     }
     belchas_burrow_region = create_region(world, player, active_locations, LocationName.belchas_burrow_region,
-                                          belchas_burrow_region_locations, None)
+                                          belchas_burrow_region_locations)
 
     kong_cave_region_locations = {
         LocationName.kong_cave: [0x645, 1],
     }
     kong_cave_region = create_region(world, player, active_locations, LocationName.kong_cave_region,
-                                     kong_cave_region_locations, None)
+                                     kong_cave_region_locations)
 
     undercover_cove_region_locations = {
         LocationName.undercover_cove: [0x644, 1],
     }
     undercover_cove_region = create_region(world, player, active_locations, LocationName.undercover_cove_region,
-                                          undercover_cove_region_locations, None)
+                                           undercover_cove_region_locations)
 
     ks_cache_region_locations = {
         LocationName.ks_cache: [0x642, 1],
     }
     ks_cache_region = create_region(world, player, active_locations, LocationName.ks_cache_region,
-                                    ks_cache_region_locations, None)
+                                    ks_cache_region_locations)
 
     hill_top_hoard_region_locations = {
         LocationName.hill_top_hoard: [0x643, 1],
     }
     hill_top_hoard_region = create_region(world, player, active_locations, LocationName.hill_top_hoard_region,
-                                          hill_top_hoard_region_locations, None)
+                                          hill_top_hoard_region_locations)
 
     bounty_beach_region_locations = {
         LocationName.bounty_beach: [0x646, 1],
     }
     bounty_beach_region = create_region(world, player, active_locations, LocationName.bounty_beach_region,
-                                        bounty_beach_region_locations, None)
+                                        bounty_beach_region_locations)
 
     smugglers_cove_region_locations = {
         LocationName.smugglers_cove: [0x648, 1],
     }
     smugglers_cove_region = create_region(world, player, active_locations, LocationName.smugglers_cove_region,
-                                          smugglers_cove_region_locations, None)
+                                          smugglers_cove_region_locations)
 
     arichs_hoard_region_locations = {
         LocationName.arichs_hoard: [0x649, 1],
     }
     arichs_hoard_region = create_region(world, player, active_locations, LocationName.arichs_hoard_region,
-                                        arichs_hoard_region_locations, None)
+                                        arichs_hoard_region_locations)
 
     bounty_bay_region_locations = {
         LocationName.bounty_bay: [0x64A, 1],
     }
     bounty_bay_region = create_region(world, player, active_locations, LocationName.bounty_bay_region,
-                                      bounty_bay_region_locations, None)
+                                      bounty_bay_region_locations)
 
     sky_high_secret_region_locations = {}
     if False:#world.include_trade_sequence[player]:
         sky_high_secret_region_locations[LocationName.sky_high_secret] = [0x64B, 1]
     sky_high_secret_region = create_region(world, player, active_locations, LocationName.sky_high_secret_region,
-                                           sky_high_secret_region_locations, None)
+                                           sky_high_secret_region_locations)
 
     glacial_grotto_region_locations = {
         LocationName.glacial_grotto: [0x64C, 1],
     }
     glacial_grotto_region = create_region(world, player, active_locations, LocationName.glacial_grotto_region,
-                                          glacial_grotto_region_locations, None)
+                                          glacial_grotto_region_locations)
 
     cifftop_cache_region_locations = {}
     if False:#world.include_trade_sequence[player]:
         cifftop_cache_region_locations[LocationName.cifftop_cache] = [0x64D, 1]
     cifftop_cache_region = create_region(world, player, active_locations, LocationName.cifftop_cache_region,
-                                         cifftop_cache_region_locations, None)
+                                         cifftop_cache_region_locations)
 
     sewer_stockpile_region_locations = {
         LocationName.sewer_stockpile: [0x64E, 1],
     }
     sewer_stockpile_region = create_region(world, player, active_locations, LocationName.sewer_stockpile_region,
-                                           sewer_stockpile_region_locations, None)
+                                           sewer_stockpile_region_locations)
 
 
     # Set up the regions correctly.
@@ -710,20 +713,17 @@ def create_regions(world, player: int, active_locations):
 
         blizzard_region_locations[LocationName.blizzards_basecamp] = [0x625, 4, True]
 
-    bazaar_region = create_region(world, player, active_locations, LocationName.bazaar_region,
-                                  bazaar_region_locations, None)
+    bazaar_region = create_region(world, player, active_locations, LocationName.bazaar_region, bazaar_region_locations)
     bramble_region = create_region(world, player, active_locations, LocationName.bramble_region,
-                                   bramble_region_locations, None)
+                                   bramble_region_locations)
     flower_spot_region = create_region(world, player, active_locations, LocationName.flower_spot_region,
-                                       flower_spot_region_locations, None)
-    barter_region = create_region(world, player, active_locations, LocationName.barter_region,
-                                  barter_region_locations, None)
+                                       flower_spot_region_locations)
+    barter_region = create_region(world, player, active_locations, LocationName.barter_region, barter_region_locations)
     barnacle_region = create_region(world, player, active_locations, LocationName.barnacle_region,
-                                    barnacle_region_locations, None)
-    blue_region = create_region(world, player, active_locations, LocationName.blue_region,
-                                blue_region_locations, None)
+                                    barnacle_region_locations)
+    blue_region = create_region(world, player, active_locations, LocationName.blue_region, blue_region_locations)
     blizzard_region = create_region(world, player, active_locations, LocationName.blizzard_region,
-                                    blizzard_region_locations, None)
+                                    blizzard_region_locations)
 
     world.regions += [
         bazaar_region,
@@ -910,10 +910,9 @@ def connect_regions(world, player, level_list):
                 lambda state: (state.has(ItemName.krematoa_cog, player, 5)))
 
 
-def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None, exits=None):
+def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
     # Shamelessly stolen from the ROR2 definition
-    ret = Region(name, None, name, player)
-    ret.multiworld = world
+    ret = Region(name, player, world)
     if locations:
         for locationName, locationData in locations.items():
             loc_id = active_locations.get(locationName, 0)
@@ -924,9 +923,6 @@ def create_region(world: MultiWorld, player: int, active_locations, name: str, l
 
                 location = DKC3Location(player, locationName, loc_id, ret, loc_byte, loc_bit, loc_invert)
                 ret.locations.append(location)
-    if exits:
-        for exit in exits:
-            ret.exits.append(Entrance(player, exit, ret))
 
     return ret
 
diff --git a/worlds/factorio/__init__.py b/worlds/factorio/__init__.py
index 6b4e5c86..e691ac61 100644
--- a/worlds/factorio/__init__.py
+++ b/worlds/factorio/__init__.py
@@ -4,7 +4,7 @@ import collections
 import logging
 import typing
 
-from BaseClasses import Region, Entrance, Location, Item, RegionType, Tutorial, ItemClassification
+from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification
 from worlds.AutoWorld import World, WebWorld
 from .Mod import generate_mod
 from .Options import factorio_options, MaxSciencePack, Silo, Satellite, TechTreeInformation, Goal, TechCostDistribution
@@ -81,10 +81,10 @@ class Factorio(World):
     def create_regions(self):
         player = self.player
         random = self.multiworld.random
-        menu = Region("Menu", RegionType.Generic, "Menu", player, self.multiworld)
+        menu = Region("Menu", player, self.multiworld)
         crash = Entrance(player, "Crash Land", menu)
         menu.exits.append(crash)
-        nauvis = Region("Nauvis", RegionType.Generic, "Nauvis", player, self.multiworld)
+        nauvis = Region("Nauvis", player, self.multiworld)
 
         location_count = len(base_tech_table) - len(useless_technologies) - self.skip_silo + \
                          self.multiworld.evolution_traps[player].value + self.multiworld.attack_traps[player].value
diff --git a/worlds/ff1/Locations.py b/worlds/ff1/Locations.py
index 6b733c70..b0353f94 100644
--- a/worlds/ff1/Locations.py
+++ b/worlds/ff1/Locations.py
@@ -2,7 +2,7 @@ import json
 from pathlib import Path
 from typing import Dict, NamedTuple, List, Optional
 
-from BaseClasses import Region, RegionType, Location
+from BaseClasses import Region, Location, MultiWorld
 
 EventId: Optional[int] = None
 CHAOS_TERMINATED_EVENT = 'Terminated Chaos'
@@ -43,8 +43,8 @@ class FF1Locations:
 
     @staticmethod
     def create_menu_region(player: int, locations: Dict[str, int],
-                           rules: Dict[str, List[List[str]]]) -> Region:
-        menu_region = Region("Menu", RegionType.Generic, "Menu", player)
+                           rules: Dict[str, List[List[str]]], world: MultiWorld) -> Region:
+        menu_region = Region("Menu", player, world)
         for name, address in locations.items():
             location = Location(player, name, address, menu_region)
             ## TODO REMOVE WHEN LOGIC FOR TOFR IS CORRECT
diff --git a/worlds/ff1/__init__.py b/worlds/ff1/__init__.py
index 08f534db..824fa1d3 100644
--- a/worlds/ff1/__init__.py
+++ b/worlds/ff1/__init__.py
@@ -51,8 +51,7 @@ class FF1World(World):
     def create_regions(self):
         locations = get_options(self.multiworld, 'locations', self.player)
         rules = get_options(self.multiworld, 'rules', self.player)
-        menu_region = self.ff1_locations.create_menu_region(self.player, locations, rules)
-        menu_region.multiworld = self.multiworld
+        menu_region = self.ff1_locations.create_menu_region(self.player, locations, rules, self.multiworld)
         terminated_event = Location(self.player, CHAOS_TERMINATED_EVENT, EventId, menu_region)
         terminated_item = Item(CHAOS_TERMINATED_EVENT, ItemClassification.progression, EventId, self.player)
         terminated_event.place_locked_item(terminated_item)
diff --git a/worlds/hk/__init__.py b/worlds/hk/__init__.py
index 5993d1b3..aeb7bf50 100644
--- a/worlds/hk/__init__.py
+++ b/worlds/hk/__init__.py
@@ -17,7 +17,7 @@ from .ExtractedData import locations, starts, multi_locations, location_to_regio
     event_names, item_effects, connectors, one_ways, vanilla_shop_costs, vanilla_location_costs
 from .Charms import names as charm_names
 
-from BaseClasses import Region, Entrance, Location, MultiWorld, Item, RegionType, LocationProgressType, Tutorial, ItemClassification
+from BaseClasses import Region, Entrance, Location, MultiWorld, Item, LocationProgressType, Tutorial, ItemClassification
 from ..AutoWorld import World, LogicMixin, WebWorld
 
 path_of_pain_locations = {
@@ -585,17 +585,13 @@ class HKWorld(World):
         return self.multiworld.random.choice(self.cached_filler_items[self.player])
 
 
-def create_region(world: MultiWorld, player: int, name: str, location_names=None, exits=None) -> Region:
-    ret = Region(name, RegionType.Generic, name, player)
-    ret.multiworld = world
+def create_region(world: MultiWorld, player: int, name: str, location_names=None) -> Region:
+    ret = Region(name, player, world)
     if location_names:
         for location in location_names:
             loc_id = HKWorld.location_name_to_id.get(location, None)
             location = HKLocation(player, location, loc_id, ret)
             ret.locations.append(location)
-    if exits:
-        for exit in exits:
-            ret.exits.append(Entrance(player, exit, ret))
     return ret
 
 
diff --git a/worlds/hylics2/__init__.py b/worlds/hylics2/__init__.py
index f26af4be..b5fede32 100644
--- a/worlds/hylics2/__init__.py
+++ b/worlds/hylics2/__init__.py
@@ -1,6 +1,6 @@
 import random
 from typing import Dict, Any
-from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification, RegionType
+from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification
 from worlds.generic.Rules import set_rule
 from ..AutoWorld import World, WebWorld
 from . import Items, Locations, Options, Rules, Exits
@@ -163,24 +163,24 @@ class Hylics2World(World):
     def create_regions(self) -> None:
 
         region_table: Dict[int, Region] = {
-            0: Region("Menu", RegionType.Generic, "Menu", self.player, self.multiworld),
-            1: Region("Afterlife", RegionType.Generic, "Afterlife", self.player, self.multiworld),
-            2: Region("Waynehouse", RegionType.Generic, "Waynehouse", self.player, self.multiworld),
-            3: Region("World", RegionType.Generic, "World", self.player, self.multiworld),
-            4: Region("New Muldul", RegionType.Generic, "New Muldul", self.player, self.multiworld),
-            5: Region("New Muldul Vault", RegionType.Generic, "New Muldul Vault", self.player, self.multiworld),
-            6: Region("Viewax", RegionType.Generic, "Viewax's Edifice", self.player, self.multiworld),
-            7: Region("Airship", RegionType.Generic, "Airship", self.player, self.multiworld),
-            8: Region("Arcade Island", RegionType.Generic, "Arcade Island", self.player, self.multiworld),
-            9: Region("TV Island", RegionType.Generic, "TV Island", self.player, self.multiworld),
-            10: Region("Juice Ranch", RegionType.Generic, "Juice Ranch", self.player, self.multiworld),
-            11: Region("Shield Facility", RegionType.Generic, "Shield Facility", self.player, self.multiworld),
-            12: Region("Worm Pod", RegionType.Generic, "Worm Pod", self.player, self.multiworld),
-            13: Region("Foglast", RegionType.Generic, "Foglast", self.player, self.multiworld),
-            14: Region("Drill Castle", RegionType.Generic, "Drill Castle", self.player, self.multiworld),
-            15: Region("Sage Labyrinth", RegionType.Generic, "Sage Labyrinth", self.player, self.multiworld),
-            16: Region("Sage Airship", RegionType.Generic, "Sage Airship", self.player, self.multiworld),
-            17: Region("Hylemxylem", RegionType.Generic, "Hylemxylem", self.player, self.multiworld)
+            0: Region("Menu", self.player, self.multiworld),
+            1: Region("Afterlife", self.player, self.multiworld),
+            2: Region("Waynehouse", self.player, self.multiworld),
+            3: Region("World", self.player, self.multiworld),
+            4: Region("New Muldul", self.player, self.multiworld),
+            5: Region("New Muldul Vault", self.player, self.multiworld),
+            6: Region("Viewax", self.player, self.multiworld, "Viewax's Edifice"),
+            7: Region("Airship", self.player, self.multiworld),
+            8: Region("Arcade Island", self.player, self.multiworld),
+            9: Region("TV Island", self.player, self.multiworld),
+            10: Region("Juice Ranch", self.player, self.multiworld),
+            11: Region("Shield Facility", self.player, self.multiworld),
+            12: Region("Worm Pod", self.player, self.multiworld),
+            13: Region("Foglast", self.player, self.multiworld),
+            14: Region("Drill Castle", self.player, self.multiworld),
+            15: Region("Sage Labyrinth", self.player, self.multiworld),
+            16: Region("Sage Airship", self.player, self.multiworld),
+            17: Region("Hylemxylem", self.player, self.multiworld)
         }
         
         # create regions from table
diff --git a/worlds/lufia2ac/__init__.py b/worlds/lufia2ac/__init__.py
index ae82c4c5..da1516c0 100644
--- a/worlds/lufia2ac/__init__.py
+++ b/worlds/lufia2ac/__init__.py
@@ -4,7 +4,7 @@ import os
 from enum import IntFlag
 from typing import Any, ClassVar, Dict, List, Optional, Set, Tuple
 
-from BaseClasses import Entrance, Item, ItemClassification, MultiWorld, Region, RegionType, Tutorial
+from BaseClasses import Entrance, Item, ItemClassification, MultiWorld, Region, Tutorial
 from Main import __version__
 from Options import AssembleOptions
 from worlds.AutoWorld import WebWorld, World
@@ -128,11 +128,11 @@ class L2ACWorld(World):
             self.default_party.value = DefaultParty.default
 
     def create_regions(self) -> None:
-        menu = Region("Menu", RegionType.Generic, "Menu", self.player, self.multiworld)
+        menu = Region("Menu", self.player, self.multiworld)
         menu.exits.append(Entrance(self.player, "AncientDungeonEntrance", menu))
         self.multiworld.regions.append(menu)
 
-        ancient_dungeon = Region("AncientDungeon", RegionType.Generic, "Ancient Dungeon", self.player, self.multiworld)
+        ancient_dungeon = Region("AncientDungeon", self.player, self.multiworld, "Ancient Dungeon")
         ancient_dungeon.exits.append(Entrance(self.player, "FinalFloorEntrance", ancient_dungeon))
         item_count: int = self.blue_chest_count
         if self.shuffle_capsule_monsters:
@@ -152,7 +152,7 @@ class L2ACWorld(World):
         ancient_dungeon.locations.append(treasures)
         self.multiworld.regions.append(ancient_dungeon)
 
-        final_floor = Region("FinalFloor", RegionType.Generic, "Ancient Cave Final Floor", self.player, self.multiworld)
+        final_floor = Region("FinalFloor", self.player, self.multiworld, "Ancient Cave Final Floor")
         ff_reached = L2ACLocation(self.player, "Final Floor reached", None, final_floor)
         ff_reached.place_locked_item(L2ACItem("Final Floor access", ItemClassification.progression, None, self.player))
         final_floor.locations.append(ff_reached)
diff --git a/worlds/meritous/Regions.py b/worlds/meritous/Regions.py
index 2fdafb69..2c66a024 100644
--- a/worlds/meritous/Regions.py
+++ b/worlds/meritous/Regions.py
@@ -3,7 +3,7 @@
 # This software is released under the MIT License.
 # https://opensource.org/licenses/MIT
 
-from BaseClasses import MultiWorld, Region, Entrance, RegionType
+from BaseClasses import MultiWorld, Region, Entrance
 from .Locations import MeritousLocation, location_table
 
 meritous_regions = ["Meridian", "Ataraxia", "Merodach", "Endgame"]
@@ -23,7 +23,7 @@ def create_regions(world: MultiWorld, player: int):
         if x == 0:
             insidename = "Menu"
 
-        region = Region(insidename, RegionType.Generic, fullname, player, world)
+        region = Region(insidename, player, world)
         for store in ["Alpha Cache", "Beta Cache", "Gamma Cache", "Reward Chest"]:
             for y in range(1, 7):
                 loc_name = f"{store} {(x * 6) + y}"
@@ -45,7 +45,7 @@ def create_regions(world: MultiWorld, player: int):
         world.regions += [region]
 
     for x, boss in enumerate(bosses):
-        boss_region = Region(boss, RegionType.Generic, boss, player, world)
+        boss_region = Region(boss, player, world)
         boss_region.locations += [
             MeritousLocation(player, boss, location_table[boss], boss_region),
             MeritousLocation(player, f"{boss} Defeat", None, boss_region)
@@ -53,14 +53,12 @@ def create_regions(world: MultiWorld, player: int):
         boss_region.exits = _generate_entrances(player, [f"To {regions[x + 1]} Quarter"], boss_region)
         world.regions.append(boss_region)
 
-    region_final_boss = Region(
-        "Final Boss", RegionType.Generic, "Final Boss", player, world)
+    region_final_boss = Region("Final Boss", player, world)
     region_final_boss.locations = [MeritousLocation(
         player, "Wervyn Anixil", None, region_final_boss)]
     world.regions.append(region_final_boss)
 
-    region_tfb = Region("True Final Boss", RegionType.Generic,
-                        "True Final Boss", player, world)
+    region_tfb = Region("True Final Boss", player, world)
     region_tfb.locations = [MeritousLocation(
         player, "Wervyn Anixil?", None, region_tfb)]
     world.regions.append(region_tfb)
diff --git a/worlds/minecraft/__init__.py b/worlds/minecraft/__init__.py
index c0a034f2..cbd274ba 100644
--- a/worlds/minecraft/__init__.py
+++ b/worlds/minecraft/__init__.py
@@ -137,7 +137,7 @@ class MinecraftWorld(World):
 
     def create_regions(self):
         def MCRegion(region_name: str, exits=[]):
-            ret = Region(region_name, None, region_name, self.player, self.multiworld)
+            ret = Region(region_name, self.player, self.multiworld)
             ret.locations = [MinecraftAdvancement(self.player, loc_name, loc_data.id, ret)
                 for loc_name, loc_data in advancement_table.items()
                 if loc_data.region == region_name]
diff --git a/worlds/oot/Hints.py b/worlds/oot/Hints.py
index dfed0b4d..35451f3d 100644
--- a/worlds/oot/Hints.py
+++ b/worlds/oot/Hints.py
@@ -460,7 +460,7 @@ def get_hint_area(spot):
         
             if parent_region.dungeon:
                 return parent_region.dungeon.hint_text
-            elif parent_region.hint_text and (spot.parent_region.name == 'Root' or parent_region.name != 'Root'):
+            elif parent_region.hint and (spot.parent_region.name == 'Root' or parent_region.name != 'Root'):
                 return parent_region.hint_text
 
             spot_queue.extend(list(filter(lambda ent: ent not in already_checked, parent_region.entrances)))
diff --git a/worlds/oot/Regions.py b/worlds/oot/Regions.py
index 3fa946ba..5d5cc9b1 100644
--- a/worlds/oot/Regions.py
+++ b/worlds/oot/Regions.py
@@ -1,6 +1,6 @@
 from enum import unique, Enum
 
-from BaseClasses import Region
+from BaseClasses import Region, MultiWorld
 from .Hints import HintArea
 
 
@@ -32,8 +32,8 @@ class TimeOfDay(object):
 class OOTRegion(Region):
     game: str = "Ocarina of Time"
 
-    def __init__(self, name: str, type, hint, player: int):
-        super(OOTRegion, self).__init__(name, type, hint, player)
+    def __init__(self, name: str, player: int, multiworld: MultiWorld):
+        super(OOTRegion, self).__init__(name, player, multiworld)
         self._oot_hint = None
         self.alt_hint = None
         self.price = None
@@ -45,7 +45,17 @@ class OOTRegion(Region):
         self.font_color = None
         self.is_boss_room = False
 
-    def get_scene(self): 
+    # This is too generic of a name to risk not breaking in the future.
+    # This lets us possibly switch it out later if AP starts using it.
+    @property
+    def hint(self):
+        return self._oot_hint
+
+    @hint.setter
+    def hint(self, value):
+        self._oot_hint = value
+
+    def get_scene(self):
         if self.scene: 
             return self.scene
         elif self.dungeon: 
@@ -70,10 +80,4 @@ class OOTRegion(Region):
             self._oot_hint = HintArea.for_dungeon(self.dungeon)
         else:
             self._oot_hint = HintArea[hint]
-        self.hint_text = str(self._oot_hint)
-
-    # This is too generic of a name to risk not breaking in the future.
-    # This lets us possibly switch it out later if AP starts using it.
-    @property
-    def hint(self):
-        return self._oot_hint
+        self._hint_text = str(self._oot_hint)
diff --git a/worlds/oot/__init__.py b/worlds/oot/__init__.py
index 7207cada..bcf29f3a 100644
--- a/worlds/oot/__init__.py
+++ b/worlds/oot/__init__.py
@@ -29,7 +29,7 @@ from .N64Patch import create_patch_file
 from .Cosmetics import patch_cosmetics
 
 from Utils import get_options
-from BaseClasses import MultiWorld, CollectionState, RegionType, Tutorial, LocationProgressType
+from BaseClasses import MultiWorld, CollectionState, Tutorial, LocationProgressType
 from Options import Range, Toggle, VerifyKeys
 from Fill import fill_restrictive, fast_fill, FillError
 from worlds.generic.Rules import exclusion_rules, add_item_rule
@@ -120,14 +120,14 @@ class OOTWorld(World):
             "Water Medallion", "Shadow Medallion", "Spirit Medallion",
             "Kokiri Emerald", "Goron Ruby", "Zora Sapphire"},
         "logic_bottles": {"Bottle", "Bottle with Milk", "Deliver Letter",
-            "Sell Big Poe", "Bottle with Red Potion", "Bottle with Green Potion", 
-            "Bottle with Blue Potion", "Bottle with Fairy", "Bottle with Fish", 
+            "Sell Big Poe", "Bottle with Red Potion", "Bottle with Green Potion",
+            "Bottle with Blue Potion", "Bottle with Fairy", "Bottle with Fish",
             "Bottle with Blue Fire", "Bottle with Bugs", "Bottle with Poe"},
 
         # hint groups
         "Bottles": {"Bottle", "Bottle with Milk", "Rutos Letter",
-            "Bottle with Big Poe", "Bottle with Red Potion", "Bottle with Green Potion", 
-            "Bottle with Blue Potion", "Bottle with Fairy", "Bottle with Fish", 
+            "Bottle with Big Poe", "Bottle with Red Potion", "Bottle with Green Potion",
+            "Bottle with Blue Potion", "Bottle with Fairy", "Bottle with Fish",
             "Bottle with Blue Fire", "Bottle with Bugs", "Bottle with Poe"},
         "Adult Trade Item": {"Pocket Egg", "Pocket Cucco", "Odd Mushroom",
             "Odd Potion", "Poachers Saw", "Broken Sword", "Prescription",
@@ -364,7 +364,7 @@ class OOTWorld(World):
             elif self.dungeon_shortcuts_choice == 'all':
                 self.dungeon_shortcuts = set(shortcut_dungeons)
             elif self.dungeon_shortcuts_choice == 'random':
-                self.dungeon_shortcuts = self.multiworld.random.sample(shortcut_dungeons, 
+                self.dungeon_shortcuts = self.multiworld.random.sample(shortcut_dungeons,
                     self.multiworld.random.randint(0, len(shortcut_dungeons)))
             # == 'choice', leave as previous
         else:
@@ -453,8 +453,7 @@ class OOTWorld(World):
         region_json = read_json(file_path)
 
         for region in region_json:
-            new_region = OOTRegion(region['region_name'], RegionType.Generic, None, self.player)
-            new_region.multiworld = self.multiworld
+            new_region = OOTRegion(region['region_name'], self.player, self.multiworld)
             if 'pretty_name' in region:
                 new_region.pretty_name = region['pretty_name']
             if 'font_color' in region:
@@ -624,7 +623,7 @@ class OOTWorld(World):
             world_type = 'Glitched World'
         overworld_data_path = data_path(world_type, 'Overworld.json')
         bosses_data_path = data_path(world_type, 'Bosses.json')
-        menu = OOTRegion('Menu', None, None, self.player)
+        menu = OOTRegion('Menu', self.player, self.multiworld)
         start = OOTEntrance(self.player, self.multiworld, 'New Game', menu)
         menu.exits.append(start)
         self.multiworld.regions.append(menu)
@@ -840,9 +839,9 @@ class OOTWorld(World):
         # Place shop items
         # fast fill will fail because there is some logic on the shop items. we'll gather them up and place the shop items
         if self.shopsanity != 'off':
-            shop_prog = list(filter(lambda item: item.player == self.player and item.type == 'Shop' 
+            shop_prog = list(filter(lambda item: item.player == self.player and item.type == 'Shop'
                 and item.advancement, self.multiworld.itempool))
-            shop_junk = list(filter(lambda item: item.player == self.player and item.type == 'Shop' 
+            shop_junk = list(filter(lambda item: item.player == self.player and item.type == 'Shop'
                 and not item.advancement, self.multiworld.itempool))
             shop_locations = list(
                 filter(lambda location: location.type == 'Shop' and location.name not in self.shop_prices,
@@ -1029,7 +1028,7 @@ class OOTWorld(World):
             for player in barren_hint_players:
                 items_by_region[player] = {}
                 for r in multiworld.worlds[player].regions:
-                    items_by_region[player][r.hint_text] = {'dungeon': False, 'weight': 0, 'is_barren': True}
+                    items_by_region[player][r._hint_text] = {'dungeon': False, 'weight': 0, 'is_barren': True}
                 for d in multiworld.worlds[player].dungeons:
                     items_by_region[player][d.hint_text] = {'dungeon': True, 'weight': 0, 'is_barren': True}
                 del (items_by_region[player]["Link's pocket"])
@@ -1118,7 +1117,7 @@ class OOTWorld(World):
         # If it's in a dungeon, scan all the entrances for all the regions in the dungeon.
         #   This should terminate on the first region anyway, but we scan everything to be safe.
         # If it's one of the special cases, go one level deeper.
-        # If it's a boss room, go one level deeper to the boss door region, which is in a dungeon. 
+        # If it's a boss room, go one level deeper to the boss door region, which is in a dungeon.
         # Otherwise return None.
         def get_entrance_to_region(region):
             special_case_regions = {
@@ -1150,7 +1149,7 @@ class OOTWorld(World):
                             er_hint_data[self.player][location.address] = main_entrance.name
                             logger.debug(f"Set {location.name} hint data to {main_entrance.name}")
 
-    # Key ring handling: 
+    # Key ring handling:
     # Key rings are multiple items glued together into one, so we need to give
     # the appropriate number of keys in the collection state when they are
     # picked up.
diff --git a/worlds/oribf/__init__.py b/worlds/oribf/__init__.py
index 485efdf6..02350917 100644
--- a/worlds/oribf/__init__.py
+++ b/worlds/oribf/__init__.py
@@ -6,7 +6,7 @@ from .Locations import lookup_name_to_id
 from .Rules import set_rules, location_rules
 from .Regions import locations_by_region, connectors
 from .Options import options
-from BaseClasses import Region, Item, Location, RegionType, Entrance, ItemClassification
+from BaseClasses import Region, Item, Location, Entrance, ItemClassification
 
 
 class OriBlindForest(World):
@@ -31,7 +31,7 @@ class OriBlindForest(World):
     set_rules = set_rules
 
     def create_region(self, name: str):
-        return Region(name, RegionType.Generic, name, self.player, self.multiworld)
+        return Region(name, self.player, self.multiworld)
 
     def create_regions(self):
         world = self.multiworld
diff --git a/worlds/overcooked2/__init__.py b/worlds/overcooked2/__init__.py
index 59c3438d..c255375e 100644
--- a/worlds/overcooked2/__init__.py
+++ b/worlds/overcooked2/__init__.py
@@ -1,7 +1,7 @@
 from enum import Enum
 from typing import Callable, Dict, Any, List, Optional
 
-from BaseClasses import ItemClassification, CollectionState, Region, Entrance, Location, RegionType, Tutorial
+from BaseClasses import ItemClassification, CollectionState, Region, Entrance, Location, Tutorial
 from worlds.AutoWorld import World, WebWorld
 
 from .Overcooked2Levels import Overcooked2Level, Overcooked2GenericLevel, ITEMS_TO_EXCLUDE_IF_NO_DLC
@@ -82,8 +82,6 @@ class Overcooked2World(World):
 
     def add_region(self, region_name: str):
         region = Region(
-            region_name,
-            RegionType.Generic,
             region_name,
             self.player,
             self.multiworld,
diff --git a/worlds/pokemon_rb/regions.py b/worlds/pokemon_rb/regions.py
index e6bfad59..674d24d1 100644
--- a/worlds/pokemon_rb/regions.py
+++ b/worlds/pokemon_rb/regions.py
@@ -1,10 +1,10 @@
 
-from BaseClasses import MultiWorld, Region, Entrance, RegionType, LocationProgressType
+from BaseClasses import MultiWorld, Region, Entrance, LocationProgressType
 from .locations import location_data, PokemonRBLocation
 
 
 def create_region(world: MultiWorld, player: int, name: str, locations_per_region=None, exits=None):
-    ret = Region(name, RegionType.Generic, name, player, world)
+    ret = Region(name, player, world)
     for location in locations_per_region.get(name, []):
         location.parent_region = ret
         ret.locations.append(location)
diff --git a/worlds/raft/__init__.py b/worlds/raft/__init__.py
index e326f734..b66d0d08 100644
--- a/worlds/raft/__init__.py
+++ b/worlds/raft/__init__.py
@@ -9,7 +9,7 @@ from .Regions import create_regions, getConnectionName
 from .Rules import set_rules
 from .Options import raft_options
 
-from BaseClasses import Region, RegionType, Entrance, Location, MultiWorld, Item, ItemClassification, Tutorial
+from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, Tutorial
 from ..AutoWorld import World, WebWorld
 
 
@@ -201,8 +201,7 @@ class RaftWorld(World):
         }
 
 def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
-    ret = Region(name, RegionType.Generic, name, player)
-    ret.multiworld = world
+    ret = Region(name, player, world)
     if locations:
         for location in locations:
             loc_id = locations_lookup_name_to_id.get(location, 0)
@@ -211,7 +210,6 @@ def create_region(world: MultiWorld, player: int, name: str, locations=None, exi
     if exits:
         for exit in exits:
             ret.exits.append(Entrance(player, getConnectionName(name, exit), ret))
-
     return ret
 
 class RaftLocation(Location):
diff --git a/worlds/rogue_legacy/Regions.py b/worlds/rogue_legacy/Regions.py
index 025f13f4..5d07fccb 100644
--- a/worlds/rogue_legacy/Regions.py
+++ b/worlds/rogue_legacy/Regions.py
@@ -1,6 +1,6 @@
 from typing import Dict, List, NamedTuple, Optional
 
-from BaseClasses import MultiWorld, Region, RegionType, Entrance
+from BaseClasses import MultiWorld, Region, Entrance
 from .Locations import RLLocation, location_table, get_locations_by_category
 
 
@@ -96,7 +96,7 @@ def create_regions(multiworld: MultiWorld, player: int):
 
 
 def create_region(multiworld: MultiWorld, player: int, name: str, data: RLRegionData):
-    region = Region(name, RegionType.Generic, name, player, multiworld)
+    region = Region(name, player, multiworld)
     if data.locations:
         for loc_name in data.locations:
             loc_data = location_table.get(loc_name)
diff --git a/worlds/ror2/Regions.py b/worlds/ror2/Regions.py
index 878d91ec..9343a2fb 100644
--- a/worlds/ror2/Regions.py
+++ b/worlds/ror2/Regions.py
@@ -1,6 +1,6 @@
 from typing import Dict, List, NamedTuple, Optional
 
-from BaseClasses import MultiWorld, Region, RegionType, Entrance
+from BaseClasses import MultiWorld, Region, Entrance
 from .Locations import location_table, RiskOfRainLocation
 
 
@@ -106,7 +106,7 @@ def create_regions(multiworld: MultiWorld, player: int):
 
 
 def create_region(multiworld: MultiWorld, player: int, name: str, data: RoRRegionData):
-    region = Region(name, RegionType.Generic, name, player, multiworld)
+    region = Region(name, player, multiworld)
     if data.locations:
         for location_name in data.locations:
             location_data = location_table.get(location_name)
diff --git a/worlds/ror2/__init__.py b/worlds/ror2/__init__.py
index 59c9801c..84075191 100644
--- a/worlds/ror2/__init__.py
+++ b/worlds/ror2/__init__.py
@@ -5,7 +5,7 @@ from .Locations import RiskOfRainLocation, get_classic_item_pickups, item_pickup
 from .Rules import set_rules
 from .RoR2Environments import *
 
-from BaseClasses import Region, RegionType, Entrance, Item, ItemClassification, MultiWorld, Tutorial
+from BaseClasses import Region, Entrance, Item, ItemClassification, MultiWorld, Tutorial
 from .Options import ror2_options, ItemWeights
 from worlds.AutoWorld import World, WebWorld
 from .Regions import create_regions
@@ -256,7 +256,7 @@ def create_events(world: MultiWorld, player: int) -> None:
 
 
 def create_region(world: MultiWorld, player: int, name: str, locations: Dict[str, int] = {}) -> Region:
-    ret = Region(name, RegionType.Generic, name, player, world)
+    ret = Region(name, player, world)
     for location_name, location_id in locations.items():
         ret.locations.append(RiskOfRainLocation(player, location_name, location_id, ret))
     return ret
diff --git a/worlds/sa2b/Regions.py b/worlds/sa2b/Regions.py
index 713d38ea..a5e75b40 100644
--- a/worlds/sa2b/Regions.py
+++ b/worlds/sa2b/Regions.py
@@ -964,8 +964,7 @@ def connect_regions(world, player, gates: typing.List[LevelGate], cannon_core_em
 
 
 def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
-    ret = Region(name, None, name, player)
-    ret.multiworld = world
+    ret = Region(name, player, world)
     if locations:
         for location in locations:
             loc_id = active_locations.get(location, 0)
diff --git a/worlds/sc2wol/Regions.py b/worlds/sc2wol/Regions.py
index a714b8fd..bcf6434a 100644
--- a/worlds/sc2wol/Regions.py
+++ b/worlds/sc2wol/Regions.py
@@ -1,5 +1,5 @@
 from typing import List, Set, Dict, Tuple, Optional, Callable
-from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType
+from BaseClasses import MultiWorld, Region, Entrance, Location
 from .Locations import LocationData
 from .Options import get_option_value
 from .MissionTables import MissionInfo, mission_orders, vanilla_mission_req_table, alt_final_mission_locations
@@ -234,8 +234,7 @@ def create_location(player: int, location_data: LocationData, region: Region,
 
 def create_region(multiworld: MultiWorld, player: int, locations_per_region: Dict[str, List[LocationData]],
                   location_cache: List[Location], name: str) -> Region:
-    region = Region(name, RegionType.Generic, name, player)
-    region.multiworld = multiworld
+    region = Region(name, player, multiworld)
 
     if name in locations_per_region:
         for location_data in locations_per_region[name]:
diff --git a/worlds/sm/__init__.py b/worlds/sm/__init__.py
index f8f71f33..e6324c6c 100644
--- a/worlds/sm/__init__.py
+++ b/worlds/sm/__init__.py
@@ -18,7 +18,7 @@ from .Client import SMSNIClient
 from .Rom import get_base_rom_path, SM_ROM_MAX_PLAYERID, SM_ROM_PLAYERDATA_COUNT, SMDeltaPatch, get_sm_symbols
 import Utils
 
-from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, RegionType, CollectionState, Tutorial
+from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, CollectionState, Tutorial
 from ..AutoWorld import World, AutoLogicRegister, WebWorld
 
 from logic.smboolmanager import SMBoolManager
@@ -721,8 +721,7 @@ def create_locations(self, player: int):
 
 
 def create_region(self, world: MultiWorld, player: int, name: str, locations=None, exits=None):
-    ret = Region(name, RegionType.LightWorld, name, player)
-    ret.multiworld = world
+    ret = Region(name, player, world)
     if locations:
         for loc in locations:
             location = self.locations[loc]
diff --git a/worlds/sm64ex/Regions.py b/worlds/sm64ex/Regions.py
index f8e856a9..c2e9e2d9 100644
--- a/worlds/sm64ex/Regions.py
+++ b/worlds/sm64ex/Regions.py
@@ -1,5 +1,5 @@
 import typing
-from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType
+from BaseClasses import MultiWorld, Region, Entrance, Location
 from .Locations import SM64Location, location_table, locBoB_table, locWhomp_table, locJRB_table, locCCM_table, \
     locBBH_table, \
     locHMC_table, locLLL_table, locSSL_table, locDDD_table, locSL_table, \
@@ -27,7 +27,7 @@ sm64_internalloc_to_string = dict(zip(sm64paintings+sm64secrets, sm64entrances_s
 sm64_internalloc_to_regionid = dict(zip(sm64paintings+sm64secrets, list(range(13)) + [12,13,14] + list(range(15,15+len(sm64secrets)))))
 
 def create_regions(world: MultiWorld, player: int):
-    regSS = Region("Menu", RegionType.Generic, "Castle Area", player, world)
+    regSS = Region("Menu", player, world, "Castle Area")
     create_default_locs(regSS, locSS_table, player)
     world.regions.append(regSS)
 
@@ -179,7 +179,7 @@ def connect_regions(world: MultiWorld, player: int, source: str, target: str, ru
     connection.connect(targetRegion)
 
 def create_region(name: str, player: int, world: MultiWorld) -> Region:
-    return Region(name, RegionType.Generic, name, player, world)
+    return Region(name, player, world)
 
 def create_default_locs(reg: Region, locs, player):
     reg_names = [name for name, id in locs.items()]
diff --git a/worlds/smw/Regions.py b/worlds/smw/Regions.py
index fd94e0b1..3b45abb9 100644
--- a/worlds/smw/Regions.py
+++ b/worlds/smw/Regions.py
@@ -1,6 +1,6 @@
 import typing
 
-from BaseClasses import MultiWorld, Region, RegionType, Entrance
+from BaseClasses import MultiWorld, Region, Entrance
 from .Locations import SMWLocation
 from .Levels import level_info_dict
 from .Names import LocationName, ItemName
@@ -1130,8 +1130,7 @@ def connect_regions(world, player, level_to_tile_dict):
 
 
 def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None):
-    ret = Region(name, RegionType.Generic, name, player)
-    ret.world = world
+    ret = Region(name, player, world)
     if locations:
         for locationName in locations:
             loc_id = active_locations.get(locationName, 0)
diff --git a/worlds/smw/Rom.py b/worlds/smw/Rom.py
index 2d03e19d..3a982fce 100644
--- a/worlds/smw/Rom.py
+++ b/worlds/smw/Rom.py
@@ -723,7 +723,7 @@ def handle_swap_donut_gh_exits(rom):
     rom.write_bytes(0x26371, bytes([0x32]))
 
 
-def handle_bowser_rooms(rom, world, player):
+def handle_bowser_rooms(rom, world, player: int):
     if world.bowser_castle_rooms[player] == "random_two_room":
         chosen_rooms = world.random.sample(standard_bowser_rooms, 2)
 
diff --git a/worlds/smz3/__init__.py b/worlds/smz3/__init__.py
index 35e7ea66..08a23577 100644
--- a/worlds/smz3/__init__.py
+++ b/worlds/smz3/__init__.py
@@ -5,7 +5,7 @@ import random
 import threading
 from typing import Dict, Set, TextIO
 
-from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, RegionType, CollectionState, \
+from BaseClasses import Region, Entrance, Location, MultiWorld, Item, ItemClassification, CollectionState, \
     Tutorial
 from worlds.generic.Rules import set_rule
 from worlds.smz3.TotalSMZ3.Item import ItemType
@@ -637,8 +637,7 @@ class SMZ3World(World):
             self.smz3World.locationLookup[name].APLocation = newLoc
 
     def create_region(self, world: MultiWorld, player: int, name: str, locations=None, exits=None):
-        ret = Region(name, RegionType.LightWorld, name, player)
-        ret.multiworld = world
+        ret = Region(name, player, world)
         if locations:
             for loc in locations:
                 location = self.locations[loc]
diff --git a/worlds/soe/__init__.py b/worlds/soe/__init__.py
index 0eaf07ca..f87e0c3e 100644
--- a/worlds/soe/__init__.py
+++ b/worlds/soe/__init__.py
@@ -5,7 +5,7 @@ import threading
 import typing
 from worlds.AutoWorld import WebWorld, World
 from worlds.generic.Rules import add_item_rule, set_rule
-from BaseClasses import Entrance, Item, ItemClassification, Location, LocationProgressType, Region, RegionType, Tutorial
+from BaseClasses import Entrance, Item, ItemClassification, Location, LocationProgressType, Region, Tutorial
 from Utils import output_path
 
 try:
@@ -211,7 +211,7 @@ class SoEWorld(World):
         max_difficulty = 1 if self.multiworld.difficulty[self.player] == Difficulty.option_easy else 256
 
         # TODO: generate *some* regions from locations' requirements?
-        r = Region('Menu', RegionType.Generic, 'Menu', self.player, self.multiworld)
+        r = Region('Menu', self.player, self.multiworld)
         r.exits = [Entrance(self.player, 'New Game', r)]
         self.multiworld.regions += [r]
 
@@ -267,7 +267,7 @@ class SoEWorld(World):
         late_locations = self.multiworld.random.sample(late_bosses, late_count)
 
         # add locations to the world
-        r = Region('Ingame', RegionType.Generic, 'Ingame', self.player, self.multiworld)
+        r = Region('Ingame', self.player, self.multiworld)
         for sphere in spheres.values():
             for locations in sphere.values():
                 for location in locations:
diff --git a/worlds/spire/__init__.py b/worlds/spire/__init__.py
index a1d02222..5a7ed19e 100644
--- a/worlds/spire/__init__.py
+++ b/worlds/spire/__init__.py
@@ -1,6 +1,6 @@
 import string
 
-from BaseClasses import Entrance, Item, ItemClassification, Location, MultiWorld, Region, RegionType, Tutorial
+from BaseClasses import Entrance, Item, ItemClassification, Location, MultiWorld, Region, Tutorial
 from .Items import event_item_pairs, item_pool, item_table
 from .Locations import location_table
 from .Options import spire_options
@@ -85,8 +85,7 @@ class SpireWorld(World):
 
 
 def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
-    ret = Region(name, RegionType.Generic, name, player)
-    ret.multiworld = world
+    ret = Region(name, player, world)
     if locations:
         for location in locations:
             loc_id = location_table.get(location, 0)
diff --git a/worlds/subnautica/__init__.py b/worlds/subnautica/__init__.py
index 0e637cb4..9186fad4 100644
--- a/worlds/subnautica/__init__.py
+++ b/worlds/subnautica/__init__.py
@@ -1,7 +1,7 @@
 import logging
 from typing import List, Dict, Any
 
-from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification, RegionType
+from BaseClasses import Region, Entrance, Location, Item, Tutorial, ItemClassification
 from worlds.AutoWorld import World, WebWorld
 from . import Items
 from . import Locations
@@ -135,8 +135,7 @@ class SubnauticaWorld(World):
                               item_id, player=self.player)
 
     def create_region(self, name: str, locations=None, exits=None):
-        ret = Region(name, RegionType.Generic, name, self.player)
-        ret.multiworld = self.multiworld
+        ret = Region(name, self.player, self.multiworld)
         if locations:
             for location in locations:
                 loc_id = self.location_name_to_id.get(location, None)
diff --git a/worlds/timespinner/Regions.py b/worlds/timespinner/Regions.py
index ed0a30d3..5d1abe83 100644
--- a/worlds/timespinner/Regions.py
+++ b/worlds/timespinner/Regions.py
@@ -1,5 +1,5 @@
 from typing import List, Set, Dict, Tuple, Optional, Callable
-from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType
+from BaseClasses import MultiWorld, Region, Entrance, Location
 from .Options import is_option_enabled
 from .Locations import LocationData
 
@@ -200,8 +200,7 @@ def create_location(player: int, location_data: LocationData, region: Region, lo
 
 
 def create_region(world: MultiWorld, player: int, locations_per_region: Dict[str, List[LocationData]], location_cache: List[Location], name: str) -> Region:
-    region = Region(name, RegionType.Generic, name, player)
-    region.multiworld = world
+    region = Region(name, player, world)
 
     if name in locations_per_region:
         for location_data in locations_per_region[name]:
diff --git a/worlds/v6/Regions.py b/worlds/v6/Regions.py
index 132e05d0..5a8f0315 100644
--- a/worlds/v6/Regions.py
+++ b/worlds/v6/Regions.py
@@ -1,33 +1,33 @@
 import typing
-from BaseClasses import MultiWorld, Region, Entrance, Location, RegionType
+from BaseClasses import MultiWorld, Region, Entrance, Location
 from .Locations import V6Location, location_table
 
 v6areas = ["Laboratory", "The Tower", "Space Station 2", "Warp Zone"]
 
 
 def create_regions(world: MultiWorld, player: int):
-    regOvr = Region("Menu", RegionType.Generic, "Dimension VVVVVV", player, world)
+    regOvr = Region("Menu", player, world, "Dimension VVVVVV")
     locOvr_names = ["Overworld (Pipe-shaped Segment)", "Overworld (Left of Ship)", "Overworld (Square Room)", "Overworld (Sad Elephant)",
                     "It's a Secret to Nobody", "Trench Warfare", "NPC Trinket", "V"]
     regOvr.locations += [V6Location(player, loc_name, location_table[loc_name], regOvr) for loc_name in locOvr_names]
     world.regions.append(regOvr)
 
-    regLab = Region("Laboratory", RegionType.Generic, "Laboratory", player, world)
+    regLab = Region("Laboratory", player, world)
     locLab_names = ["Young Man, It's Worth the Challenge", "Overworld (Outside Entanglement Generator)", "The Tantalizing Trinket", "Purest Unobtainium"]
     regLab.locations += [V6Location(player, loc_name, location_table[loc_name], regLab) for loc_name in locLab_names]
     world.regions.append(regLab)
 
-    regTow = Region("The Tower", RegionType.Generic, "The Tower", player, world)
+    regTow = Region("The Tower", player, world)
     locTow_names = ["The Tower 1", "The Tower 2"]
     regTow.locations += [V6Location(player, loc_name, location_table[loc_name], regTow) for loc_name in locTow_names]
     world.regions.append(regTow)
 
-    regSp2 = Region("Space Station 2", RegionType.Generic, "Space Station 2", player, world)
+    regSp2 = Region("Space Station 2", player, world)
     locSp2_names = ["One Way Room", "You Just Keep Coming Back", "Clarion Call", "Prize for the Reckless", "Doing things the hard way"]
     regSp2.locations += [V6Location(player, loc_name, location_table[loc_name], regSp2) for loc_name in locSp2_names]
     world.regions.append(regSp2)
 
-    regWrp = Region("Warp Zone", RegionType.Generic, "Warp Zone", player, world)
+    regWrp = Region("Warp Zone", player, world)
     locWrp_names = ["Edge Games"]
     regWrp.locations += [V6Location(player, loc_name, location_table[loc_name], regWrp) for loc_name in locWrp_names]
     world.regions.append(regWrp)
diff --git a/worlds/witness/__init__.py b/worlds/witness/__init__.py
index a5765bf7..71bebb6e 100644
--- a/worlds/witness/__init__.py
+++ b/worlds/witness/__init__.py
@@ -3,7 +3,7 @@ Archipelago init file for The Witness
 """
 import typing
 
-from BaseClasses import Region, RegionType, Location, MultiWorld, Item, Entrance, Tutorial, ItemClassification
+from BaseClasses import Region, Location, MultiWorld, Item, Entrance, Tutorial, ItemClassification
 from .hints import get_always_hint_locations, get_always_hint_items, get_priority_hint_locations, \
     get_priority_hint_items, make_hints, generate_joke_hints
 from ..AutoWorld import World, WebWorld
@@ -268,8 +268,7 @@ def create_region(world: MultiWorld, player: int, name: str,
     Create an Archipelago Region for The Witness
     """
 
-    ret = Region(name, RegionType.Generic, name, player)
-    ret.multiworld = world
+    ret = Region(name, player, world)
     if region_locations:
         for location in region_locations:
             loc_id = locat.CHECK_LOCATION_TABLE[location]
diff --git a/worlds/zillion/__init__.py b/worlds/zillion/__init__.py
index 63823e8c..bc3c9c03 100644
--- a/worlds/zillion/__init__.py
+++ b/worlds/zillion/__init__.py
@@ -7,8 +7,7 @@ import os
 import logging
 
 from BaseClasses import ItemClassification, LocationProgressType, \
-    MultiWorld, Item, CollectionState, RegionType, \
-    Entrance, Tutorial
+    MultiWorld, Item, CollectionState, Entrance, Tutorial
 from Options import AssembleOptions
 from .logic import cs_to_zz_locs
 from .region import ZillionLocation, ZillionRegion
@@ -155,7 +154,7 @@ class ZillionWorld(World):
         all: Dict[str, ZillionRegion] = {}
         for here_zz_name, zz_r in self.zz_system.randomizer.regions.items():
             here_name = "Menu" if here_zz_name == "start" else zz_reg_name_to_reg_name(here_zz_name)
-            all[here_name] = ZillionRegion(zz_r, here_name, RegionType.Generic, here_name, p, w)
+            all[here_name] = ZillionRegion(zz_r, here_name, here_name, p, w)
             self.multiworld.regions.append(all[here_name])
 
         limited_skill = Req(gun=3, jump=3, skill=self.zz_system.randomizer.options.skill, hp=940, red=1, floppy=126)
diff --git a/worlds/zillion/region.py b/worlds/zillion/region.py
index 53949f73..29ffb01d 100644
--- a/worlds/zillion/region.py
+++ b/worlds/zillion/region.py
@@ -1,5 +1,5 @@
 from typing import Optional
-from BaseClasses import MultiWorld, Region, RegionType, Location, Item, CollectionState
+from BaseClasses import MultiWorld, Region, Location, Item, CollectionState
 from zilliandomizer.logic_components.regions import Region as ZzRegion
 from zilliandomizer.logic_components.locations import Location as ZzLocation
 from zilliandomizer.logic_components.items import RESCUE
@@ -11,14 +11,12 @@ from .item import ZillionItem
 class ZillionRegion(Region):
     zz_r: ZzRegion
 
-    def __init__(self,
-                 zz_r: ZzRegion,
+    def __init__(self, zz_r: ZzRegion,
                  name: str,
-                 type_: RegionType,
                  hint: str,
                  player: int,
-                 world: Optional[MultiWorld] = None) -> None:
-        super().__init__(name, type_, hint, player, world)
+                 multiworld: Optional[MultiWorld] = None) -> None:
+        super().__init__(name, player, multiworld, hint)
         self.zz_r = zz_r