initial pass at implementing schema versioning, basic tests are passing