SVD implementation, need to test everything once more for sanity and unit purposes