add model classes and tests