The abstraction layer should allow for multiple servers to be specified, as well as a caching layer if requested.