use NUInteger instead of NSInteger for all possible scenarios