split out progress code