got rid off useless precaution
code more general
add some comment to big number