split out scheduler