Even more generic logic. Need to add support for arp cache