Ok, so I somewhat answered my own question. I guess I'd still like to see `Type` be an actual class and `DomainObject` renamed to Value.