separate LU decomp and solve methods