make sure we're always working with BigDecimal, not float.