do not use .toISOString() for error reporting as it does not preserve the UTC timezone
some formatting and making sure progress can never be bigger than 100