naturally when i actually tested it, it turned out to be subtly broken also reorg'd the tests a bit, sorry @hillerstorm.