add distinctBy extension method