Taking a checkpoint on #99

Taking a checkpoint because I am dramatically altering the code and want
a point I can return to if my assumptions are wrong.