refactored ProgressFile out to its own module