Initial cut of a spreading and generic scheduler.

Seems like this should be a "while" loop.