NSUInteger only used for length, NSInteger used otherwise as it's more common to have negative than huge number in validations