mv opts to opt.rs, add *FILE param type, progress func callback tested ok