manually pulling changes over from gh-book