by Big Nerd Ranch book, dumb additions by me, probably