improve x_solver