first commit, base code and tests
use Number.MAX_VALUE instead of Infinity