Implement basic promotions

Final commit before Angular.js overhaul