sparse and low rank written but not yet debugged