This whole loader section should be possible to reduce to:

    (id) ->
      loaded[id] or= new LYT.Book id
      return loaded[id].promise()