refactor to pass charge_id around instead of looking up the charge.