updated MatrixSolver