supporting negative numbers