handle overflow and zero dividing, add Unit Tests