Coupon Mountain - Redesign (new branch)

Fix for issue #699 - sorry for the mess with branches, as I wrote in the last pull request for this issue I switched the branch without committing the changes made on it, so it got a bit messy.

@jagtalon @moollaza @chrismorast please let me know what you think about the work so far. 

Side note: from tomorrow I will be on holidays until 21 August. I will take the laptop with me, but I don't know how often I will have access to internet.

So, if you don't see me in a while, I'm not disappeared - just away from home, and definitely coming back :)
Add comments that explain what you're trying to do with these functions.