broke out mdns logic into its own class