starting to separate out scheduling in idempotent version