feat: add Distinct task