Changed double to BigDecimal to preserve precision for prices