Deferred open

the diff looks messy but all I did is use levelUp's deferred open feature to reduce callback nesting.