supports sparse encoding via csc