ugly and divide by 0 issue