use proper number types
make test pass
refactor
add one failed test case