diff --git a/pre-edited-cs/data/Stage/Cave.pxe b/pre-edited-cs/data/Stage/Cave.pxe
index 250f4b7..cf35654 100644
Binary files a/pre-edited-cs/data/Stage/Cave.pxe and b/pre-edited-cs/data/Stage/Cave.pxe differ
diff --git a/src/main.lua b/src/main.lua
index f2ecb68..0c3653d 100644
--- a/src/main.lua
+++ b/src/main.lua
@@ -16,9 +16,9 @@ require 'lib.bit'
 
 local random = require 'randomizer'
 local settings = require 'settings'
+Settings = settings()
 Randomizer = random()
 Screen = require 'ui.draw'
-Settings = settings()
 
 local csdirectory
 
diff --git a/src/randomizer.lua b/src/randomizer.lua
index efa597a..ec24335 100644
--- a/src/randomizer.lua
+++ b/src/randomizer.lua
@@ -37,7 +37,6 @@ function C:new()
   self.obj = ""
   self.sharecode = ""
   self.mychar = ""
-  self.seqbreak = false
 end
 
 function C:setPath(path)
@@ -309,6 +308,8 @@ function C:_updateSettings()
   Settings.settings.obj = self.obj
   Settings.settings.mychar = self.mychar
   Settings.settings.spawn = self.worldGraph.spawn
+  Settings.settings.seqbreaks = self.worldGraph.seqbreak
+  Settings.settings.dboosts = _.map(self.worldGraph.dboosts, function(k,v) return v.enabled end)
   Settings:update()
 end
 
diff --git a/src/settings.lua b/src/settings.lua
index 378525e..d29dcb1 100644
--- a/src/settings.lua
+++ b/src/settings.lua
@@ -3,17 +3,36 @@ local C = Class:extend()
 function C:init()
   self.settings = {}
   if lf.getInfo('settings.txt') == nil then
-    self:setDefaults()
+    self.settings = self:getDefaults()
+  else
+    self.settings = lf.load('settings.txt')()
+    -- add any missing entries if new settings have been added
+    for k,v in pairs(self:getDefaults()) do
+      self.settings[k] = self.settings[k] or v
+    end
   end
-  self.settings = lf.load('settings.txt')()
+  self:update()
 end
 
-function C:setDefaults()
-  self.settings.csdirectory = nil
-  self.settings.puppy = false
-  self.settings.obj = "objBestEnd"
-  self.settings.spawn = "Start Point"
-  self:update()
+function C:getDefaults()
+  return {
+    csdirectory = "",
+    puppy = false,
+    obj = "objBestEnd",
+    mychar = "assets/myChar/Quote.bmp",
+    spawn = "Start Point",
+    seqbreaks = false,
+    dboosts = {
+      cthulhu = true,
+      chaco = true,
+      paxChaco = true,
+      flightlessHut = true,
+      camp = true,
+      sisters = true,
+      plantation = true,
+      rocket = true
+    }
+  }
 end
 
 function C:update()
@@ -21,6 +40,14 @@ function C:update()
 end
 
 function C:serialize()
+  local function dboosts()
+    local line = "{"
+    for k,v in pairs(self.settings.dboosts) do
+      line = line .. ("%s = %s,"):format(k,v)
+    end
+    return line .. "}"
+  end
+
   local line = "return {\r\n  "
 
   line = line .. ("csdirectory = [[%s]],\r\n  "):format(self.settings.csdirectory or "")
@@ -28,9 +55,11 @@ function C:serialize()
   line = line .. ("obj = %q,\r\n  "):format(self.settings.obj or "")
   line = line .. ("mychar = %q,\r\n  "):format(self.settings.mychar or "")
   line = line .. ("spawn = %q,\r\n  "):format(self.settings.spawn or "")
+  local dboost = dboosts()
+  line = line .. ("seqbreaks = %s,\r\n  "):format(self.settings.seqbreaks)
+  line = line .. ("dboosts = %s,\r\n  "):format(dboost)
   
-  line = line .. "\r\n}"
-  return line
+  return line .. "\r\n}"
 end
 
 function C:getSettings()
diff --git a/src/ui/draw.lua b/src/ui/draw.lua
index 839aa80..e4a9627 100644
--- a/src/ui/draw.lua
+++ b/src/ui/draw.lua
@@ -6,22 +6,36 @@ local C = Class:extend()
 
 local layout = Luigi(require 'ui.main')
 local settings = Luigi(require 'ui.settings')
-layout:setStyle(require 'ui.style')
-settings:setStyle(require 'ui.style')
-layout:setTheme(require 'lib.luigi.theme.dark')
-settings:setTheme(require 'lib.luigi.theme.dark')
+local sequence = Luigi(require 'ui.sequence')
+
+local style = require 'ui.style'
+local theme = require 'lib.luigi.theme.dark'
+
+layout:setStyle(style)
+settings:setStyle(style)
+sequence:setStyle(style)
+
+layout:setTheme(theme)
+settings:setTheme(theme)
+sequence:setTheme(theme)
 
 function C:setup()
-  self:loadSettings(Settings.settings.puppy, Settings.settings.obj, nil, Settings.settings.mychar, Settings.settings.spawn)
+  self:loadPuppy(Settings.settings.puppy)
+  self:loadObjective(Settings.settings.obj)
+  self:loadMyChar(Settings.settings.mychar)
+  self:loadSpawn(Settings.settings.spawn)
+  self:loadSeqSettings(Settings.settings.dboosts)
 
   background = lg.newImage('assets/background.png')
   self:draw()
   layout:show()
 end
 
-function C:loadSettings(puppy, obj, seed, mychar, spawn)
+function C:loadPuppy(puppy)
   settings.puppy.value = puppy
+end
 
+function C:loadObjective(obj)
   if obj == "objBadEnd" or obj == 1 then
     settings.objective.index = 1
   elseif obj == "objNormalEnd" or obj == 2 then
@@ -32,13 +46,17 @@ function C:loadSettings(puppy, obj, seed, mychar, spawn)
     settings.objective.index = 3
   end
   settings.objective.value = "override"
+end
 
+function C:loadSeed(seed)
   if seed ~= nil then
     settings.customseed.value = seed or ""
     settings.seedselect.value = true
     settings.seedrandom.value = false
   end
+end
 
+function C:loadMyChar(mychar)
   if mychar == "assets/myChar/Quote.bmp" then
     settings.mychar.index = 1
   elseif mychar == "assets/myChar/Curly.bmp" then
@@ -55,7 +73,9 @@ function C:loadSettings(puppy, obj, seed, mychar, spawn)
     settings.mychar.index = 7
   end
   settings.mychar.value = "override"
+end
 
+function C:loadSpawn(spawn)
   if spawn == "Start Point" or spawn == 0 then
     settings.spawn.index = 1
   elseif spawn == "Arthur's House" or spawn == 1 then
@@ -66,6 +86,17 @@ function C:loadSettings(puppy, obj, seed, mychar, spawn)
   settings.spawn.value = "override"
 end
 
+function C:loadSeqSettings(seq)
+  sequence.cthulhu.value = seq.cthulhu
+  sequence.chaco.value = seq.chaco
+  sequence.paxChaco.value = seq.paxChaco
+  sequence.flightlessHut.value = seq.flightlessHut
+  sequence.camp.value = seq.camp
+  sequence.sisters.value = seq.sisters
+  sequence.plantation.value = seq.plantation
+  sequence.rocket.value = seq.rocket
+end
+
 layout.version.text = 'Cave Story Randomizer [Open Mode] v' .. VERSION
 layout.author.text  = 'by shru and duncathan'
 layout.twitter.text = '(@shruuu and @duncathan_salt)'
@@ -85,6 +116,16 @@ layout.go:onPress(function()
     Randomizer.mychar = settings.mychar.value
     Randomizer.worldGraph.spawn = settings.spawn.value
 
+    Randomizer.worldGraph.seqbreak = settings.seqbreak.value
+    Randomizer.worldGraph.dboosts.cthulhu.enabled = sequence.cthulhu.value
+    Randomizer.worldGraph.dboosts.chaco.enabled = sequence.chaco.value
+    Randomizer.worldGraph.dboosts.paxChaco.enabled = sequence.paxChaco.value
+    Randomizer.worldGraph.dboosts.flightlessHut.enabled = sequence.flightlessHut.value
+    Randomizer.worldGraph.dboosts.camp.enabled = sequence.camp.value
+    Randomizer.worldGraph.dboosts.sisters.enabled = sequence.sisters.value
+    Randomizer.worldGraph.dboosts.plantation.enabled = sequence.plantation.value
+    Randomizer.worldGraph.dboosts.rocket.enabled = sequence.rocket.value
+
     C:setStatus(Randomizer:randomize())
 
     layout.sharecode.text = "Copy Sharecode"
@@ -104,6 +145,24 @@ settings.closeButton:onPress(function()
   settings.sharecode.value = ""
 end)
 
+settings.seqButton:onPress(function()
+  sequence:show()
+  settings:hide()
+end)
+
+sequence.allOn:onPress(function()
+  Screen:loadSeqSettings(_.map(Settings.settings.dboosts, function(k,v) return true end))
+end)
+
+sequence.allOff:onPress(function()
+  Screen:loadSeqSettings(_.map(Settings.settings.dboosts, function(k,v) return false end))
+end)
+
+sequence.close:onPress(function()
+  sequence:hide()
+  settings:show()
+end)
+
 layout.sharecode:onPress(function()
   if Randomizer.sharecode ~= "" then
     love.system.setClipboardText(Randomizer.sharecode)
@@ -127,11 +186,10 @@ settings.importshare:onPress(function()
 
   if success then 
     settings.importshare.text = "Sharecode Imported"
-    local pup = bit.band(sharesettings, 4) ~= 0
-    local obj = bit.band(sharesettings, 3)
-    local spn = bit.brshift(bit.band(sharesettings, 24), 3)
-    seed = seed:gsub("^%s*(.-)%s*$", "%1") -- trim any leading or trailing whitespace
-    Screen:loadSettings(pup, obj, seed, nil, spn)
+    Screen:loadPuppy(bit.band(sharesettings, 4) ~= 0) -- settings & (0b00000001 << 2)
+    Screen:loadObjective(bit.band(sharesettings, 3)) -- settings & 0b00000011
+    Screen:loadSpawn(bit.brshift(bit.band(sharesettings, 24), 3)) -- (settings & 0b00011000) >> 3
+    Screen:loadSeed(seed:gsub("^%s*(.-)%s*$", "%1")) -- trim any leading or trailing whitespace
   else
     settings.importshare.text = "Invalid Sharecode!"
   end
diff --git a/src/ui/sequence.lua b/src/ui/sequence.lua
new file mode 100644
index 0000000..f36f9f6
--- /dev/null
+++ b/src/ui/sequence.lua
@@ -0,0 +1,19 @@
+return { style = 'dialog',
+  { style = 'dialogHead', text = 'Sequence Break Settings'},
+  { style = 'dialogBody', padding = 24,
+    { type = 'check', value = true, id = 'cthulhu', text = "Cthulhu's Abode (requires 3HP)", minheight = 27 },
+    { type = 'check', value = true, id = 'chaco', text = "Chaco Skip (requires 5HP)", minheight = 27 },
+    { type = 'check', value = true, id = 'paxChaco', text = "Chaco Skip without a weapon (requires 10HP)", minheight = 27 },
+    { type = 'check', value = true, id = 'flightlessHut', text = "Flightless Grasstown Hut (requires 3HP)", minheight = 27 },
+    { type = 'check', value = true, id = 'camp', text = "Flightless Camp Chest (requires 9HP)", minheight = 27 },
+    { type = 'check', value = true, id = 'sisters', text = "Sisters Skip (requires flight)", minheight = 27 },
+    { type = 'check', value = true, id = 'plantation', text = "Flightless Plantation Chest (requires 15HP)", minheight = 27 },
+    { type = 'check', value = true, id = 'rocket', text = "Flightless Rocket Skip (requires 3HP, MG, and 2.0)", minheight = 27 },
+  },
+  { style = 'dialogFoot',
+    {},
+    { style = 'dialogButton', id = 'allOn', text = 'All On' },
+    { style = 'dialogButton', id = 'allOff', text = 'All Off' },
+    { style = 'dialogButton', id = 'close', text = 'Close' }
+  }
+}
\ No newline at end of file
diff --git a/src/ui/settings.lua b/src/ui/settings.lua
index dcede9a..c493927 100644
--- a/src/ui/settings.lua
+++ b/src/ui/settings.lua
@@ -6,11 +6,22 @@ return { style = 'dialog',
         { type = 'label', text = 'Seed', minheight = 32 },
         {
           { type = 'radio', group = 'seed', text = 'Use random seed', value = true, id = 'seedrandom', minheight = 27 },
-          { flow = 'y', { type = 'radio', group = 'seed', text = 'Use custom seed', id = 'seedselect', minheight = 27 }, {{ type = 'text', id = 'customseed', width = 200, minheight = 32}, flow = 'x', { type = 'label', id = 'seedcount' }} }
+          { flow = 'y', { type = 'radio', group = 'seed', text = 'Use custom seed', id = 'seedselect', minheight = 27 }, 
+            {
+              flow = 'x',
+              { type = 'text', id = 'customseed', width = 200, minheight = 32},
+              { type = 'label', id = 'seedcount' }
+            }
+          }
         },
         { type = 'label', text = 'Randomization Options', minheight = 32 },
         { type = 'check', value = false, id = 'puppy', text = "Puppysanity", minheight = 27 },
-        { height = 64 },
+        { flow = 'x', 
+          { type = 'check', value = false, id = 'seqbreak', text = "Sequence breaks", minheight = 32, width =  170},
+          { type = 'button', style = 'dialogButton', text = "Modify", id = 'seqButton', width = 70, align = 'center' },
+          { width = false }
+        },
+        { height = 'auto' },
       },
       {
         { type = 'label', text = 'Objective', minheight = 32 },