Improved solve function