IDEAS-395 : Refactored implementation to use seperate providers and layered file systems.