neat new structure for scheduler