kill the CPS strategy in favor of returning objects

TODO: benchmark this - the tradeoff is less stack space but more object
creation.

also TODO: get the furthestFailure stuff to work.