Initial cut of a spreading and generic scheduler.

Not sure what "wrap" means in this context.  Added field names.

I feel like I made the exact same comment to you on a PR and you replied "you'll get used to it" :P