fleeced out the base thing type a bit and wrote some missing unit tests.