Updated to reflect @seancribb's first round of comments