improvements to SVD