added sparse matrix