Use [self class] rather than type name in factory method