begin move to provider abstraction, begin client optimization;