lots of copypasta from https://github.com/bitsai/book-exercises/