use immutable set