domain object generation