Improved solver