added more explanation for svd