simplify & test divide() impl more