Extracted FileList
Fixed variable naming
Added additional new line to output
Extracted BaseApplication
Added top-level exception handling
Renamed hash to Hash
Extracted Hasher
Added auto removal of nonexisting files from cache