Refactoring. 122 tests passing.
Refactoring. Much more better.