support sparse data