introduce discount interfaces