add basic model logic and tests