Maybe it would be more readable to have a Progress class instead of a dictionary. The documentation for the attributes can be in one place, and not in the multiple functions that use dictionary. Also, some common functionality can live there. [optional]