- format conversion (including creation options like compression)
- CRS conversion
- OVR conversion/generation
- cropping
- file search
- figure out your source and destination files (i don't like the auto-naming shtick but it can be preserved here). figure out the ovr states of each of each of these files
- figure out the source and destination CRS
- figure out the source and destination windows (each window should have both a "real space" rectangle and an output resolution & size)
- figure out the source and destination formats & creation options
- make a list of jobs to perform, with dependencies and (expected) output size
- sort jobs by expected size then by dependency
- perform the jobs in that order
all throughout this process we add options to both translate, warp, and common dicts, then finally the jobs call the relevant functions with the relevant arguments.