Only implements unlockable stages for now, but designed to be extensible. See comments in progress.c for detauls.