foundation classes and tests
fleshing out core classed, adding tests