Refactor to support multiple books