starting on the actual solver