add scheduler abstraction