Decomposes IP-related validation into another component