Ok. I think I've implemented most of the functionality. Now, to come up
with a good experiment set.
Moving code out of header files into cpp files.