Taking a more functional programming approach

I noticed we could significantly reduce the amount of code by taking
less of an OO approach.
Bumped version.