replaced CopyOnWriteArraySet with ImmutableSet