src/solvers.jl (mostly) solver agnostic