Douglas Gilbert with contributions from those listed in the CREDITS file.