detect BOM characters, instead of removing it by default
use localFileName() to replace md5 as hashed name is hard to identify
get data file headers only
add counter
cache downloaded file headers