download metadata from the server
use the updater to get metadata, but only once
handle files without a header section
build a hash without resorting to a proc
parse metadata array in one place