Replaced "new self" and "new Money" with "new static", and added option for ExchangeProvider