implement new scheduler