Rewrote the whole thing (refactored the crap out of it), handles numbers larger than 999,999,999
Updated the tests