adding option to preserve file extensions, reworked some of the rougher edges around the arg parsing api