WIP: domain object doesn't have to be an object