working message model and passing tests