I agree, but I don't think they should necessarily be implemented the same way. This is tagging the *object*, not the class. It's done so that if you have this hierarchy:

`NSObject -> MySomething -> MySomething_RACSelectorSignal -> NSKVONotifying_MySomething_RACSelectorSignal`

Then the instance can easily pull out the MySomething_RACSelectorSignal class.

In the case where we've already been swizzled, i.e.:

`NSObject -> MySomething -> NSKVONotifying_MySomething`

The code currently is being defensive and just swizzling in-place. Which is fine. But it's a separate idea entirely to tagging the RAC subclass onto the instance.