added Gauss-Seidel method