fixed some bugs, add reducedPrice()