discount refactoring part2, now discount is a list and appliad discount a detached field