In progress code.
Begin building unit tests, because this stuff is complicated.