Direct solving methods