Cleanup
Refactors FileSwitcher, FileProvider, and FileReferenceProvider