Ben Waggoner
: written 12/30/98; expanded and updated 6/7/01
Dave Smith: Reformatted 10/7/05