I guess the other option here is to maintain a registry of implementations. Perhaps more useful if we want multiple derivatives for one provider (such as AWS/Route53)