I kept them as subclasses for now in order to keep the `_key`, `__hash__`, `__eq__`, `__str__`, and `__repr__` stuff for free...