support for arbitrarily big numbers; support for negative numbers; add + sub for big numbers