try to only read each file once
merge