Functionally complete. Everything works: regressions, other stuff.

Termination criteria sucks. I need to rebuild a new one.
Tests need to be rewritten into more data-driven
Code is too complicated sometimes. Need a new pass.