updated solver