Implemented a composite provider and did some serious cleanup.