is `type(self)` useful/required at all?