use HashSet instead of List