One for discussion: rather than doesNotRecognizeSelector: in the abstract class, what are your thoughts on using this instead? I think it maybe gives the developer more insight into their error and how to correct it.

```objectivec
@throw [NSException exceptionWithName:NSInternalInconsistencyException
                               reason:[NSString stringWithFormat:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]
                             userInfo:nil];