allow solver-level model construction before optimization