split off the model; clean up the combinators