contract-based scheduling