Fixed solver method. Needs optimisation.