change the svd implementation and get much better performance