factor out domainModel