use BigIntegers instead of Longs