first pass on model logic with tests