current_stage is 1-based, not 0-based!  And fix up semantics (and funciton!) of started() vs completed()