I wouldn't worry too much about the hard-coding. We can clean that up later fairly easily and maybe it's something we should consider. My initial thought would be to use a service loader, but that's the not the point of this PR so I don't want to distract from what it's trying to accomplish.