rewrote domain model.