implement more svd