Updated and documented, including code by Marie, Aneesh, Dan, Christine, and Chloe