We already had a long discussion about that. Have a look here and here.
Not sure if you are familiar with Bonus System. Have a look here, here and just everywhere in the code.