implement Distinct + tests