improved 'progress' method