Refactored to improve unit testability.
Created the SingleWordAdvancer to improve test ability