refactor scheduler into an interface with a 'null' implementation