now the solver runs entirely in the browser