REFACTOR charges feature
REFACTOR added interface to charge - charge is now responsible for returning charge information.
  with option of returning a charge that has not been used already.