(work in progress)josephjstallion at gmail com to edit this document