Move more code to new currency classes

**Description** Move some more code to the new currency classes. I have refactored the currency classes a bit to solve some problems I was facing.
**Testing** Tests pass
Why covariant?