I'm in the process of rewriting a library. This talk is super useful.