Hrm, actually, yeah, I think all of the discovery in here would be better hidden behind an interface.  And then for the "not discoverable" case, we should just deliver a noop version of that interface.