Can we use `__new__` to do all of this stuff instead? Then subclasses can use `__init__` as they would expect.