implement DistinctBy + tests