modified solver++