An exercise in domain modeling