scheduling functions abstraction