[PATCH 01/22] Base classes and modules to support provider selection algorithms