-Refactored to use extensions in promotion. Now it is possible to add different promotion mechanics via extensions.