Add promotion (issue #8)
added logic to create and update promotions