add additional tests, clean up test code
fix: return value in range 0, 100