Total rewrite of the charge functionality

took another look at giveMoney and tried to model it as close as
possible.