Refactoring into a more object oriented pile.

Also this allows me to take advantage of lazy evaluation, and values, so
single computation can be done for any one value.

Woot!