Refactored.
Refactored.
Refactored test.
Rewrote tests for clarity.