refactor to single scan interface
refactor to allow pricing rules injection with discounts applied, new test for multiple discounts of the same rule