make the var unsigned long, instead of u_int64, I think will throw it away
the con is that we will have different upper bounds on each architecture, but I think more optimization